The JTS Topology Suite is a Java library for creating and manipulating vector geometry.
Release Date: 06/21/2022
ConstrainedDelaunayTriangulator
and PolygonTriangulator
(#775, #862)Tri
data structure for representing triangulations (#775)DiscreteFrechetDistance
(#764, #783)OffsetCurve
class (#810, #816)ConcaveHull
class for points (#823, #829)ConcaveHullOfPolygons
class (#870)PolygonHullSimplifier
class (#861, #880)GeometryFixer
behaviour for holes outside polygons (#772)BufferParameters.setQuadSegs
(#778)KdTree
query code to avoid recursion (#779)KdTree
seeding toSnappingNoder
(#780)GeometryFixer
option to preserve Multi
geometry types when collapses occur (#791)QuadTree
thread-safe (#792)PrecisionModel
via grid size (#804)Densifier
to interpolate Z values (#835)Feature
and FeatureCollection
types (#837)WKTReader.setFixStructure
to fix WKT input (#848)LineSegment.hashCode
to reduce collisions (#872)CoveageUnion
by using boundary chains (#891)WKTReader
geometry typename parsing (#786)CoordinateArrays.reverse
to handle zero-length arrays #787GeometryFixer
to appply isKeepCollapsed
flag to GeometryCollection
elements (#790)RectangleIntersects
to handle XYZM geometry (#794)SnapRoundingNoder
to use tolerance in noding (also fixes GeometryPrecisionReducer
) (#802)MaximumInscribedCircle
to avoid infinite-looping on flat collapsed input (#807)OverlayNG
result area heuristic check (#812)WKTReader
to produce correct XY coordinate dimension for POLYGON EMPTY (#828)RelateOp
for a snapped line boundary point (#839)IsSimpleOp
for repeated endpoints (#851)GeometryFixer
via noding check for zero-distance buffers (#867)MinimumDiameter.minimumRectangle
for flat inputs (#875)BufferOp
inverted ring check optimization (#878)STRtree
nearest-neighbour queries on empty trees to avoid NPE (#886)Release Date: 08/27/2021
IsSimpleOp
to org.locationtech.jts.operation.valid
package (#717)GeometryFixer
class (#704)IsSimpleOp
(#717, #754)IsValidOp
(#743, #748, #755, #756, #757)SortedPackedIntervalRtree
to be thread-safe (fixes PreparedPolygon
too) (#746)InteriorPoint
to handle partially-empty collections (#698)MultiPoint.isValid
to check validity correctly (#700)WKTReader
and WKTWriter
handling of collections with all empty elements (#702)HalfEdge.prev()
method (#703)BufferOp
to remove invalid elements caused by inverted ring curves (#706)IsSimpleOp
duplicate lines bug (#716)Angle.interiorAngle
to produce interior angle correctly (#721)IsValidOp
to correctly report invalidity for certain kinds of LinearRings (#737)GeometryPrecisionReducer
to support the "keep collapsed components" semantics (#738)VoronoiDiagramBuilder
to respect user-provided clip envelope (#740)Release Date: 02/26/2021
DouglasPeuckerSimplifier
, VWSimplifier
, Densifier
(#656)Coordinate
and subclasses create()
methods (#637)UnaryUnionNG
functions that accept Collection
s (#669 and #670)WKBReader
error checking (#675)Densifier
splitting algorithm to create longer segments (#677)Polygon
s and LinearRing
s with only 3 vertices (#682)GeoJSONReader
to parse null and empty coordinates as empty geometry (#687)GeoJSONWriter
to emit empty coordinates array for empty point and linestring (#688)MaximumInscribedCircle
check for invalid tolerance, to avoid infinite loops (#696)GeoJsonWriter.setForceCCW
method to emit polygons with CCW orientation, as per GeoJSON specification (#694)Densifier
creates Coordinate
s with same class as input (#637)Densifier
to avoid splitting segments with length equal to distance tolerance (#676)Geometry.compareTo
to test polygon holes (#678)Polygonizer
to avoid NPE on invalid input (#692)Release Date: 12/23/2020
GeometryPrecisionReducer
is less tolerant of invalid input (but also avoids failing on some valid ones) (#648)Position
and Quadrant
to org.locationtech.jts.geom
packageSimpleSnapRounder
- use SnapRoundingNoder
insteadMCIndexSnapRounder
- use SnapRoundingNoder
insteadKMLReader
(#593)Densifier.setValidated
method to allow disabling expensive polygon validation (#595)OverlayNG
codebase (#599)jts.overlay=ng
to enable use of OverlayNG in Geometry
methods (#615)SnapRoundingNoder
(#599)SnappingNoder
(#599)GeometryPrecisionReducer
to use OverlayNG with Snap-RoundingGeometryNoder
to use SnapRoundingNoder
KdTree
size
and depth
methods (#603)WKBWriter
to write empty Polygons using a more compact representation (#623)STRtree
and Quadtree
(#634)GeometryPrecisionReducer
to handle GeometryCollections (#648)Orientation.isCCWArea
(#655)UnaryUnionOp
by removing OverlayUnion optimization (#644)RayCrossingCounter
to handle XYZM coordinates (#589)PackedCoordinateSequence
to always use XYZM coordinates when dimension is 4 (#591)OrdinateFormat
to work around a JDK issue with the minus sign character in Locale.NO
(#596)GeoJsonReader
to throw a ParseException
for empty arrays (#600)WKTFileReader
handling of files with large amount of whitespace (#616)WKBWriter
to output 3D empty Points with 3 ordinates (#622)Geometry.reverse
to handle all geometry structures (#628)GeometryPrecisionReducer
to avoid silently mangling input (#648)Geometry.buffer
to avoid dropping large polygon areas in some situations (#655)
DouglasPeuckerSimplifier
(#498)Release Date: August 27, 2020
Java Version: 1.8
WKBReader
and WKBWriter
support for POINT EMPTY
(#567)PreparedPolygon
covers
and contains
for point inputs (#577)IndexedPointInAreaLocator
thread-safety (#572)WKTReader
to handle MultiPoints containing EMPTY
(#575)reverse
methods (#582)-geomfunc
to load multiple function classesJava Version: 1.8
Polygon
getExteriorRing
and getInteriorRingN
accessors to return LinearRing
.
IndexedFacetDistance.isWithinDistance
OrdinateFormat
to ensure that ordinate text output is accurate and consistentTriangle.circumcentreDD
DD.determinant
methodsEnvelope
methods getDiameter
, copy
, disjoint
(#483)Intersection
class, refactored library to use it (#468)CascadedPolygonUnion
union-by-buffer on error capability (#470)HalfEdge
support for direction points (#479)CoordinateList.toCoordinateArray(isForward)
(#482)HPRtree
Hilbert Packed R-tree (#494)VariableBuffer
class for computing varying-distance buffers (#495)LineSegment.reflect
method (#495)MaximumInscribedCircle
algorithm (#530)LargestEmptyCircle
algorithm (#530)UniqueCoordinateFilter
(#422)Polygonizer
(#431)ArrayList
in MonotoneChain buildersPackedCoordinateSequence.Float
construction methods (#379, #381)Quadtree.ensureExtent
(#416)LinearLocation
endpoint handling (#421)MinimumBoundingCircle
maximum diameter algorithm, and provide method for itCascadedPolygonUnion
by adding OverlapUnion
HalfEdge.insert
method which caused CCW order not to be preserved in some casesVoronoiDiagramBuilder
IndexedPointInAreaLocator
and SortedPackedIntervalRTree
(#462)LineSegment.lineIntersection
(#468)Distance3DOp
coordinate ordering (#480)Geometry.reverse()
to have consistent behaviour and to copy all fields (#513)MinimumBoundingCircle.farthestPoints
to work correctly (#522 and #533)DistanceOp
handling of geometry collections with empty components (#524).xml
files from directoriesHilbertCode
and HilbertCurveBuilder
.MortonCode
and MortonCurveBuilder
.InteriorPointArea
algorithm performance and robustnessIsValidOp
to handle empty components.ShapeWriter
to handle Polygons with empty holes.CoordinteArraySequence
to duplicate coordinate array if needed (rather than fix in place)The JTS team is pleased to share the JTS 1.16.0 release.
If anyone finds issues with this release, please post them to our mailing list or as issues on the JTS GitHub site.
CoordinateSequence
and CoordinateSequenceFactory
with getDimension()
and getMeasures()
information.Coordinate
methods for getX()
, getY()
, getZ()
, and getM()
.Coordinate.z
field, use Coordinate.getZ()
Coordinate
subclasses introduced for XY, XYM, XYZM representations.PackedCoordinateSequenceFactory
constructor used to supply a default dimension, use appropriate create( size, dimension )
instead.The JTS team is pleased to share the release candidate JTS 1.16.0-RC1.
If anyone finds issues with this release, please post them to our mailing list or as issues on the JTS GitHub site.
CoordinateSequence
and CoordinateSequenceFactory
with getDimension()
and getMeasures()
information.Coordinate
methods for getX()
, getY()
, getZ()
, and getM()
.Coordinate.z
field, use Coordinate.getZ()
Coordinate
subclasses introduced for XY, XYM, XYZM representations.PackedCoordinateSequenceFactory
constructor used to supply a default dimension, use appropriate create( size, dimension )
instead.The JTS team is proud to announce the release of JTS 1.15.1.
Thanks to everyone on the JTS team, and all the developers and users who contributed code and ideas for making this happen!
If anyone finds issues with this release, please post them to our mailing list or as issues on the JTS GitHub site.
The JTS Team