Andrea Aime ha scritto:
> (d) is about skipping the bbox filter evaluation in memory,
> and in particular, skipping the bbox full intersection behaviour
> mandated by the OGC (an bbox in OGC terms is just a shorthand
> syntax for instersect, but for rendering a bbox vs bbox comparison
> is more than enough).
> Since we're accessing the spatial index, we can skip the
> bbox completely. IndexedDataStore is not doing that, and
> it's performing those expensive intersections for all
> features whose bbox is not fully contained in the rendering area.
> This can be skinned in a number of ways:
> - have streaming renderer build a subclass of bbox that
>   only does the loose evaluation when used in memory
> - have a gt2 wide bbox subclass that does the same, allowing
>   everyone to recognize it. Downside, how do we build it
>   given the FilterFactory is defined at the GeoApi level?
> - pass down a query hint that all bboxes should be evaluated
>   in a loose way. Nice, too bad it might interfere with
>   some bbox in the SLD itself that people wanted to be
>   evaluated the hard way (think dynamic SLD used to show
>   selection in WMS)

For the record, the first option does not work as the filters
are copied a number of times by visitors that perform modifications
on the filters, in particular, by the simplifier that tries
to remove excess include/exclude filters and remove invalid
fids from the lists, and by one visitor we have in GeoServer
that applies a default CRS (the one of the feature type being
filtered) to all geometries that do not have one.
This leaves the other two options: GeoAPI starts to notice
what a loose filter is, or we just inconditionally tell
the datastores to evaluate every bbox filter in a loose way.
For the second, any pre-existing bbox filter in the sld might
be turned into the explicit intersects filter, leaving only
the one bbox filter we want to evaluate loosely in the filter
tree.
The second option seems hacky, yet I'm not very hopeful about
making changes to GeoAPI. The change required would be to
either add a boolean flag to BBOX or add a marker interface,
and change FilterFactory to allow the generation of a loose one.

Cheers
Andrea


-- 
Andrea Aime
OpenGeo - http://opengeo.org
Expert service straight from the developers.

------------------------------------------------------------------------------
_______________________________________________
Geotools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to