A framework for processes which transform an input
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 handles ensuring 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 that may transform Polygons into
Polygons, LineStrings
or Points. This class would likely need to override the
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 to simply recursively transform
each Geometry component into an identical object by copying.
Note that all
transformX
methods may return
null
,
to avoid creating empty geometry objects. This will be handled correctly
by the transformer.
The @link transform} method itself will always
return a geometry object.
createCoordinateSequence
protected final CoordinateSequence createCoordinateSequence(Coordinate[] coords)
coords
- the coordinate array to copy
- a coordinate sequence for the array
getInputGeometry
public Geometry getInputGeometry()