Karl: this broke precommit due to broken documentation links
: Date: Wed, 31 May 2017 11:56:30 -0000 : From: [email protected] : Reply-To: [email protected] : To: [email protected] : Subject: [1/2] lucene-solr:master: LUCENE-7853: Add methods for people to use : who know their polygon's characteristics : : Repository: lucene-solr : Updated Branches: : refs/heads/master c824b097b -> 97693234d : : : LUCENE-7853: Add methods for people to use who know their polygon's characteristics : : : Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo : Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/71411df0 : Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/71411df0 : Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/71411df0 : : Branch: refs/heads/master : Commit: 71411df0cfec385fbd0fcd0f0291c6a06c05a428 : Parents: fed7343 : Author: Karl Wright <[email protected]> : Authored: Wed May 31 07:55:53 2017 -0400 : Committer: Karl Wright <[email protected]> : Committed: Wed May 31 07:55:53 2017 -0400 : : ---------------------------------------------------------------------- : .../spatial3d/geom/GeoPolygonFactory.java | 63 ++++++++++++++++++++ : .../lucene/spatial3d/geom/GeoPolygonTest.java | 63 ++++++++++++++++++++ : 2 files changed, 126 insertions(+) : ---------------------------------------------------------------------- : : : http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/71411df0/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/GeoPolygonFactory.java : ---------------------------------------------------------------------- : diff --git a/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/GeoPolygonFactory.java b/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/GeoPolygonFactory.java : index 97bc230..4c1850e 100755 : --- a/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/GeoPolygonFactory.java : +++ b/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/GeoPolygonFactory.java : @@ -49,6 +49,34 @@ public class GeoPolygonFactory { : return makeGeoPolygon(planetModel, pointList, null); : } : : + /** Create a GeoConcavePolygon using the specified points. The polygon must have : + * a maximum extent larger than PI. The siding of the polygon is chosen so that any : + * adjacent point to a segment provides an exterior measurement and therefore, : + * the polygon is a truly concave polygon. Note that this method should only be used when there is certainty : + * that we are dealing with a concave polygon, e.g. the polygon has been serialized. : + * If there is not such certainty, please refer to @{@link GeoPolygonFactory#makeGeoPolygon(PlanetModel, List)}. : + * @param pointList is a list of the GeoPoints to build an arbitrary polygon out of. : + * @return a GeoConcavePolygon corresponding to what was specified. : + */ : + public static GeoConcavePolygon makeGeoConcavePolygon(final PlanetModel planetModel, : + final List<GeoPoint> pointList) { : + return new GeoConcavePolygon(planetModel, pointList); : + } : + : + /** Create a GeoConvexPolygon using the specified points. The polygon must have : + * a maximum extent no larger than PI. The siding of the polygon is chosen so that any adjacent : + * point to a segment provides an interior measurement and therefore : + * the polygon is a truly convex polygon. Note that this method should only be used when : + * there is certainty that we are dealing with a convex polygon, e.g. the polygon has been serialized. : + * If there is not such certainty, please refer to @{@link GeoPolygonFactory#makeGeoPolygon(PlanetModel, List)}. : + * @param pointList is a list of the GeoPoints to build an arbitrary polygon out of. : + * @return a GeoConvexPolygon corresponding to what was specified. : + */ : + public static GeoConvexPolygon makeGeoConvexPolygon(final PlanetModel planetModel, : + final List<GeoPoint> pointList) { : + return new GeoConvexPolygon(planetModel, pointList); : + } : + : /** Create a GeoPolygon using the specified points and holes, using order to determine : * siding of the polygon. Much like ESRI, this method uses clockwise to indicate the space : * on the same side of the shape as being inside, and counter-clockwise to indicate the : @@ -66,6 +94,41 @@ public class GeoPolygonFactory { : final List<GeoPolygon> holes) { : return makeGeoPolygon(planetModel, pointList, holes, 0.0); : } : + : + : + /** Create a GeoConcavePolygon using the specified points and holes. The polygon must have : + * a maximum extent larger than PI. The siding of the polygon is chosen so that any adjacent : + * point to a segment provides an exterior measurement and therefore : + * the polygon is a truly concave polygon. Note that this method should only be used when : + * there is certainty that we are dealing with a concave polygon, e.g. the polygon has been serialized. : + * If there is not such certainty, please refer to {@link GeoPolygonFactory#makeGeoPolygon(PlanetModel, List, List)}. : + * @param pointList is a list of the GeoPoints to build an arbitrary polygon out of. : + * @param holes is a list of polygons representing "holes" in the outside polygon. Holes describe the area outside : + * each hole as being "in set". Null == none. : + * @return a GeoConcavePolygon corresponding to what was specified. : + */ : + public static GeoConcavePolygon makeGeoConcavePolygon(final PlanetModel planetModel, : + final List<GeoPoint> pointList, : + final List<GeoPolygon> holes) { : + return new GeoConcavePolygon(planetModel,pointList, holes); : + } : + : + /** Create a GeoConvexPolygon using the specified points and holes. The polygon must have : + * a maximum extent no larger than PI. The siding of the polygon is chosen so that any adjacent : + * point to a segment provides an interior measurement and therefore : + * the polygon is a truly convex polygon. Note that this method should only be used when : + * there is certainty that we are dealing with a convex polygon, e.g. the polygon has been serialized. : + * If there is not such certainty, please refer to {@link GeoPolygonFactory#makeGeoPolygon(PlanetModel, List, List)}. : + * @param pointList is a list of the GeoPoints to build an arbitrary polygon out of. : + * @param holes is a list of polygons representing "holes" in the outside polygon. Holes describe the area outside : + * each hole as being "in set". Null == none. : + * @return a GeoConvexPolygon corresponding to what was specified. : + */ : + public static GeoConvexPolygon makeGeoConvexPolygon(final PlanetModel planetModel, : + final List<GeoPoint> pointList, : + final List<GeoPolygon> holes) { : + return new GeoConvexPolygon(planetModel,pointList, holes); : + } : : /** Create a GeoPolygon using the specified points and holes, using order to determine : * siding of the polygon. Much like ESRI, this method uses clockwise to indicate the space : : http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/71411df0/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/geom/GeoPolygonTest.java : ---------------------------------------------------------------------- : diff --git a/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/geom/GeoPolygonTest.java b/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/geom/GeoPolygonTest.java : index 8527e99..f3ac52b 100755 : --- a/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/geom/GeoPolygonTest.java : +++ b/lucene/spatial3d/src/test/org/apache/lucene/spatial3d/geom/GeoPolygonTest.java : @@ -19,6 +19,7 @@ package org.apache.lucene.spatial3d.geom; : import java.util.ArrayList; : import java.util.List; : import java.util.BitSet; : +import java.util.Collections; : : import org.junit.Test; : import static org.junit.Assert.assertEquals; : @@ -966,5 +967,67 @@ shape: : : assertTrue(solid.isWithin(point)); : } : + : + @Test : + public void testConcavePolygon() { : + ArrayList<GeoPoint> points = new ArrayList<>(); : + points.add(new GeoPoint(PlanetModel.SPHERE, -0.1, -0.5)); : + points.add(new GeoPoint(PlanetModel.SPHERE, 0.0, -0.6)); : + points.add(new GeoPoint(PlanetModel.SPHERE, 0.1, -0.5)); : + points.add(new GeoPoint(PlanetModel.SPHERE, 0.0, -0.4)); : + GeoPolygon polygon = (GeoPolygon)((GeoCompositePolygon)GeoPolygonFactory.makeGeoPolygon(PlanetModel.SPHERE, points)).shapes.get(0); : + GeoPolygon polygonConcave = GeoPolygonFactory.makeGeoConcavePolygon(PlanetModel.SPHERE,points); : + assertEquals(polygon,polygonConcave); : + } : + : + @Test : + public void testConcavePolygonWithHole() { : + ArrayList<GeoPoint> points = new ArrayList<>(); : + points.add(new GeoPoint(PlanetModel.SPHERE, -1.1, -1.5)); : + points.add(new GeoPoint(PlanetModel.SPHERE, 1.0, -1.6)); : + points.add(new GeoPoint(PlanetModel.SPHERE, 1.1, -1.5)); : + points.add(new GeoPoint(PlanetModel.SPHERE, 1.0, -1.4)); : + ArrayList<GeoPoint> hole_points = new ArrayList<>(); : + hole_points.add(new GeoPoint(PlanetModel.SPHERE, -0.1, -0.5)); : + hole_points.add(new GeoPoint(PlanetModel.SPHERE, 0.0, -0.6)); : + hole_points.add(new GeoPoint(PlanetModel.SPHERE, 0.1, -0.5)); : + hole_points.add(new GeoPoint(PlanetModel.SPHERE, 0.0, -0.4)); : + GeoPolygon hole = GeoPolygonFactory.makeGeoPolygon(PlanetModel.SPHERE,hole_points); : + : + GeoPolygon polygon = (GeoPolygon)((GeoCompositePolygon)GeoPolygonFactory.makeGeoPolygon(PlanetModel.SPHERE, points,Collections.singletonList(hole))).shapes.get(0); : + GeoPolygon polygon2 = GeoPolygonFactory.makeGeoConcavePolygon(PlanetModel.SPHERE,points,Collections.singletonList(hole)); : + assertEquals(polygon,polygon2); : + } : + : + @Test : + public void testConvexPolygon() { : + ArrayList<GeoPoint> points = new ArrayList<>(); : + points.add(new GeoPoint(PlanetModel.SPHERE, 0, 0)); : + points.add(new GeoPoint(PlanetModel.SPHERE, 0.0, 0.5)); : + points.add(new GeoPoint(PlanetModel.SPHERE, 0.5, 0.5)); : + points.add(new GeoPoint(PlanetModel.SPHERE, 0.5, 0)); : + GeoPolygon polygon = (GeoPolygon)((GeoCompositePolygon)GeoPolygonFactory.makeGeoPolygon(PlanetModel.SPHERE, points)).shapes.get(0); : + GeoPolygon polygon2 = GeoPolygonFactory.makeGeoConvexPolygon(PlanetModel.SPHERE,points); : + assertEquals(polygon,polygon2); : + } : + : + @Test : + public void testConvexPolygonWithHole() { : + ArrayList<GeoPoint> points = new ArrayList<>(); : + points.add(new GeoPoint(PlanetModel.SPHERE, -1, -1)); : + points.add(new GeoPoint(PlanetModel.SPHERE, -1, 1)); : + points.add(new GeoPoint(PlanetModel.SPHERE, 1, 1)); : + points.add(new GeoPoint(PlanetModel.SPHERE, 1, -1)); : + ArrayList<GeoPoint> hole_points = new ArrayList<>(); : + hole_points.add(new GeoPoint(PlanetModel.SPHERE, -0.1, -0.5)); : + hole_points.add(new GeoPoint(PlanetModel.SPHERE, 0.0, -0.6)); : + hole_points.add(new GeoPoint(PlanetModel.SPHERE, 0.1, -0.5)); : + hole_points.add(new GeoPoint(PlanetModel.SPHERE, 0.0, -0.4)); : + GeoPolygon hole = GeoPolygonFactory.makeGeoPolygon(PlanetModel.SPHERE,hole_points); : + : + GeoPolygon polygon = (GeoPolygon)((GeoCompositePolygon)GeoPolygonFactory.makeGeoPolygon(PlanetModel.SPHERE, points,Collections.singletonList(hole))).shapes.get(0); : + GeoPolygon polygon2 = GeoPolygonFactory.makeGeoConvexPolygon(PlanetModel.SPHERE,points,Collections.singletonList(hole)); : + assertEquals(polygon,polygon2); : + } : : } : : -Hoss http://www.lucidworks.com/ --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
