[mapserver-dev] Re: WFS GetFeature Performance - BBOX vs. Filter

Yewondwossen ASSEFA yassefa at dmsolutions.ca
Mon Oct 17 08:56:49 EDT 2011

Hi Brad,

  Couple of notes on this.
  The ogc filter sent with the wfs request is parsed and the result is 
used to set the filter element on the layer object. This was done as 
part of RFC-64 [1]. Once the filter element is set, each driver can then 
interpret and produce driver specific queries. Right now none of the db 
drivers (postgis. oracle, sde ...) do that. It is been on a todo list 
since the RFC was implemented. MapServer 6.2 might include this feature 
for the postgis driver. So, this clean way of solving all issues related 
to ogc fiIter and drivers would be to do the implementation at driver level.
For your particular case, if the filter encoding is "simple" (simple in 
this case means one bbox, (one spatial expression), that limits the 
whole query), you can certainly set the query rectangle to this bbox.  
You can enter a bug and patch on it and assign it to me (assefa) and I 
will comment/review/apply it.

best regards,

Y. Assefa

On 11-10-14 02:49 PM, Brad Posthumus wrote:
> This might be bug in the MapServer itself, or at least an unfinished
> function. In our case, when using a filter the code passes through the
> FLTApplyFilterToLayerCommonExpression function in mapogcfiltercommon.c. In
> this function are these peculiar lines:
>      /*TODO: if there is a bbox in the node, get it and set the map extent*/
>      map->query.rect = map->extent;
> This tells us the query rectangle (used to select which features will be
> queried against) is actually the entire map extent. So all one million
> features are being selected from the dataset and looped through to determine
> if each one falls within the filter's selection polygon. Hence the
> performance hit.
> I shoe-horned in a clunky patch locally by extracting the bounding box from
> the filter expression and using that to set map->query.rect (probably what
> the TODO statement is alluding to), and the time to query out a couple of
> features from a million+ features in SDE went from 2+ minutes to 7 seconds.
> I could be off the mark in my logic though, so it might be worth raising a
> bug so a seasoned MapServer veteran can take a closer look.
> EDIT: I should mention my "fix" could break other types of queries, which is
> why I included the seasoned veteran remark.
> (OK, now I'm *really* on the dev mailing list...)
> --
> View this message in context: http://osgeo-org.1803224.n2.nabble.com/WFS-GetFeature-Performance-BBOX-vs-Filter-tp6890106p6893644.html
> Sent from the Mapserver - Dev mailing list archive at Nabble.com.
> _______________________________________________
> mapserver-dev mailing list
> mapserver-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-dev

Assefa Yewondwossen
Software Analyst

Email: assefa at dmsolutions.ca

Phone: (613) 565-5056 (ext 14)
Fax:   (613) 565-0925

More information about the mapserver-dev mailing list