Package org.locationtech.jts.geom
Class GeometryFactory
- java.lang.Object
-
- org.locationtech.jts.geom.GeometryFactory
-
- All Implemented Interfaces:
java.io.Serializable
public class GeometryFactory extends java.lang.Object implements java.io.Serializable
Supplies a set of utility methods for building Geometry objects from lists of Coordinates.Note that the factory constructor methods do not change the input coordinates in any way. In particular, they are not rounded to the supplied PrecisionModel. It is assumed that input Coordinates meet the given precision.
Instances of this class are thread-safe.
- Version:
- 1.7
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description GeometryFactory()
Constructs a GeometryFactory that generates Geometries having a floating PrecisionModel and a spatial-reference ID of 0.GeometryFactory(CoordinateSequenceFactory coordinateSequenceFactory)
Constructs a GeometryFactory that generates Geometries having the given CoordinateSequence implementation, a double-precision floating PrecisionModel and a spatial-reference ID of 0.GeometryFactory(PrecisionModel precisionModel)
Constructs a GeometryFactory that generates Geometries having the givenPrecisionModel
and the default CoordinateSequence implementation.GeometryFactory(PrecisionModel precisionModel, int SRID)
Constructs a GeometryFactory that generates Geometries having the givenPrecisionModel
and spatial-reference ID, and the default CoordinateSequence implementation.GeometryFactory(PrecisionModel precisionModel, int SRID, CoordinateSequenceFactory coordinateSequenceFactory)
Constructs a GeometryFactory that generates Geometries having the given PrecisionModel, spatial-reference ID, and CoordinateSequence implementation.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description Geometry
buildGeometry(java.util.Collection geomList)
Build an appropriateGeometry
,MultiGeometry
, orGeometryCollection
to contain theGeometry
s in it.Geometry
createEmpty(int dimension)
Creates an empty atomic geometry of the given dimension.Geometry
createGeometry(Geometry g)
Creates a deep copy of the inputGeometry
.GeometryCollection
createGeometryCollection()
Constructs an emptyGeometryCollection
geometry.GeometryCollection
createGeometryCollection(Geometry[] geometries)
Creates a GeometryCollection using the given Geometries; a null or empty array will create an empty GeometryCollection.LinearRing
createLinearRing()
Constructs an emptyLinearRing
geometry.LinearRing
createLinearRing(Coordinate[] coordinates)
Creates aLinearRing
using the givenCoordinate
s.LinearRing
createLinearRing(CoordinateSequence coordinates)
Creates aLinearRing
using the givenCoordinateSequence
.LineString
createLineString()
Constructs an emptyLineString
geometry.LineString
createLineString(Coordinate[] coordinates)
Creates a LineString using the given Coordinates.LineString
createLineString(CoordinateSequence coordinates)
Creates a LineString using the given CoordinateSequence.MultiLineString
createMultiLineString()
Constructs an emptyMultiLineString
geometry.MultiLineString
createMultiLineString(LineString[] lineStrings)
Creates a MultiLineString using the given LineStrings; a null or empty array will create an empty MultiLineString.MultiPoint
createMultiPoint()
Constructs an emptyMultiPoint
geometry.MultiPoint
createMultiPoint(Coordinate[] coordinates)
Deprecated.MultiPoint
createMultiPoint(CoordinateSequence coordinates)
Creates aMultiPoint
using the points in the givenCoordinateSequence
.MultiPoint
createMultiPoint(Point[] point)
Creates aMultiPoint
using the givenPoint
s.MultiPoint
createMultiPointFromCoords(Coordinate[] coordinates)
Creates aMultiPoint
using the givenCoordinate
s.MultiPolygon
createMultiPolygon()
Constructs an emptyMultiPolygon
geometry.MultiPolygon
createMultiPolygon(Polygon[] polygons)
Creates a MultiPolygon using the given Polygons; a null or empty array will create an empty Polygon.Point
createPoint()
Constructs an emptyPoint
geometry.Point
createPoint(Coordinate coordinate)
Creates a Point using the given Coordinate.Point
createPoint(CoordinateSequence coordinates)
Creates a Point using the given CoordinateSequence; a null or empty CoordinateSequence will create an empty Point.static Point
createPointFromInternalCoord(Coordinate coord, Geometry exemplar)
Polygon
createPolygon()
Constructs an emptyPolygon
geometry.Polygon
createPolygon(Coordinate[] shell)
Constructs aPolygon
with the given exterior boundary.Polygon
createPolygon(CoordinateSequence shell)
Constructs aPolygon
with the given exterior boundary.Polygon
createPolygon(LinearRing shell)
Constructs aPolygon
with the given exterior boundary.Polygon
createPolygon(LinearRing shell, LinearRing[] holes)
Constructs aPolygon
with the given exterior boundary and interior boundaries.CoordinateSequenceFactory
getCoordinateSequenceFactory()
PrecisionModel
getPrecisionModel()
Returns the PrecisionModel that Geometries created by this factory will be associated with.int
getSRID()
Gets the SRID value defined for this factory.Geometry
toGeometry(Envelope envelope)
Creates aGeometry
with the same extent as the given envelope.static Geometry[]
toGeometryArray(java.util.Collection geometries)
Converts theList
to an array.static LinearRing[]
toLinearRingArray(java.util.Collection linearRings)
Converts theList
to an array.static LineString[]
toLineStringArray(java.util.Collection lineStrings)
Converts theList
to an array.static MultiLineString[]
toMultiLineStringArray(java.util.Collection multiLineStrings)
Converts theList
to an array.static MultiPoint[]
toMultiPointArray(java.util.Collection multiPoints)
Converts theList
to an array.static MultiPolygon[]
toMultiPolygonArray(java.util.Collection multiPolygons)
Converts theList
to an array.static Point[]
toPointArray(java.util.Collection points)
Converts theList
to an array.static Polygon[]
toPolygonArray(java.util.Collection polygons)
Converts theList
to an array.
-
-
-
Constructor Detail
-
GeometryFactory
public GeometryFactory(PrecisionModel precisionModel, int SRID, CoordinateSequenceFactory coordinateSequenceFactory)
Constructs a GeometryFactory that generates Geometries having the given PrecisionModel, spatial-reference ID, and CoordinateSequence implementation.
-
GeometryFactory
public GeometryFactory(CoordinateSequenceFactory coordinateSequenceFactory)
Constructs a GeometryFactory that generates Geometries having the given CoordinateSequence implementation, a double-precision floating PrecisionModel and a spatial-reference ID of 0.
-
GeometryFactory
public GeometryFactory(PrecisionModel precisionModel)
Constructs a GeometryFactory that generates Geometries having the givenPrecisionModel
and the default CoordinateSequence implementation.- Parameters:
precisionModel
- the PrecisionModel to use
-
GeometryFactory
public GeometryFactory(PrecisionModel precisionModel, int SRID)
Constructs a GeometryFactory that generates Geometries having the givenPrecisionModel
and spatial-reference ID, and the default CoordinateSequence implementation.- Parameters:
precisionModel
- the PrecisionModel to useSRID
- the SRID to use
-
GeometryFactory
public GeometryFactory()
Constructs a GeometryFactory that generates Geometries having a floating PrecisionModel and a spatial-reference ID of 0.
-
-
Method Detail
-
createPointFromInternalCoord
public static Point createPointFromInternalCoord(Coordinate coord, Geometry exemplar)
-
toPointArray
public static Point[] toPointArray(java.util.Collection points)
Converts theList
to an array.- Parameters:
points
- theList
of Points to convert- Returns:
- the
List
in array format
-
toGeometryArray
public static Geometry[] toGeometryArray(java.util.Collection geometries)
Converts theList
to an array.- Parameters:
geometries
- the list ofGeometry's
to convert- Returns:
- the
List
in array format
-
toLinearRingArray
public static LinearRing[] toLinearRingArray(java.util.Collection linearRings)
Converts theList
to an array.- Parameters:
linearRings
- theList
of LinearRings to convert- Returns:
- the
List
in array format
-
toLineStringArray
public static LineString[] toLineStringArray(java.util.Collection lineStrings)
Converts theList
to an array.- Parameters:
lineStrings
- theList
of LineStrings to convert- Returns:
- the
List
in array format
-
toPolygonArray
public static Polygon[] toPolygonArray(java.util.Collection polygons)
Converts theList
to an array.- Parameters:
polygons
- theList
of Polygons to convert- Returns:
- the
List
in array format
-
toMultiPolygonArray
public static MultiPolygon[] toMultiPolygonArray(java.util.Collection multiPolygons)
Converts theList
to an array.- Parameters:
multiPolygons
- theList
of MultiPolygons to convert- Returns:
- the
List
in array format
-
toMultiLineStringArray
public static MultiLineString[] toMultiLineStringArray(java.util.Collection multiLineStrings)
Converts theList
to an array.- Parameters:
multiLineStrings
- theList
of MultiLineStrings to convert- Returns:
- the
List
in array format
-
toMultiPointArray
public static MultiPoint[] toMultiPointArray(java.util.Collection multiPoints)
Converts theList
to an array.- Parameters:
multiPoints
- theList
of MultiPoints to convert- Returns:
- the
List
in array format
-
toGeometry
public Geometry toGeometry(Envelope envelope)
Creates aGeometry
with the same extent as the given envelope. The Geometry returned is guaranteed to be valid. To provide this behaviour, the following cases occur:If the
Envelope
is:- null : returns an empty
Point
- a point : returns a non-empty
Point
- a line : returns a two-point
LineString
- a rectangle : returns a
Polygon
whose points are (minx, miny), (minx, maxy), (maxx, maxy), (maxx, miny), (minx, miny).
- Parameters:
envelope
- theEnvelope
to convert- Returns:
- an empty
Point
(for nullEnvelope
s), aPoint
(when min x = max x and min y = max y) or aPolygon
(in all other cases)
- null : returns an empty
-
getPrecisionModel
public PrecisionModel getPrecisionModel()
Returns the PrecisionModel that Geometries created by this factory will be associated with.- Returns:
- the PrecisionModel for this factory
-
createPoint
public Point createPoint(Coordinate coordinate)
Creates a Point using the given Coordinate. A null Coordinate creates an empty Geometry.- Parameters:
coordinate
- a Coordinate, or null- Returns:
- the created Point
-
createPoint
public Point createPoint(CoordinateSequence coordinates)
Creates a Point using the given CoordinateSequence; a null or empty CoordinateSequence will create an empty Point.- Parameters:
coordinates
- a CoordinateSequence (possibly empty), or null- Returns:
- the created Point
-
createMultiLineString
public MultiLineString createMultiLineString()
Constructs an emptyMultiLineString
geometry.- Returns:
- an empty MultiLineString
-
createMultiLineString
public MultiLineString createMultiLineString(LineString[] lineStrings)
Creates a MultiLineString using the given LineStrings; a null or empty array will create an empty MultiLineString.- Parameters:
lineStrings
- LineStrings, each of which may be empty but not null- Returns:
- the created MultiLineString
-
createGeometryCollection
public GeometryCollection createGeometryCollection()
Constructs an emptyGeometryCollection
geometry.- Returns:
- an empty GeometryCollection
-
createGeometryCollection
public GeometryCollection createGeometryCollection(Geometry[] geometries)
Creates a GeometryCollection using the given Geometries; a null or empty array will create an empty GeometryCollection.- Parameters:
geometries
- an array of Geometries, each of which may be empty but not null, or null- Returns:
- the created GeometryCollection
-
createMultiPolygon
public MultiPolygon createMultiPolygon()
Constructs an emptyMultiPolygon
geometry.- Returns:
- an empty MultiPolygon
-
createMultiPolygon
public MultiPolygon createMultiPolygon(Polygon[] polygons)
Creates a MultiPolygon using the given Polygons; a null or empty array will create an empty Polygon. The polygons must conform to the assertions specified in the OpenGIS Simple Features Specification for SQL.- Parameters:
polygons
- Polygons, each of which may be empty but not null- Returns:
- the created MultiPolygon
-
createLinearRing
public LinearRing createLinearRing()
Constructs an emptyLinearRing
geometry.- Returns:
- an empty LinearRing
-
createLinearRing
public LinearRing createLinearRing(Coordinate[] coordinates)
Creates aLinearRing
using the givenCoordinate
s. A null or empty array creates an empty LinearRing. The points must form a closed and simple linestring.- Parameters:
coordinates
- an array without null elements, or an empty array, or null- Returns:
- the created LinearRing
- Throws:
java.lang.IllegalArgumentException
- if the ring is not closed, or has too few points
-
createLinearRing
public LinearRing createLinearRing(CoordinateSequence coordinates)
Creates aLinearRing
using the givenCoordinateSequence
. A null or empty array creates an empty LinearRing. The points must form a closed and simple linestring.- Parameters:
coordinates
- a CoordinateSequence (possibly empty), or null- Returns:
- the created LinearRing
- Throws:
java.lang.IllegalArgumentException
- if the ring is not closed, or has too few points
-
createMultiPoint
public MultiPoint createMultiPoint()
Constructs an emptyMultiPoint
geometry.- Returns:
- an empty MultiPoint
-
createMultiPoint
public MultiPoint createMultiPoint(Point[] point)
Creates aMultiPoint
using the givenPoint
s. A null or empty array will create an empty MultiPoint.- Parameters:
point
- an array of Points (without null elements), or an empty array, ornull
- Returns:
- a MultiPoint object
-
createMultiPoint
public MultiPoint createMultiPoint(Coordinate[] coordinates)
Deprecated.Creates aMultiPoint
using the givenCoordinate
s. A null or empty array will create an empty MultiPoint.- Parameters:
coordinates
- an array (without null elements), or an empty array, ornull
- Returns:
- a MultiPoint object
-
createMultiPointFromCoords
public MultiPoint createMultiPointFromCoords(Coordinate[] coordinates)
Creates aMultiPoint
using the givenCoordinate
s. A null or empty array will create an empty MultiPoint.- Parameters:
coordinates
- an array (without null elements), or an empty array, ornull
- Returns:
- a MultiPoint object
-
createMultiPoint
public MultiPoint createMultiPoint(CoordinateSequence coordinates)
Creates aMultiPoint
using the points in the givenCoordinateSequence
. Anull
or empty CoordinateSequence creates an empty MultiPoint.- Parameters:
coordinates
- a CoordinateSequence (possibly empty), ornull
- Returns:
- a MultiPoint geometry
-
createPolygon
public Polygon createPolygon(LinearRing shell, LinearRing[] holes)
Constructs aPolygon
with the given exterior boundary and interior boundaries.- Parameters:
shell
- the outer boundary of the newPolygon
, ornull
or an emptyLinearRing
if the empty geometry is to be created.holes
- the inner boundaries of the newPolygon
, ornull
or emptyLinearRing
s if the empty geometry is to be created.- Throws:
java.lang.IllegalArgumentException
- if a ring is invalid
-
createPolygon
public Polygon createPolygon(CoordinateSequence shell)
Constructs aPolygon
with the given exterior boundary.- Parameters:
shell
- the outer boundary of the newPolygon
, ornull
or an emptyLinearRing
if the empty geometry is to be created.- Throws:
java.lang.IllegalArgumentException
- if the boundary ring is invalid
-
createPolygon
public Polygon createPolygon(Coordinate[] shell)
Constructs aPolygon
with the given exterior boundary.- Parameters:
shell
- the outer boundary of the newPolygon
, ornull
or an emptyLinearRing
if the empty geometry is to be created.- Throws:
java.lang.IllegalArgumentException
- if the boundary ring is invalid
-
createPolygon
public Polygon createPolygon(LinearRing shell)
Constructs aPolygon
with the given exterior boundary.- Parameters:
shell
- the outer boundary of the newPolygon
, ornull
or an emptyLinearRing
if the empty geometry is to be created.- Throws:
java.lang.IllegalArgumentException
- if the boundary ring is invalid
-
createPolygon
public Polygon createPolygon()
Constructs an emptyPolygon
geometry.- Returns:
- an empty polygon
-
buildGeometry
public Geometry buildGeometry(java.util.Collection geomList)
Build an appropriateGeometry
,MultiGeometry
, orGeometryCollection
to contain theGeometry
s in it. For example:
- If
geomList
contains a singlePolygon
, thePolygon
is returned. - If
geomList
contains severalPolygon
s, aMultiPolygon
is returned. - If
geomList
contains somePolygon
s and someLineString
s, aGeometryCollection
is returned. - If
geomList
is empty, an emptyGeometryCollection
is returned
- Parameters:
geomList
- theGeometry
s to combine- Returns:
- a
Geometry
of the "smallest", "most type-specific" class that can contain the elements ofgeomList
.
- If
-
createLineString
public LineString createLineString()
Constructs an emptyLineString
geometry.- Returns:
- an empty LineString
-
createLineString
public LineString createLineString(Coordinate[] coordinates)
Creates a LineString using the given Coordinates. A null or empty array creates an empty LineString.- Parameters:
coordinates
- an array without null elements, or an empty array, or null
-
createLineString
public LineString createLineString(CoordinateSequence coordinates)
Creates a LineString using the given CoordinateSequence. A null or empty CoordinateSequence creates an empty LineString.- Parameters:
coordinates
- a CoordinateSequence (possibly empty), or null
-
createEmpty
public Geometry createEmpty(int dimension)
Creates an empty atomic geometry of the given dimension. If passed a dimension of -1 will create an emptyGeometryCollection
.- Parameters:
dimension
- the required dimension (-1, 0, 1 or 2)- Returns:
- an empty atomic geometry of given dimension
-
createGeometry
public Geometry createGeometry(Geometry g)
Creates a deep copy of the inputGeometry
. TheCoordinateSequenceFactory
defined for this factory is used to copy theCoordinateSequence
s of the input geometry.This is a convenient way to change the CoordinateSequence used to represent a geometry, or to change the factory used for a geometry.
Geometry.copy()
can also be used to make a deep copy, but it does not allow changing the CoordinateSequence type.- Returns:
- a deep copy of the input geometry, using the CoordinateSequence type of this factory
- See Also:
Geometry.copy()
-
getSRID
public int getSRID()
Gets the SRID value defined for this factory.- Returns:
- the factory SRID value
-
getCoordinateSequenceFactory
public CoordinateSequenceFactory getCoordinateSequenceFactory()
-
-