[ 
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-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-dev-h...@lucene.apache.org

Reply via email to