public class GeometryTransformer extends Object
Geometry into an output
Geometry, possibly changing its structure and type(s). This class is a framework for implementing subclasses which perform transformations on various different Geometry subclasses. It provides an easy way of applying specific transformations to given geometry types, while allowing unhandled types to be simply copied. Also, the framework ensures that if subcomponents change type the parent geometries types change appropriately to maintain valid structure. Subclasses will override whichever
transformX methods they need to to handle particular Geometry types.
A typically usage would be a transformation class that transforms Polygons into Polygons, LineStrings or Points, depending on the geometry of the input (For instance, a simplification operation). This class would likely need to override the #transformMultiPolygon(MultiPolygon, Geometry)transformMultiPolygon method to ensure that if input Polygons change type the result is a GeometryCollection, not a MultiPolygon.
The default behaviour of this class is simply to recursively transform each Geometry component into an identical object by deep copying down to the level of, but not including, coordinates.
All transformX methods may return null, to avoid creating empty or invalid geometry objects. This will be handled correctly by the transformer. transformXXX methods should always return valid geometry - if they cannot do this they should return null (for instance, it may not be possible for a transformLineString implementation to return at least two points - in this case, it should return null). The #transform(Geometry)transform method itself will always return a non-null Geometry object (but this may be empty).
GeometryEditor
| Modifier and Type | Field and Description |
|---|---|
protected GeometryFactory |
factory
|
| Constructor and Description |
|---|
GeometryTransformer()
|
protected GeometryFactoryfactory
public GeometrygetInputGeometry()
protected final CoordinateSequencecreateCoordinateSequence(Coordinate [] coords)
CoordinateSequence
coords - the coordinate array to copy
protected final CoordinateSequencecopy(CoordinateSequence seq)
CoordinateSequences
seq - the sequence to copy
protected CoordinateSequencetransformCoordinates(CoordinateSequence coords, Geometry parent)
CoordinateSequence. This method should always return a valid coordinate list for the desired result type. (E.g. a coordinate list for a LineString must have 0 or at least 2 points). If this is not possible, return an empty sequence - this will be pruned out.
coords - the coordinates to transform
parent - the parent geometry
protected GeometrytransformMultiPoint(MultiPoint geom, Geometry parent)
protected GeometrytransformLinearRing(LinearRing geom, Geometry parent)
geom - the ring to simplify
parent - the parent geometry
protected GeometrytransformLineString(LineString geom, Geometry parent)
LineString geometry.
geom -
parent -
protected GeometrytransformMultiLineString(MultiLineString geom, Geometry parent)
protected GeometrytransformMultiPolygon(MultiPolygon geom, Geometry parent)
protected GeometrytransformGeometryCollection(GeometryCollection geom, Geometry parent)