com.vividsolutions.jts.geom.util
Class GeometryTransformer

java.lang.Object
  extended bycom.vividsolutions.jts.geom.util.GeometryTransformer

public class GeometryTransformer
extends java.lang.Object

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 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 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.

All transformX methods may return null, to avoid creating empty or invalid geometry objects. This will be handled correctly by the transformer. transformX 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 method itself will always return a non-null Geometry object (but this may be empty).

Version:
1.7
See Also:
GeometryEditor

Field Summary
protected  GeometryFactory factory
           
 
Constructor Summary
GeometryTransformer()
           
 
Method Summary
protected  CoordinateSequence copy(CoordinateSequence seq)
          Convenience method which provides statndard way of copying CoordinateSequences
protected  CoordinateSequence createCoordinateSequence(Coordinate[] coords)
          Convenience method which provides standard way of creating a CoordinateSequence
 Geometry getInputGeometry()
          Utility function to make input geometry available
 Geometry transform(Geometry inputGeom)
           
protected  CoordinateSequence transformCoordinates(CoordinateSequence coords, Geometry parent)
          Transforms a CoordinateSequence.
protected  Geometry transformGeometryCollection(GeometryCollection geom, Geometry parent)
           
protected  Geometry transformLinearRing(LinearRing geom, Geometry parent)
           
protected  Geometry transformLineString(LineString geom, Geometry parent)
          Transforms a LineString geometry.
protected  Geometry transformMultiLineString(MultiLineString geom, Geometry parent)
           
protected  Geometry transformMultiPoint(MultiPoint geom, Geometry parent)
           
protected  Geometry transformMultiPolygon(MultiPolygon geom, Geometry parent)
           
protected  Geometry transformPoint(Point geom, Geometry parent)
           
protected  Geometry transformPolygon(Polygon geom, Geometry parent)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

factory

protected GeometryFactory factory
Constructor Detail

GeometryTransformer

public GeometryTransformer()
Method Detail

getInputGeometry

public Geometry getInputGeometry()
Utility function to make input geometry available

Returns:
the input geometry

transform

public final Geometry transform(Geometry inputGeom)

createCoordinateSequence

protected final CoordinateSequence createCoordinateSequence(Coordinate[] coords)
Convenience method which provides standard way of creating a CoordinateSequence

Parameters:
coords - the coordinate array to copy
Returns:
a coordinate sequence for the array

copy

protected final CoordinateSequence copy(CoordinateSequence seq)
Convenience method which provides statndard way of copying CoordinateSequences

Parameters:
seq - the sequence to copy
Returns:
a deep copy of the sequence

transformCoordinates

protected CoordinateSequence transformCoordinates(CoordinateSequence coords,
                                                  Geometry parent)
Transforms a 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.

Parameters:
coords - the coordinates to transform
parent - the parent geometry
Returns:
the transformed coordinates

transformPoint

protected Geometry transformPoint(Point geom,
                                  Geometry parent)

transformMultiPoint

protected Geometry transformMultiPoint(MultiPoint geom,
                                       Geometry parent)

transformLinearRing

protected Geometry transformLinearRing(LinearRing geom,
                                       Geometry parent)

transformLineString

protected Geometry transformLineString(LineString geom,
                                       Geometry parent)
Transforms a LineString geometry.

Parameters:
geom -
parent -
Returns:

transformMultiLineString

protected Geometry transformMultiLineString(MultiLineString geom,
                                            Geometry parent)

transformPolygon

protected Geometry transformPolygon(Polygon geom,
                                    Geometry parent)

transformMultiPolygon

protected Geometry transformMultiPolygon(MultiPolygon geom,
                                         Geometry parent)

transformGeometryCollection

protected Geometry transformGeometryCollection(GeometryCollection geom,
                                               Geometry parent)