Details
-
Bug
-
Status: Reopened
-
Major
-
Resolution: Fixed
-
None
-
None
-
New
Description
I hit a failure when trying to build a GeoArea using the GeoAreaFactory. The issue seems to happen when you have an almost degenerated minLatitude and maxLatitude and you are close to the poles. Then you might hit the following exception"
java.lang.IllegalArgumentException: Cannot determine sidedness because check point is on plane. at __randomizedtesting.SeedInfo.seed([EA56BB13E754A996:C7560EE2BA56A507]:0) at org.apache.lucene.spatial3d.geom.SidedPlane.<init>(SidedPlane.java:137) at org.apache.lucene.spatial3d.geom.GeoDegenerateVerticalLine.<init>(GeoDegenerateVerticalLine.java:110) at org.apache.lucene.spatial3d.geom.GeoBBoxFactory.makeGeoBBox(GeoBBoxFactory.java:100) at org.apache.lucene.spatial3d.geom.GeoAreaFactory.makeGeoArea(GeoAreaFactory.java:43)
The situation is easy to reproduce with the following test:
public void testBBoxRandomDegenerate() { double minX = Geo3DUtil.fromDegrees(GeoTestUtil.nextLongitude());; double maxX = Math.nextUp(minX + Vector.MINIMUM_ANGULAR_RESOLUTION); double minY = Geo3DUtil.fromDegrees(GeoTestUtil.nextLatitude()); double maxY = Math.nextUp(minY + Vector.MINIMUM_ANGULAR_RESOLUTION); assertNotNull(GeoAreaFactory.makeGeoArea(PlanetModel.SPHERE, maxY, minY, minX, maxX)); }