Object.clone()
methods superseded with copy()
Envelope.compareTo
method
SegmentSetMutualIntersector
classes to
be thread-safe
PreparedGeometry
classes to be
thread-safe
LineDissolver
class
edgegraph
package
CoordinateSequences.isEqual
method
CoordinateSequences.copy
and CoordinateSequences.copy
to handle inputs of different dimension
CoordinateArrays.envelope()
function
CoordinateArrays.intersection()
function
Polygonizer.setCheckValidRings()
method
for optimizing performance in some situations
KMLWriter
to convert Geometry to KML
representation
Coordinate
equals3D
, equals2D(Coordinate,
tolerance)
, and equalInZ
methods.
VWSimplifier
to perform
Visvalingam-Whyatt simplification
WKBReader
to handle Spatialite WKB
format
DD.setValue()
methods
getGeometry()
methods to LinearComponentExtracter
and LineStringExtracter
BufferParameters
simplifyFactor
setting
InteriorIntersectionFinder
Polygonizer
functionality to extract
only polygons forming a valid polygonal geometry
KdTree.toCoordinates
MinimumBoundingCircle.getFarthestPoints
method
PreparedPolygonIntersects
by short-circuiting point input case
CascadedPolygonUnion
,
by avoiding retaining input collection
Point.isEmpty()
to avoid allocating a
coordinate
Geometry.equalsExact()
to short-circuit
when the inputs are identical objects
PointExtracter
to improve
performance for Points
RobustLineIntersector
heuristic for
handling invalid intersection points (computed as outside envelope
of input segments due to numeric precision issues)
CGAlgorithmsDD.intersection
to compute
intersection correctly
Geometry.interiorPoint()
to compute a
true interior point in certain cases
Geometry.equals
to handle null argument
DistanceToPoint
to be thread-safe
Geometry.interiorPoint()
and InteriorPointArea
to handle zero-area geometries
STRtree
classes to be thread-safe (by
synchronizing the AbstractSTRtree.build()
method)
STRtree.remove()
method to avoid a NPE
DouglasPeuckerSimplifier
and TopologyPreservingSimplifier
to handle empty geometry components in the input
ConvexHull
to handle input of array of
identical coordinates
GeometryTransformer.transformLinearRing()
to handle null inputs
extractPoint(distance, offset)
methods in LocationIndexedLine
and LengthIndexedLine
to handle offsets from endpoints correctly.
GeometryCollectionIterator
to correctly
handle atomic geometries
InteriorIntersectionFinder
to not
short-circuit when finding all nodes
SubgraphDepthLocator
to work with Java
7+ by avoiding sorting with an inconsistent ordering
FontGlyphReader
to use correct Java font value of "SansSerif", and added new constant to match.
KdTree
to correctly implement distance tolerance-based coordinate matching
LineString.normalize()
to correctly handle CoordinateSequences
CommonBitsRemover
to correctly handle CoordinateSequences
CoordinateArraySequence.clone()
SegmentSetMutualIntersector
to support thread-safety by removing state
InteriorIntersectionFinderAdder
to
replace the poorly named IntersectionFinderAdder
com.vividsolutions.jts.operation.buffer
to be package-private
GeometryTestCase
base class to simplify
unit tests
GeoJsonReader
and GeoJsonWriter
classes
OraWriter
the connection is now provided to
the write()
method, not the constructors
OraReader
to handle reading GeometryCollection
with Point
as second element
OraWriter.setOptimizePoint
and OraWriter.setOptimizeRectangle
methods
GeometryFactory.createGeometry()
to
make a deep copy of the argument Geometry, using the
CoordinateSequenceFactory of the factory
CoordinateArraySequence
Geometry.getEnvelopeInternal()
to
return a copy of the cached envelope, to prevent modification
GeometryEditor.CoordinateSequenceOperation
to allow easy editing of constituent CoordinateSequences
GeometryFactory.createPolygon
convenience methods which do not require holes to be specified
Geometry
overlay methods now return empty
results as atomic types of appropriate dimension
RectangleLineIntersector
to provide
efficient rectangle-line intersection testing
getOrdinate
and setOrdinate
to Coordinate
Quadtree
is Serializable
STRtree
is Serializable
max
, average
and wrap
functions to MathUtil
WKTReader
parse error reporting to
report input line of error
WKBReader
to repair
structurally-invalid input
TopologyPreservingSimplifier
thread-safe
AbstractSTRtree.isEmpty()
method
QuadTree.isEmpty()
method
KdTree.isEmpty()
method
ShapeWriter
.
ScaledNoder
now preserves Z values of input
Triangle
static
methods
CGAlgorithmsDD
containing high-precision
versions of some basic CG algorithms
IntersectionMatrix.isTrue()
method for
testing IM pattern matches
getRawCoordinates
methods to PackedCoordinateSequence
concrete classes
Geometry.isSimple()
to explicity
check for simplicity for all types, and support GeometryCollections
MCIndexSnapRounder
to add nodes only
where they are necessary
CoordinateArrays.removeNull()
method
GeometryEditor
to handle null
geometries returned from operation
WKBHExFileReader
Distance3D
operation
RectangleIntersects
by using new RectangleLineIntersector
RandomPointsInGridBuilder
eliminated
redundant ArrayList
usage
PreparedPolygonIntersects
and PreparedLineStringIntersects
added check to avoid creating segment index if all test inputs are
points
AbstractSTRtree
switched to using indexed
list access for better performance than using iterators
AbstractSTRtree
freed inserted item array
after index is built
Polygonizer
for cases
with many potential holes
DD
methods by
making them final
CGAlgorithmsDD.orientationIndex
,
and switched to self-operations for DD determinant
STRtree.createNode()
to use a static
class for nodes
QuadTree Node
to use scalar x and y
variables rather than a Coordinate
to reduce memory
allocation
PreparedGeometry
concrete classes to be
thread-safe.
SortedPackedIntervalRTree
so that it is
thread-safe.
CGAlgorithms.distanceLineLine()
improved to be
more robust and performant
Empty Stack
failure in ConvexHull
for some nearly collinear inputs
CGAlgorithms.signedArea()
uses a more accurate
algorithm
Geometry.equalsExact()
to avoid NPE when
comparing empty and non-empty Point
s
CascadedPolygonUnion
to discard
non-polygonal components created during unioning, to avoid failures
and provide more desirable behaviour
CentralEndpointIntersector
to initialize
result correctly
DelaunayTriangulationBuilder.extractUniqueCoordinates(Geometry)
to avoid mutating the vertex order of the input Geometry
ConformingDelaunayTriangulationBuilder
to allow non-disjoint site and constraint vertex sets
RandomPointsInGridBuilder
point
generation to use circle constraint correctly
LocationIndexedLine
and LengthIndexLine
which was causing an assertion failure when the indexOfAfter()
method was called with a constraint location which is at the end of
the line
STRtree.query(Envelope,
ItemVisitor)
causing an NPE when tree is empty
TopologyPreservingSimplifier
to return a
valid result for closed LineString
s with large
distance tolerances
TopologyPreservingSimplifier
to return
an empty result for an empty input
DouglasPeuckerSimplifier
to return an
empty result for an empty input
MinimumBoundingCircle
to correctly
compute circle for obtuse triangles.
GeometryPrecisionReducer
to use input
GeometryFactory when polygon topology is fixed
GeometryNoder
bug that was failing to
snap to end vertices of lines
Geometry.getCentroid()
and Geometry.getInteriorPoint()
to return POINT EMPTY
for empty inputs
DelaunayTriangulationBuilder
to
correctly extract unique points
KdTree
to correctly handle inserting
duplicate points into an empty tree
LineSegment.projectionFactor()
to handle
zero-length lines (by returning Double.POSITIVE_INFINITY)
LocationIndexedLine
to handle locations
on zero-length lines
LengthIndexedLine
and LocationIndexedLine
to handle indexOfAfter()
correctly
WKBReader
to handle successive geometrys
with different endianness
GeometricShapeFactory
to correctly
handle setting the centre point
GeometryFactory.createMultiPoint(CoordinateSequence)
to handle sequences of dimension > 3
TaggedLineStringSimplifier
back to public
due to user demand
PerformanceTestRunner
and PerformanceTestCase
)
Geometry
equality:
equals(Object)
is a synonym for equalsExact(Geometry)
equalsNorm(Geometry)
automatically normalizes
the operands
equalsTopo(Geometry)
computes topological
equality, and is a synonym for the original equals(Geometry)
Geometry.norm()
to provide non-mutating
normalization
Geometry.hashCode()
to fulfill Java
conventions
LineIntersector.getEndpoint()
method
CoordinateSequences
to test
for and create valid rings
minExtent
and maxExtent
to
Envelope
BufferOp
and BufferParameters
)
GeometryPrecisionReducer
WKBWriter
(thanks to Justin Deoliviera)
PolygonShape
to support
floating-point coordinates
GeometryShapeFactory.setRotation(double
radians)
method
GeometricShapeBuilder
API to support
shape builder development
RandomPointsBuilder
to allow generating
various random point sets
RandomPointsInGridBuilder
to allow
generating various random point sets constrained to a grid
KochSnowflakeBuilder
SierpinskiCarpetBuilder
MathUtil
containing mathematics and
numerical utility functions
Vector2D
class providing vector
operations
DirectedEdgeStar.getNextCWEdge()
method
to planargraph
API
AffineTransformation
enhanced to avoid numeric
precision issues in case of reflection in X=Y (coordinate flipping)
LineSequencer.sequence()
static
convenience method
BufferDistanceValidator
and BufferResultValidator
MinimumClearance
class
nearestNeighbours
methods to STRtree
ShapeWriter
conversions (by tuning coordinate and polygon conversion)
RectangleIntersects
by
refining SegmentIntersectionTester
RectangleIntersects
to always use
segment-scanning to improve robustness
com.vividsolutions.jts.geom.prep
com.vividsolutions.jts.simplify
Matrix
class into jts.math
package
com.vividsolutions.jts.operation.buffer
package
CoordinateArraySequence
and PackedCoordinateSequence
to correctly handle Z ordinate in getCoordinate(int,
Coordinate)
LinearRing
to have isClosed()
return true
for empty rings
Geometry.union()
to use more robust
union algorithm. This provides behaviour consistent with union(Geometry)
.
Point.isValid()
to validate POINT EMPTY
correctly
SnapIfNeededOverlayOp
to throw the
originating exception,which contains meaningful coordinates
GeometrySnapper
to allow final vertices
of LineStrings to snap correctly
OffsetCurveSetBuilder
) to handle
"flat" rings correctly
IsValidOp
to handle reporting "Not
Closed" errors on empty rings correctly
NestedRingTester
(used by IsValidOp
)
to correctly handle the case where a hole touches all the vertices
of another hole (which is invalid)
ConvexHull
to handle large geometries
with fewer than 3 unique points
GeometryGraph
to ignore empty hole rings
when building graph
LineMerger
to skip lines with only a
single unique coordinate
ByteArrayInStream
to pad byte buffers
with zeroes
SquarePointShapeFactory
KdTree
MasterTester
to include more unit
tests
[Zoom To Result]
button
CoordinateArrays.isRing
CGAlgorithms.signedArea(CoordinateSequence)
CoordinateArrays.copyDeep(...)
method to
copy sections of arrays
CoordinateList.add(Coordinate[],
boolean, int, int)
method to add sections of arrays
LineSegment.toGeometry()
, LineSegment.lineIntersection()()
LineSegment.hashCode()
HausdorffSimilarityMeasure
,
AreaSimilarityMeasure
)
MinimumDiameter.getMinimumRectangle()
MinimumBoundingCircle
class
Densifier
class
QuadEdgeSubdivision
,
IncrementalDelaunayTriangulator
, ConformingDelaunayTriangulator
and supporting classes
VoronoiDiagramBuilder
to perform Voronoi
diagram generation
scaleInstance(scaleX, scaleY, x, y)
to AffineTransformation
AffineTransformationFactory
to allow
generating transformations from various kinds of control inputs
BinTree.remove()
method
BinTree.query()
to allow null interval
arguments
ShapeReader
API to convert Java2D Shapes
into JTS Geometry
ShapeWriter
API to convert JTS geometry
into Java2D Shapes
FontGlyphReader
API to render Java2D
text font glyphs into geometry
SdeReader
to jtsio library
Debug
break methods
Memory
utility for reporting memory
statistics
ObjectCounter
utility for counting
objects
createSquircle
and createSuperCircle
to GeometricShapeFactory
Geometry.getArea()
and
Geometry.getLength()
when used with custom CoordinateSequence
s
WKBWriter.bytesToHex
in favour of WKBWriter.toHex
to regularize and simplify method name
Geometry.distance()
and DistanceOp
to return 0.0 for empty inputs
Buffer
to handle degenerate polygons
with too few distinct points correctly
LineSegment.pointAlongOffset()
BufferSubgraph
to
handle certain robustness failures correctly
OffsetCurveBuilder
in computing mitred joins for nearly parallel segments
BufferInputLineSimplifier
which prevented simplification of some situations
BufferInputLineSimplifier
which
caused over-simplification for large tolerances
Angle.normalizePositive
to handle
values 2PI correctly
WKTWriter
to emit correct syntax for
MULTIPOINTs
WKTReader
to accept correct syntax for
MULTIPOINTs
CGAlgorithms.isCCW
now checks for too few
points in the ring and throws an IllegalArgumentException
AffineTransformation#eqals
(logic
bug)
CoordinateList#closeRing
(cloning
closing Coordinate)
Geometry.reverse()
method for all
geometry types
setSrsName
, setNamespace
, setCustomRootElements
methods to GMLWriter
Envelope.getArea
method
copy
, copyCoord
methods to
CoordinateSequences
area
method to Envelope
extractPoint(pt, offset)
methods to LengthIndexedLine
and LocationIndexedLine
CoordinatePrecisionReducerFilter
UnaryUnionOp(Collection,
GeometryFactory)
constructor to handle empty inputs more
automatically
DiscreteHausdorffDistance
class
LineMerger
able to be called
incrementally
GeometricShapeFactory.createArcPolygon
to create a polygonal arc
Geometry.buffer()
to preserve SRID
EdgeList
(by using a
more efficient technique for detecting duplicate edges)
ByteArrayInStream
(by
avoiding use of java.io.ByteArrayInputStream
)
HCoordinate
to avoid object allocation
IsValidOp
by
switching to use STRtree
for nested hole checking
Geometry.getClassSortIndex()
to lazily
initialize the sorted class list. This fixes a threading bug.
RectangleContains
to return correct
result for points on the boundary of the rectangle
com.vividsolutions.jts.simplify.LineSegmentIndex
which caused polygons simplified using TopologyPreservingSimplifier
to be invalid in certain situations
DouglasPeuckerSimplifier
which
caused empty polygons to be returned when they contained a very
small hole
PackedCoordinateSequence
to return NaN
for null ordinate values
Geometry.centroid()
(CentroidArea
)
so that it handles degenerate (zero-area) polygons
Geometry.buffer()
(OffsetCurveBuilder
)
so that it handles JOIN_MITRE cases with nearly collinear lines
correctly
GeometryFactory.toGeometry(Envelope)
to
return a CW polygon
UnaryUnionOp
to correctly handle
heterogeneous inputs with P/L/A components
UnaryUnionOp
to accept LINEARRING
s
CentroidArea
to handle zero-area
polygons correctly
WKBWriter
to always output 3D when
requested, and to handle 2D PackedCoordinateSequences
correctly in this case
NodedSegmentString
to handle zero-length
line segments correctly (via safeOctant
)
CGAlgorithms
objects
GeometricShapeFactory.createArc
to
ensure arc has requested number of vertices
GMLWriter
to not write the srsName
attribute by default
DistanceOp
switched to using nearestPoints
method names
STRtree.getRoot()
method
-testCaseIndex
command-line option
Polygonal
, Lineal
, Puntal
tag interfaces to better categorize geometry classes
Geometry.union()
method, UnaryUnionOp
class for efficient unioning of geometrys
Triangle.area3D
method
LineSegment.pointAlongOffset
method
LineSegment.orientationIndex(Coordinate)
method
PreparedGeometry
classes and methods to
optimize some geometry functions in batch situations
Envelope.covers
methods, for preciseness
OctagonalEnvelope
class
CGAlgorithms.isPointInRing
method to
handle case where point lies on the ring
CGAlgorithms.locatePointInRing
method
PointInAreaLocator
interface, enhanced SimplePointInAreaLocator
to extend this
RayCrossingCounter
, IndexedPointInAreaLocator
classes for more efficient Point-In-Polygon testing
GeometryCombiner
class
BufferOp
with join styles
WKTReader
to accept any case for NaN
number symbols
WKTFileReader
class
CoordinateList
constructors
CascadedPolygonUnion
class
LinearLocation.isOnSameSegment
method
LinearLocation.getSegment
method
LocationIndexedLine.indexOfAfter
method
AffineTransformation
GeometricShapeFactory
to be subclassed
to add new shapes
SineStarFactory
(primarily to support
testing)
SortedPackedIntervalRTree
class
SegmentSetMutualIntersector
interface
and implementations
Node.remove(DirectedEdge)
method in planargraph
package
SimplePointInAreaLocator
(by checking ring envelopes as a filter)
Geometry.buffer
operation fixed to always
return polygonal geometries
Geometry.buffer(distance,
quadrantSegs)
causing failure for some cases with quadrantSegs
= 1
GeometryFactory.toGeometry(Envelope)
which was returning invalid Polygons for "linear" envelopes
MonotoneChainBuilder
which caused
failures in situations with segments of zero length
PointLocator
to handle locating in Point
geometries
GeometricShapeFactory
to always use
provided PrecisionModel
LinearLocation.clone
method
LinearLocation.isValid
method
Polygonizer
to accept single-point
linestrings (which are ignored)
RobustCGAlgorithms
BufferOp
cap style constants (these
are now provided in BufferParameters
)
SIRPointInRing
BufferValidatedGeometryOperation
resultMatcher
parameter in XML files
BufferResultMatcher
Angle
class
Triangle
class
LineSegment.midPoint
method
WKTWriter
setFormatted
, setTab
, setMaxCoordinatesPerLine
methods to WKTWriter
BoundaryNodeRule
classes, and ability to
specify a Boundary Node Rule in RelateOp
, IsSimpleOp
,
BoundaryOp
IsSimpleOp
BoundaryOp
with improved algorithm for
lineal geometries. Changed lineal Geometry classes to use it.
Geometry
overlay methods to accept
empty GeometryCollections.
WKTReader
CoordinateSequenceFilter
AffineTransformation
and AffineTransformationBuilder
IsSimpleOp
(required to
support returning failure location)
GeometryFactory.buildGeometry
causing failure if input contained all GeometryCollections of the
same subclass
PolygonBuilder
RobustLineIntersector
in certain cases where segment endpoints intersect
TestRunner
WKBReader
CoordinateArrays.ptNotInList
.
Changed polygonize.EdgeRing
to used corrected code.
ScaledNoder
OraWriter
EdgeNode
WKBReader
and WKBWriter
TopologyValidationError
(thanks to Markus Gebhard)
PointLocator
fix for LinearRings
Geometry.isValid
and IsValidOp
causing some valid polygons to be reported as having a Disconnected
Interior (specifically, polygons containing holes touching at a
single point, where the point is the highest point in the hole
rings, and where the holes have a specific orientation)
Polygon.isRectangle
, which
reported some valid rectangles as false
Geometry#withinDistance
(via short-circuiting)
JTSVersion
class to provide access to
the API version information
covers
and coveredBy
predicates to Geometry
Geometry#buffer(distance, quadSegs,
endCapStyle)
method to expose buffer end cap styles
LineString#reverse
and MultiLineString#reverse
methods
centre
, intersection
, translate
,
expandBy(distance)
, expandBy(dx, dy)
methods to Envelope
CollectionUtil
class for performing
operations over collections
CoordinateArrays
comparators
CoordinateSequence#getDimension
toPoint
and toLineString
to WKTWriter
WKBReader
and WKBWriter
classes in com.vividsolutions.jts.io
WKTReader
has better handling of numeric
parsing, including support for scientific notation
IsValidOp#setSelfTouchingRingFormingHoleValid
to allow validating SDE-style polygons
IsValidOp
com.vividsolutions.jts.linearref
LineSequencer
class to com.vividsolutions.jts.operation.linemerge
Subgraph
class to com.vividsolutions.jts.planargraph
isRemoved
method to GraphComponent
ConnectedSubgraphFinder
class to com.vividsolutions.jts.planargraph.algorithm
setVisited
, getComponentWithVisitedState
,
setVisited
, getComponentWithVisitedState
methods to com.vividsolutions.jts.planargraph.GraphComponent
com.vividsolutions.jts.noding.snapround
STRtree#query(Envelope, ItemVisitor)
method
Debug#toLine
methods
ConvexHull(Coordinate[])
constructor
WKTWriter
to force
a leading 0 in decimal numbers
CoordinateArraySequence#setOrdinate
IsValidOp#checkHolesInShell
)
RobustLineIntersector
CoordinateList.clone
(thanks to
Matthias Bobzien)
Envelope.equals
(thanks to John
Cartwright)
PointLocator
for LinearRings
SpatiaIndex#query(Envelope, ItemVisitor)
method signature
CoordinateSequence#getDimension()
method
signature
GeometryEditor.CoordinateOperation#edit(Geometry,
GeometryFactory)
method as final
, to prevent
incorrect use
CoordinateArraySequence
instead of DefaultCoordinateSequence
(to provide a
more descriptive name).
Debug
methods by
setting a system property
getNumGeometries
and getGeometryN
methods to Geometry class, to make API more uniform
CoordinateSequence
allows
more options for improving memory usage and handling custom
coordinate storage methods
PackedCoordinateSequence
to provide
reduced memory footprint for geometry objects if desired
Geometry#within()
short
circuiting
Geometry#isValid
to throw
IllegalArgumentException for certain kinds of holes with invalid
rings
Polygon#getBoundary
now returns a LinearRing
if the polygon does not have holes
CoordinateSequenceFactory
This version is upwards compatible with Version 1.4
CGAlgorithms#isCCW
now handles coordinate
lists with repeated points. Also throws an IllegalArgumentException
if the input ring does not have 3 distinct points
isValid
now checks for invalid coordinates
(e.g. ones with Nan or infinite numbers)
CoordinateArrays
DouglasPeuckerSimplifier
and TopologyPreservingSimplifier
Quadtree
and STRtree
to remove items and query using the Visitor pattern
Geometry
serialization
ValidOp
which reported some
MultiPolygons with shells nested inside a hole as invalid
Polygonizer
which caused
exception if no lines were supplied
CGAlgorithms
class
CoordinateArrays
class
com.vividsolutions.jtsexamples
package
Baseline version