Class PolygonBuilder

java.lang.Object
org.elasticsearch.common.geo.builders.ShapeBuilder<org.locationtech.spatial4j.shape.jts.JtsGeometry,org.elasticsearch.geometry.Geometry,PolygonBuilder>
org.elasticsearch.common.geo.builders.PolygonBuilder
All Implemented Interfaces:
NamedWriteable, Writeable, org.elasticsearch.common.xcontent.ToXContent, org.elasticsearch.common.xcontent.ToXContentObject

public class PolygonBuilder extends ShapeBuilder<org.locationtech.spatial4j.shape.jts.JtsGeometry,org.elasticsearch.geometry.Geometry,PolygonBuilder>
The PolygonBuilder implements the groundwork to create polygons. This contains Methods to wrap polygons at the dateline and building shapes from the data held by the builder.
  • Field Details

  • Constructor Details

  • Method Details

    • writeTo

      public void writeTo(StreamOutput out) throws IOException
      Description copied from interface: Writeable
      Write this into the StreamOutput.
      Specified by:
      writeTo in interface Writeable
      Overrides:
      writeTo in class ShapeBuilder<org.locationtech.spatial4j.shape.jts.JtsGeometry,org.elasticsearch.geometry.Geometry,PolygonBuilder>
      Throws:
      IOException
    • orientation

      public Orientation orientation()
    • hole

      public PolygonBuilder hole(LineStringBuilder hole)
      Add a new hole to the polygon
      Parameters:
      hole - linear ring defining the hole
      Returns:
      this
    • hole

      public PolygonBuilder hole(LineStringBuilder hole, boolean coerce)
      Add a new hole to the polygon
      Parameters:
      hole - linear ring defining the hole
      coerce - if set to true, it will try to close the hole by adding starting point as end point
      Returns:
      this
    • holes

      public List<LineStringBuilder> holes()
      Returns:
      the list of holes defined for this polygon
    • shell

      public LineStringBuilder shell()
      Returns:
      the list of points of the shell for this polygon
    • close

      public PolygonBuilder close()
      Close the shell of the polygon
    • validateHole

      protected void validateHole(LineStringBuilder shell, LineStringBuilder hole)
      Validates only 1 vertex is tangential (shared) between the interior and exterior of a polygon
    • coordinates

      public org.locationtech.jts.geom.Coordinate[][][] coordinates()
      The coordinates setup by the builder will be assembled to a polygon. The result will consist of a set of polygons. Each of these components holds a list of linestrings defining the polygon: the first set of coordinates will be used as the shell of the polygon. The others are defined to holes within the polygon. This Method also wraps the polygons at the dateline. In order to this fact the result may contains more polygons and less holes than defined in the builder it self.
      Returns:
      coordinates of the polygon
    • buildS4J

      public org.locationtech.spatial4j.shape.jts.JtsGeometry buildS4J()
      Description copied from class: ShapeBuilder
      Create a new Shape from this builder. Since calling this method could change the defined shape. (by inserting new coordinates or change the position of points) the builder looses its validity. So this method should only be called once on a builder
      Specified by:
      buildS4J in class ShapeBuilder<org.locationtech.spatial4j.shape.jts.JtsGeometry,org.elasticsearch.geometry.Geometry,PolygonBuilder>
      Returns:
      new Shape defined by the builder
    • buildGeometry

      public org.elasticsearch.geometry.Geometry buildGeometry()
      Description copied from class: ShapeBuilder
      build lucene geometry.
      Specified by:
      buildGeometry in class ShapeBuilder<org.locationtech.spatial4j.shape.jts.JtsGeometry,org.elasticsearch.geometry.Geometry,PolygonBuilder>
      Returns:
      GeoPoint, double[][], Line, Line[], Polygon, Polygon[], Rectangle, Object[]
    • coordinatesArray

      protected org.elasticsearch.common.xcontent.XContentBuilder coordinatesArray(org.elasticsearch.common.xcontent.XContentBuilder builder, org.elasticsearch.common.xcontent.ToXContent.Params params) throws IOException
      Throws:
      IOException
    • toXContent

      public org.elasticsearch.common.xcontent.XContentBuilder toXContent(org.elasticsearch.common.xcontent.XContentBuilder builder, org.elasticsearch.common.xcontent.ToXContent.Params params) throws IOException
      Throws:
      IOException
    • buildS4JGeometry

      public org.locationtech.jts.geom.Geometry buildS4JGeometry(org.locationtech.jts.geom.GeometryFactory factory, boolean fixDateline)
    • toPolygonS4J

      public org.locationtech.jts.geom.Polygon toPolygonS4J()
    • toPolygonS4J

      protected org.locationtech.jts.geom.Polygon toPolygonS4J(org.locationtech.jts.geom.GeometryFactory factory)
    • toPolygonGeometry

      public org.elasticsearch.geometry.Polygon toPolygonGeometry()
    • linearRing

      protected static org.elasticsearch.geometry.LinearRing linearRing(List<org.locationtech.jts.geom.Coordinate> coordinates)
    • linearRingS4J

      protected static org.locationtech.jts.geom.LinearRing linearRingS4J(org.locationtech.jts.geom.GeometryFactory factory, List<org.locationtech.jts.geom.Coordinate> coordinates)
    • type

      public GeoShapeType type()
      Description copied from class: ShapeBuilder
      get the shapes type
      Specified by:
      type in class ShapeBuilder<org.locationtech.spatial4j.shape.jts.JtsGeometry,org.elasticsearch.geometry.Geometry,PolygonBuilder>
      Returns:
      type of the shape
    • numDimensions

      public int numDimensions()
      Description copied from class: ShapeBuilder
      tracks number of dimensions for this shape
      Specified by:
      numDimensions in class ShapeBuilder<org.locationtech.spatial4j.shape.jts.JtsGeometry,org.elasticsearch.geometry.Geometry,PolygonBuilder>
    • polygonS4J

      protected static org.locationtech.jts.geom.Polygon polygonS4J(org.locationtech.jts.geom.GeometryFactory factory, org.locationtech.jts.geom.Coordinate[][] polygon)
    • multipolygonS4J

      protected static org.locationtech.jts.geom.MultiPolygon multipolygonS4J(org.locationtech.jts.geom.GeometryFactory factory, org.locationtech.jts.geom.Coordinate[][][] polygons)
      Create a Multipolygon from a set of coordinates. Each primary array contains a polygon which in turn contains an array of linestrings. These line Strings are represented as an array of coordinates. The first linestring will be the shell of the polygon the others define holes within the polygon.
      Parameters:
      factory - GeometryFactory to use
      polygons - definition of polygons
      Returns:
      a new Multipolygon
    • contentToWKT

      protected StringBuilder contentToWKT()
      Overrides:
      contentToWKT in class ShapeBuilder<org.locationtech.spatial4j.shape.jts.JtsGeometry,org.elasticsearch.geometry.Geometry,PolygonBuilder>
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class ShapeBuilder<org.locationtech.spatial4j.shape.jts.JtsGeometry,org.elasticsearch.geometry.Geometry,PolygonBuilder>
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class ShapeBuilder<org.locationtech.spatial4j.shape.jts.JtsGeometry,org.elasticsearch.geometry.Geometry,PolygonBuilder>