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
