Class GeometryEditor



  • public class GeometryEditor
    extends Object
    A class which supports creating new Geometrys which are modifications of existing ones. Geometry objects are intended to be treated as immutable. This class "modifies" Geometrys by traversing them, applying a user-defined GeometryEditor.GeometryEditorOperation or GeometryEditor.CoordinateOperation and creating new Geometrys with the same structure but (possibly) modified components.

    Examples of the kinds of modifications which can be made are:

    • the values of the coordinates may be changed. The editor does not check whether changing coordinate values makes the result Geometry invalid
    • the coordinate lists may be changed (e.g. by adding or deleting coordinates). The modifed coordinate lists must be consistent with their original parent component (e.g. a LinearRing must always have at least 4 coordinates, and the first and last coordinate must be equal)
    • components of the original geometry may be deleted ( e.g. holes may be removed from a Polygon, or LineStrings removed from a MultiLineString). Deletions will be propagated up the component tree appropriately.
    All changes must be consistent with the original Geometry's structure (e.g. a Polygon cannot be collapsed into a LineString). If changing the structure is required, use a GeometryTransformer.

    This class supports the case where an edited Geometry needs to be created under a new GeometryFactory, via the GeometryEditor(GeometryFactory) constructor. Examples of situations where this is required is if the geometry is transformed to a new SRID and/or a new PrecisionModel.

    The resulting Geometry is not checked for validity. If validity needs to be enforced, the new Geometry's Geometry.isValid() method should be called.

    See Also:
    GeometryTransformer, Geometry.isValid()