Class GeometryEditor
java.lang.Object
org.locationtech.jts.geom.util.GeometryEditor
A class which supports creating new
Geometrys
which are modifications of existing ones,
maintaining the same type structure.
Geometry objects are intended to be treated as immutable.
This class "modifies" Geometrys
by traversing them, applying a user-defined
GeometryEditor.GeometryEditorOperation, GeometryEditor.CoordinateSequenceOperation 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, deleting or modifying coordinates). The modified 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.
GeometryTransformer.
This class supports creating an edited Geometry
using a different 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.
Usage Notes
- The resulting Geometry is not checked for validity.
If validity needs to be enforced, the new Geometry's
Geometry.isValid()method should be called. - By default the UserData of the input geometry is not copied to the result.
- Version:
- 1.7
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classAGeometryEditor.GeometryEditorOperationwhich edits the coordinate list of aGeometry.static classstatic interfaceA interface which specifies an edit operation for Geometries.static classA GeometryEditorOperation which does not modify the input geometry. -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new GeometryEditor object which will create editedGeometrys with the sameGeometryFactoryas the input Geometry.GeometryEditor(GeometryFactory factory) Creates a new GeometryEditor object which will create editedGeometrys with the givenGeometryFactory. -
Method Summary
Modifier and TypeMethodDescriptionedit(Geometry geometry, GeometryEditor.GeometryEditorOperation operation) Edit the inputGeometrywith the given edit operation.voidsetCopyUserData(boolean isUserDataCopied) Sets whether the User Data is copied to the edit result.
-
Constructor Details
-
GeometryEditor
public GeometryEditor()Creates a new GeometryEditor object which will create editedGeometrys with the sameGeometryFactoryas the input Geometry. -
GeometryEditor
Creates a new GeometryEditor object which will create editedGeometrys with the givenGeometryFactory.- Parameters:
factory- the GeometryFactory to create edited Geometrys with
-
-
Method Details
-
setCopyUserData
public void setCopyUserData(boolean isUserDataCopied) Sets whether the User Data is copied to the edit result. Only the object reference is copied.- Parameters:
isUserDataCopied- true if the input user data should be copied.
-
edit
Edit the inputGeometrywith the given edit operation. Clients can create subclasses ofGeometryEditor.GeometryEditorOperationorGeometryEditor.CoordinateOperationto perform required modifications.- Parameters:
geometry- the Geometry to editoperation- the edit operation to carry out- Returns:
- a new
Geometrywhich is the result of the editing (which may be empty)
-