public interface CoordinateSequenceFilter
CoordinateSequence
.
A filter can either record information about each coordinate,
or change the value of the coordinate.
Filters can be
used to implement operations such as coordinate transformations, centroid and
envelope computation, and many other functions.
Geometry
classes support the concept of applying a
CoordinateSequenceFilter
to each
CoordinateSequence
s they contain.
For maximum efficiency, the execution of filters can be short-circuited by using the isDone()
method.
CoordinateSequenceFilter
is
an example of the Gang-of-Four Visitor pattern.
Note: In general, it is preferable to treat Geometrys as immutable.
Mutation should be performed by creating a new Geometry object (see GeometryEditor
and GeometryTransformer
for convenient ways to do this).
An exception to this rule is when a new Geometry has been created via Geometry.copy()
.
In this case mutating the Geometry will not cause aliasing issues,
and a filter is a convenient way to implement coordinate transformation.
Geometry.apply(CoordinateFilter)
,
GeometryTransformer
,
GeometryEditor
,
Geometry.apply(CoordinateSequenceFilter)
Modifier and Type | Method and Description |
---|---|
void |
filter(CoordinateSequence seq,
int i)
Performs an operation on a coordinate in a
CoordinateSequence . |
boolean |
isDone()
Reports whether the application of this filter can be terminated.
|
boolean |
isGeometryChanged()
Reports whether the execution of this filter
has modified the coordinates of the geometry.
|
void filter(CoordinateSequence seq, int i)
CoordinateSequence
.seq
- the CoordinateSequence
to which the filter is appliedi
- the index of the coordinate to apply the filter toboolean isDone()
boolean isGeometryChanged()
Geometry.geometryChanged()
will be executed
after this filter has finished being executed.
Most filters can simply return a constant value reflecting whether they are able to change the coordinates.
Copyright © 2024. All rights reserved.