lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Grant Ingersoll (JIRA)" <>
Subject [jira] Created: (LUCENE-2359) CartesianPolyFilterBuilder doesn't handle edge case around the 180 meridian
Date Wed, 31 Mar 2010 20:21:27 GMT
CartesianPolyFilterBuilder doesn't handle edge case around the 180 meridian

                 Key: LUCENE-2359
             Project: Lucene - Java
          Issue Type: Bug
          Components: contrib/spatial
    Affects Versions: 3.0.1, 3.0, 2.9.2, 2.9.1, 2.9
            Reporter: Grant Ingersoll
            Assignee: Grant Ingersoll
            Priority: Minor

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:
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);

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:
For additional commands, e-mail:

View raw message