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.-
Nested Class Summary
Nested classes/interfaces inherited from class org.elasticsearch.common.geo.builders.ShapeBuilder
ShapeBuilder.Edge
Nested classes/interfaces inherited from interface org.elasticsearch.common.xcontent.ToXContent
org.elasticsearch.common.xcontent.ToXContent.DelegatingMapParams, org.elasticsearch.common.xcontent.ToXContent.MapParams, org.elasticsearch.common.xcontent.ToXContent.Params
Nested classes/interfaces inherited from interface org.elasticsearch.common.io.stream.Writeable
Writeable.Reader<V>, Writeable.Writer<V>
-
Field Summary
Fields inherited from class org.elasticsearch.common.geo.builders.ShapeBuilder
AUTO_INDEX_JTS_GEOMETRY, AUTO_VALIDATE_JTS_GEOMETRY, coordinates, DATELINE, FACTORY, INTERSECTION_ORDER, LOGGER, MULTI_POLYGON_MAY_OVERLAP, SPATIAL_CONTEXT, wrapdateline, ZERO_ZERO
Fields inherited from interface org.elasticsearch.common.xcontent.ToXContent
EMPTY_PARAMS
-
Constructor Summary
ConstructorDescriptionPolygonBuilder(CoordinatesBuilder coordinates)
PolygonBuilder(CoordinatesBuilder coordinates, Orientation orientation)
PolygonBuilder(LineStringBuilder lineString, Orientation orientation)
PolygonBuilder(LineStringBuilder lineString, Orientation orientation, boolean coerce)
Read from a stream. -
Method Summary
Modifier and TypeMethodDescriptionorg.elasticsearch.geometry.Geometry
build lucene geometry.org.locationtech.spatial4j.shape.jts.JtsGeometry
buildS4J()
Create a new Shape from this builder.org.locationtech.jts.geom.Geometry
buildS4JGeometry(org.locationtech.jts.geom.GeometryFactory factory, boolean fixDateline)
close()
Close the shell of the polygonprotected StringBuilder
org.locationtech.jts.geom.Coordinate[][][]
The coordinates setup by the builder will be assembled to a polygon.protected org.elasticsearch.common.xcontent.XContentBuilder
coordinatesArray(org.elasticsearch.common.xcontent.XContentBuilder builder, org.elasticsearch.common.xcontent.ToXContent.Params params)
boolean
int
hashCode()
hole(LineStringBuilder hole)
Add a new hole to the polygonhole(LineStringBuilder hole, boolean coerce)
Add a new hole to the polygonholes()
protected static org.elasticsearch.geometry.LinearRing
linearRing(List<org.locationtech.jts.geom.Coordinate> coordinates)
protected static org.locationtech.jts.geom.LinearRing
linearRingS4J(org.locationtech.jts.geom.GeometryFactory factory, List<org.locationtech.jts.geom.Coordinate> coordinates)
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.int
tracks number of dimensions for this shapeprotected static org.locationtech.jts.geom.Polygon
polygonS4J(org.locationtech.jts.geom.GeometryFactory factory, org.locationtech.jts.geom.Coordinate[][] polygon)
shell()
org.elasticsearch.geometry.Polygon
org.locationtech.jts.geom.Polygon
protected org.locationtech.jts.geom.Polygon
toPolygonS4J(org.locationtech.jts.geom.GeometryFactory factory)
org.elasticsearch.common.xcontent.XContentBuilder
toXContent(org.elasticsearch.common.xcontent.XContentBuilder builder, org.elasticsearch.common.xcontent.ToXContent.Params params)
type()
get the shapes typeprotected void
validateHole(LineStringBuilder shell, LineStringBuilder hole)
Validates only 1 vertex is tangential (shared) between the interior and exterior of a polygonvoid
writeTo(StreamOutput out)
Write this into the StreamOutput.Methods inherited from class org.elasticsearch.common.geo.builders.ShapeBuilder
coordinate, coordinate, coordinateListToWKT, coordinates, coordinates, coordinates, coordinatesToXcontent, debugEnabled, getWriteableName, intersection, intersections, jtsGeometry, readFromStream, shift, toString, toWKT, toXContent, writeCoordinateTo
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.elasticsearch.common.xcontent.ToXContentObject
isFragment
-
Field Details
-
TYPE
-
-
Constructor Details
-
PolygonBuilder
-
PolygonBuilder
-
PolygonBuilder
-
PolygonBuilder
-
PolygonBuilder
Read from a stream.- Throws:
IOException
-
-
Method Details
-
writeTo
Description copied from interface:Writeable
Write this into the StreamOutput.- Specified by:
writeTo
in interfaceWriteable
- Overrides:
writeTo
in classShapeBuilder<org.locationtech.spatial4j.shape.jts.JtsGeometry,org.elasticsearch.geometry.Geometry,PolygonBuilder>
- Throws:
IOException
-
orientation
-
hole
Add a new hole to the polygon- Parameters:
hole
- linear ring defining the hole- Returns:
- this
-
hole
Add a new hole to the polygon- Parameters:
hole
- linear ring defining the holecoerce
- if set to true, it will try to close the hole by adding starting point as end point- Returns:
- this
-
holes
- Returns:
- the list of holes defined for this polygon
-
shell
- Returns:
- the list of points of the shell for this polygon
-
close
Close the shell of the polygon -
validateHole
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 classShapeBuilder<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 classShapeBuilder<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
Description copied from class:ShapeBuilder
get the shapes type- Specified by:
type
in classShapeBuilder<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 classShapeBuilder<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 usepolygons
- definition of polygons- Returns:
- a new Multipolygon
-
contentToWKT
- Overrides:
contentToWKT
in classShapeBuilder<org.locationtech.spatial4j.shape.jts.JtsGeometry,org.elasticsearch.geometry.Geometry,PolygonBuilder>
-
hashCode
public int hashCode()- Overrides:
hashCode
in classShapeBuilder<org.locationtech.spatial4j.shape.jts.JtsGeometry,org.elasticsearch.geometry.Geometry,PolygonBuilder>
-
equals
- Overrides:
equals
in classShapeBuilder<org.locationtech.spatial4j.shape.jts.JtsGeometry,org.elasticsearch.geometry.Geometry,PolygonBuilder>
-