Looks good; can you create a JIRA with your nice picture, and then apply
your patch. It would also be really good if you can create a test case
showing your F / A / B problem and the fact that your patch fixes it.
Jody
> Hi list,
>
> I have been spending all day to figure out where a bug in my feature
> cache is coming from.
> The bug is the cache does not return a small number of features that a
> reference FeatureSource does return (I am using MemoryDataStore as a
> reference). What the cache does is it enlarges a query to match the
> tiles of a grid.
>
> I think I found the cause of this unexpected behaviour in class BBOXImpl :
>
> public boolean evaluate(Object feature) {
>
> if (feature instanceof Feature && !validate((Feature)feature))
> return false;
>
> Geometry left = getLeftGeometry(feature);
> Geometry right = getRightGeometry(feature);
>
> Envelope envLeft = left.getEnvelopeInternal();
> Envelope envRight = right.getEnvelopeInternal();
>
> if(envRight.contains(envLeft) || envLeft.contains(envRight)) {
> return true;
> } else if(envRight.intersects(envLeft)) {
>
> return left.intersects(right); // this is where things
> may go wrong
>
> } else {
> return false;
> }
> }
>
> You can find cases where a bbox A containing another bbox B will
> evaluate to false a feature that bbox B evaluate to true.
>
> I enclose a drawing showing such a case.
>
> As bbox don't have to be real precise, we don't care about the actule
> intersection of geometries, and the following patch should work fine :
>
> if (feature instanceof Feature && !validate((Feature)feature))
> return false;
>
> Geometry left = getLeftGeometry(feature);
> Geometry right = getRightGeometry(feature);
>
> Envelope envLeft = left.getEnvelopeInternal();
> Envelope envRight = right.getEnvelopeInternal();
>
> if(envRight.contains(envLeft) || envLeft.contains(envRight)) {
> return true;
> } else {
> return envRight.intersects(envLeft); // changed here
> //
> may be we can keep this only test ??
> }
> }
>
>
> ------------------------------------------------------------------------
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems? Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >> http://get.splunk.com/
> ------------------------------------------------------------------------
>
> _______________________________________________
> Geotools-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/geotools-devel
>
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Geotools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel