Class GeometryFactory

java.lang.Object
org.locationtech.jts.geom.GeometryFactory
All Implemented Interfaces:
Serializable

public class GeometryFactory extends Object implements 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:
  • Constructor Details

    • 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 given PrecisionModel 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 given PrecisionModel and spatial-reference ID, and the default CoordinateSequence implementation.
      Parameters:
      precisionModel - the PrecisionModel to use
      SRID - 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 Details

    • createPointFromInternalCoord

      public static Point createPointFromInternalCoord(Coordinate coord, Geometry exemplar)
    • toPointArray

      public static Point[] toPointArray(Collection points)
      Converts the List to an array.
      Parameters:
      points - the List of Points to convert
      Returns:
      the List in array format
    • toGeometryArray

      public static Geometry[] toGeometryArray(Collection geometries)
      Converts the List to an array.
      Parameters:
      geometries - the list of Geometry's to convert
      Returns:
      the List in array format
    • toLinearRingArray

      public static LinearRing[] toLinearRingArray(Collection linearRings)
      Converts the List to an array.
      Parameters:
      linearRings - the List of LinearRings to convert
      Returns:
      the List in array format
    • toLineStringArray

      public static LineString[] toLineStringArray(Collection lineStrings)
      Converts the List to an array.
      Parameters:
      lineStrings - the List of LineStrings to convert
      Returns:
      the List in array format
    • toPolygonArray

      public static Polygon[] toPolygonArray(Collection polygons)
      Converts the List to an array.
      Parameters:
      polygons - the List of Polygons to convert
      Returns:
      the List in array format
    • toMultiPolygonArray

      public static MultiPolygon[] toMultiPolygonArray(Collection multiPolygons)
      Converts the List to an array.
      Parameters:
      multiPolygons - the List of MultiPolygons to convert
      Returns:
      the List in array format
    • toMultiLineStringArray

      public static MultiLineString[] toMultiLineStringArray(Collection multiLineStrings)
      Converts the List to an array.
      Parameters:
      multiLineStrings - the List of MultiLineStrings to convert
      Returns:
      the List in array format
    • toMultiPointArray

      public static MultiPoint[] toMultiPointArray(Collection multiPoints)
      Converts the List to an array.
      Parameters:
      multiPoints - the List of MultiPoints to convert
      Returns:
      the List in array format
    • toGeometry

      public Geometry toGeometry(Envelope envelope)
      Creates a Geometry 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 - the Envelope to convert
      Returns:
      an empty Point (for null Envelopes), a Point (when min x = max x and min y = max y) or a Polygon (in all other cases)
    • 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()
      Constructs an empty Point geometry.
      Returns:
      an empty Point
    • 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 empty MultiLineString 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 empty GeometryCollection 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 empty MultiPolygon 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 empty LinearRing geometry.
      Returns:
      an empty LinearRing
    • createLinearRing

      public LinearRing createLinearRing(Coordinate[] coordinates)
      Creates a LinearRing using the given Coordinates. 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:
      IllegalArgumentException - if the ring is not closed, or has too few points
    • createLinearRing

      public LinearRing createLinearRing(CoordinateSequence coordinates)
      Creates a LinearRing using the given CoordinateSequence. 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:
      IllegalArgumentException - if the ring is not closed, or has too few points
    • createMultiPoint

      public MultiPoint createMultiPoint()
      Constructs an empty MultiPoint geometry.
      Returns:
      an empty MultiPoint
    • createMultiPoint

      public MultiPoint createMultiPoint(Point[] point)
      Creates a MultiPoint using the given Points. A null or empty array will create an empty MultiPoint.
      Parameters:
      point - an array of Points (without null elements), or an empty array, or null
      Returns:
      a MultiPoint object
    • createMultiPoint

      public MultiPoint createMultiPoint(Coordinate[] coordinates)
      Creates a MultiPoint using the given Coordinates. A null or empty array will create an empty MultiPoint.
      Parameters:
      coordinates - an array (without null elements), or an empty array, or null
      Returns:
      a MultiPoint object
    • createMultiPointFromCoords

      public MultiPoint createMultiPointFromCoords(Coordinate[] coordinates)
      Creates a MultiPoint using the given Coordinates. A null or empty array will create an empty MultiPoint.
      Parameters:
      coordinates - an array (without null elements), or an empty array, or null
      Returns:
      a MultiPoint object
    • createMultiPoint

      public MultiPoint createMultiPoint(CoordinateSequence coordinates)
      Creates a MultiPoint using the points in the given CoordinateSequence. A null or empty CoordinateSequence creates an empty MultiPoint.
      Parameters:
      coordinates - a CoordinateSequence (possibly empty), or null
      Returns:
      a MultiPoint geometry
    • createPolygon

      public Polygon createPolygon(LinearRing shell, LinearRing[] holes)
      Constructs a Polygon with the given exterior boundary and interior boundaries.
      Parameters:
      shell - the outer boundary of the new Polygon, or null or an empty LinearRing if the empty geometry is to be created.
      holes - the inner boundaries of the new Polygon, or null or empty LinearRing s if the empty geometry is to be created.
      Throws:
      IllegalArgumentException - if a ring is invalid
    • createPolygon

      public Polygon createPolygon(CoordinateSequence shell)
      Constructs a Polygon with the given exterior boundary.
      Parameters:
      shell - the outer boundary of the new Polygon, or null or an empty LinearRing if the empty geometry is to be created.
      Throws:
      IllegalArgumentException - if the boundary ring is invalid
    • createPolygon

      public Polygon createPolygon(Coordinate[] shell)
      Constructs a Polygon with the given exterior boundary.
      Parameters:
      shell - the outer boundary of the new Polygon, or null or an empty LinearRing if the empty geometry is to be created.
      Throws:
      IllegalArgumentException - if the boundary ring is invalid
    • createPolygon

      public Polygon createPolygon(LinearRing shell)
      Constructs a Polygon with the given exterior boundary.
      Parameters:
      shell - the outer boundary of the new Polygon, or null or an empty LinearRing if the empty geometry is to be created.
      Throws:
      IllegalArgumentException - if the boundary ring is invalid
    • createPolygon

      public Polygon createPolygon()
      Constructs an empty Polygon geometry.
      Returns:
      an empty polygon
    • buildGeometry

      public Geometry buildGeometry(Collection geomList)
      Build an appropriate Geometry, MultiGeometry, or GeometryCollection to contain the Geometrys in it. For example:
      • If geomList contains a single Polygon, the Polygon is returned.
      • If geomList contains several Polygons, a MultiPolygon is returned.
      • If geomList contains some Polygons and some LineStrings, a GeometryCollection is returned.
      • If geomList is empty, an empty GeometryCollection is returned
      Note that this method does not "flatten" Geometries in the input, and hence if any MultiGeometries are contained in the input a GeometryCollection containing them will be returned.
      Parameters:
      geomList - the Geometrys to combine
      Returns:
      a Geometry of the "smallest", "most type-specific" class that can contain the elements of geomList .
    • createLineString

      public LineString createLineString()
      Constructs an empty LineString 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 empty GeometryCollection.
      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 input Geometry. The CoordinateSequenceFactory defined for this factory is used to copy the CoordinateSequences 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:
    • getSRID

      public int getSRID()
      Gets the SRID value defined for this factory.
      Returns:
      the factory SRID value
    • getCoordinateSequenceFactory

      public CoordinateSequenceFactory getCoordinateSequenceFactory()