transformLinearRing method
Transforms a LinearRing. The transformation of a LinearRing may result in a coordinate sequence which does not form a structurally valid ring (i.e. a degenerate ring of 3 or fewer points). In this case a LineString is returned. Subclasses may wish to override this method and check for this situation (e.g. a subclass may choose to eliminate degenerate linear rings)
@param geom the ring to simplify @param parent the parent geometry @return a LinearRing if the transformation resulted in a structurally valid ring @return a LineString if the transformation caused the LinearRing to collapse to 3 or fewer points
Implementation
Geometry transformLinearRing(LinearRing geom, Geometry parent) {
CoordinateSequence seq =
transformCoordinates(geom.getCoordinateSequence(), geom);
if (seq == null) return factory.createLinearRingEmpty();
int seqSize = seq.size();
// ensure a valid LinearRing
if (seqSize > 0 && seqSize < 4 && !preserveType)
return factory.createLineStringSeq(seq);
return factory.createLinearRingSeq(seq);
}