Question about querybypoint

Frederico Lucca fredlucca at GMAIL.COM
Thu May 18 19:25:07 EDT 2006


Steve,

Thank you for the explanation.
I speed up my queries removing from the layer the features without
information and using MS_SINGLE, because I just need the closest feature.
Another question if you have time.
querybypoint is faster than querybyrect?

Thanks again,

Fred


On 5/18/06, Steve Lime <Steve.Lime at dnr.state.mn.us> wrote:
>
> Layer tolerances are used to set a spatial filter that is used to identify
> target
> features. Those features are then processed to make sure they meet the
> target criterea. For example, if you query a layer with a tolerance of 100
> meters
> then MapServer constructs a bbox 200 meters on a side centered on the
> query point and uses that to find candidate features.
>
> There is no predictable relationship between tolerance and query speed
> although
> in practice smaller tolerances should produce faster queries since there
> are likely
> to be less candidate features to process.
>
> MS_SINGLE will find the closest feature in a point query situation
> (potentially
> across multiple layers). MS_MULTIPLE will find all features that meet the
> tolerance
> settings. MS_SINGLE can be much faster in certain situations, especially
> when
> querying a polygon layer since being inside the polygon gives you a
> distance
> of 0 and stops the query process. When querying points and lines where a
> perfect 0 distance is unlikely you end up having to process all candidate
> features
> to make sure you identify the closest one.
>
> Querybyrect is faster than querybyshape.
>
> Steve
>
> >>> Frederico Lucca <fredlucca at GMAIL.COM> 5/18/2006 8:40:05 AM >>>
> Hello list,
>
> I'm querying a layer by point, using tolerance in meters because I need to
> find some street in a point using Decimal Degrees and a range in meters.
>
> Something like:
>
>        layer.setSizeunits(mapscript.MS_METERS);
>        layer.setToleranceunits(mapscript.MS_METERS);
>        layer.setTolerance(radius);
>
>        layer.queryByPoint(map, point, mapscript.MS_SINGLE, -1)
>
> Comparing two radius, 100 and 50 meters, I think 50 is twice faster than
> 100, is this true?
>
> What's the difference between MS_SINGLE and MS_MULTIPLE.
> MS_SINGLE find one, and only one feature??? MS_SINGLE is much faster than
> MS_MULTIPLE?
> Supousing that I need to return the nearest street name and some streets
> don't have name, is better to querybypoint with 50 meters and if the
> street
> don't have a name find again, with 100 meters? Or find MS_MULTIPLE with
> 100
> meters?
> querybyrect or querybyshape are faster?
>
> I need the fastest result because i need to query in 10 layers very
> quickly.
>
> Thanks in advance.
>
> Fred
>
> --
> "Everything under the sun is in tune
> But the sun is eclipsed by the moon"
>



-- 
"Everything under the sun is in tune
But the sun is eclipsed by the moon"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-users/attachments/20060518/6c4756f9/attachment.html


More information about the mapserver-users mailing list