You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Nicolas Helleringer (JIRA)" <ji...@apache.org> on 2010/04/03 19:21:27 UTC

[jira] Issue Comment Edited: (LUCENE-2359) CartesianPolyFilterBuilder doesn't handle edge case around the 180 meridian

    [ https://issues.apache.org/jira/browse/LUCENE-2359?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12853166#action_12853166 ] 

Nicolas Helleringer edited comment on LUCENE-2359 at 4/3/10 5:21 PM:
---------------------------------------------------------------------

Re checked and you are right.

I read too fast your patch without the global code context.
With your fix the code is doing the right thing concerning the prime meridian.

So, mine should only be considered as a cosmetic one.
If you do no find that the logic is clearer with it, you can ignore it.

      was (Author: nicolas.helleringer):
    Re checked and you are right.

I read to fast your patch without the global code context.
With your fix the code is doing the right thing concerning the prime meridian.

So, mine should only be considered a cosmtic one.
If you do no find that the logic is cleared with it, you can ignore it.
  
> CartesianPolyFilterBuilder doesn't handle edge case around the 180 meridian
> ---------------------------------------------------------------------------
>
>                 Key: LUCENE-2359
>                 URL: https://issues.apache.org/jira/browse/LUCENE-2359
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: contrib/spatial
>    Affects Versions: 2.9, 2.9.1, 2.9.2, 3.0, 3.0.1
>            Reporter: Grant Ingersoll
>            Assignee: Grant Ingersoll
>            Priority: Minor
>         Attachments: LUCENE-2359.patch, LUCENE-2359.patch, LUCENE-2359.patch
>
>
> Test case:  
> Points all around the globe, plus two points at 0, 179.9 and 0,-179.9 (on each side of the meridian).  Then, do a Cartesian Tier filter on a point right near those two.  It will return all the points when it should just return those two.
> The flawed logic is in the else clause below:
> {code}
> if (longX2 != 0.0) {
> 		//We are around the prime meridian
> 		if (longX == 0.0) {
> 			longX = longX2;
> 			longY = 0.0;
>         	shape = getShapeLoop(shape,ctp,latX,longX,latY,longY);
> 		} else {//we are around the 180th longitude
> 			longX = longX2;
> 			longY = -180.0;
> 			shape = getShapeLoop(shape,ctp,latY,longY,latX,longX);
> 	}
> {code}
> Basically, the Y and X values are transposed.  This currently says go from longY (-180) all the way around  to longX which is the lower left longitude of the box formed.  Instead, it should go from the lower left long to -180.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org