Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
2.9, 2.9.1, 2.9.2, 3.0, 3.0.1
-
None
-
New
Description
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.
Attachments
Attachments
Issue Links
- blocks
-
LUCENE-2350 Refactor/Cleanup Lucene Spatial
- Resolved
- is depended upon by
-
LUCENE-2475 Incorrect Bounding Box calculation results in the exclusion of valid data locations
- Resolved