Jts Versions Save

The JTS Topology Suite is a Java library for creating and manipulating vector geometry.

1.19.0

1 year ago

Release Date: 06/21/2022

New Features

  • Add ConstrainedDelaunayTriangulator and PolygonTriangulator (#775, #862)
  • Add Tri data structure for representing triangulations (#775)
  • Add DiscreteFrechetDistance (#764, #783)
  • Add OffsetCurve class (#810, #816)
  • Add ConcaveHull class for points (#823, #829)
  • Add ConcaveHullOfPolygons class (#870)
  • Add PolygonHullSimplifier class (#861, #880)
  • TWKB read and write implementation (#854)

Functionality Improvements

  • Improve GeometryFixer behaviour for holes outside polygons (#772)
  • Simplify and fix logic of BufferParameters.setQuadSegs (#778)
  • Improve KdTree query code to avoid recursion (#779)
  • Add KdTree seeding toSnappingNoder (#780)
  • Add GeometryFixer option to preserve Multi geometry types when collapses occur (#791)
  • Make QuadTree thread-safe (#792)
  • Allow specifying a fixed PrecisionModel via grid size (#804)
  • Improve Densifier to interpolate Z values (#835)
  • Add support for GeoJSON Feature and FeatureCollection types (#837)
  • Add WKTReader.setFixStructure to fix WKT input (#848)
  • Improve LineSegment.hashCode to reduce collisions (#872)

Performance Improvements

  • Improve performance of CoveageUnion by using boundary chains (#891)

Bug Fixes

  • Fix WKTReader geometry typename parsing (#786)
  • Fix CoordinateArrays.reverse to handle zero-length arrays #787
  • Fix GeometryFixer to appply isKeepCollapsed flag to GeometryCollection elements (#790)
  • Fix RectangleIntersects to handle XYZM geometry (#794)
  • Fix various operations to handle XYZM geometry (#795)
  • Fix SnapRoundingNoder to use tolerance in noding (also fixes GeometryPrecisionReducer) (#802)
  • Fix MaximumInscribedCircle to avoid infinite-looping on flat collapsed input (#807)
  • Add OverlayNG result area heuristic check (#812)
  • Fix the buffers generated for mitred joins (#818)
  • Fix WKTReader to produce correct XY coordinate dimension for POLYGON EMPTY (#828)
  • Fix RelateOp for a snapped line boundary point (#839)
  • Fix IsValidOp for repeated node points (#845)
  • Fix IsSimpleOp for repeated endpoints (#851)
  • Fix GeometryFixer via noding check for zero-distance buffers (#867)
  • Fix MinimumDiameter.minimumRectangle for flat inputs (#875)
  • Fix BufferOp inverted ring check optimization (#878)
  • Fix STRtree nearest-neighbour queries on empty trees to avoid NPE (#886)
  • Remove transitive compile dependency on junit from jts-io-commmon (#855)

jts-1.18.2

2 years ago

Version 1.18.2

Release Date: 08/27/2021

API Changes

  • Move IsSimpleOp to org.locationtech.jts.operation.valid package (#717)

Functionality Improvements

  • Add GeometryFixer class (#704)
  • Improve design and performance of IsSimpleOp (#717, #754)
  • Improve design and perforance of IsValidOp (#743, #748, #755, #756, #757)
  • Fix SortedPackedIntervalRtree to be thread-safe (fixes PreparedPolygon too) (#746)

Bug Fixes

  • Fix InteriorPoint to handle partially-empty collections (#698)
  • Fix MultiPoint.isValid to check validity correctly (#700)
  • Fix WKTReader and WKTWriter handling of collections with all empty elements (#702)
  • Fix HalfEdge.prev() method (#703)
  • Fix BufferOp to remove invalid elements caused by inverted ring curves (#706)
  • Fix IsSimpleOp duplicate lines bug (#716)
  • Fix Angle.interiorAngle to produce interior angle correctly (#721)
  • Fix IsValidOp to correctly report invalidity for certain kinds of LinearRings (#737)
  • Fix GeometryPrecisionReducer to support the "keep collapsed components" semantics (#738)
  • Fix VoronoiDiagramBuilder to respect user-provided clip envelope (#740)

jts-1.18.1

3 years ago

Version 1.18.1

Release Date: 02/26/2021

Functionality Improvements

  • Check for invalid polygonal geometry before fixing in DouglasPeuckerSimplifier, VWSimplifier, Densifier (#656)
  • Add Coordinate and subclasses create() methods (#637)
  • Ensure OverlayNG input line order is preserved (#665)
  • Add UnaryUnionNG functions that accept Collections (#669 and #670)
  • Switch to using compact-SRID WKB format (#664)
  • Improve WKBReader error checking (#675)
  • Improve Densifier splitting algorithm to create longer segments (#677)
  • Allow constructing invalid Polygons and LinearRings with only 3 vertices (#682)
  • Ensure invalid 3-point polygons and rings are handled correctly (#683)
  • Fix GeoJSONReader to parse null and empty coordinates as empty geometry (#687)
  • Fix GeoJSONWriter to emit empty coordinates array for empty point and linestring (#688)
  • Add MaximumInscribedCircle check for invalid tolerance, to avoid infinite loops (#696)
  • Add GeoJsonWriter.setForceCCW method to emit polygons with CCW orientation, as per GeoJSON specification (#694)

Bug Fixes

  • Ensure Densifier creates Coordinates with same class as input (#637)
  • Fix Relate for cases with closed linear geometry and empty geometry (#671)
  • Fix Densifier to avoid splitting segments with length equal to distance tolerance (#676)
  • Fix Geometry.compareTo to test polygon holes (#678)
  • Fix OverlayNG handling of polygons with interior flat lines (#685)
  • Fix Polygonizer to avoid NPE on invalid input (#692)

WKBDump

  • Added utility to dump out formatted WKB (#673)

jts-1.18.0

3 years ago

Version 1.18.0

Release Date: 12/23/2020

API Changes

  • GeometryPrecisionReducer is less tolerant of invalid input (but also avoids failing on some valid ones) (#648)
  • Moved Position and Quadrant to org.locationtech.jts.geom package
  • Removed SimpleSnapRounder - use SnapRoundingNoder instead
  • Deprecated MCIndexSnapRounder - use SnapRoundingNoder instead

Functionality Improvements

  • Improve Orientation.isCCW to handle flat topology collapse (#588)
  • Add KMLReader (#593)
  • Add Densifier.setValidated method to allow disabling expensive polygon validation (#595)
  • Add OverlayNG codebase (#599)
  • Add Z support in OverlayNG (#645)
  • Add system property jts.overlay=ng to enable use of OverlayNG in Geometry methods (#615)
  • Add SnapRoundingNoder (#599)
  • Add SnappingNoder (#599)
  • Change GeometryPrecisionReducer to use OverlayNG with Snap-Rounding
  • Change GeometryNoder to use SnapRoundingNoder
  • Add KdTree size and depth methods (#603)
  • Improve WKBWriter to write empty Polygons using a more compact representation (#623)
  • Support read and initialize internal structure of STRtree and Quadtree (#634)
  • Improve GeometryPrecisionReducer to handle GeometryCollections (#648)
  • Add Orientation.isCCWArea (#655)

Performance Improvements

  • Improve performance of UnaryUnionOp by removing OverlayUnion optimization (#644)

Bug Fixes

  • Fix RayCrossingCounter to handle XYZM coordinates (#589)
  • Fix PackedCoordinateSequence to always use XYZM coordinates when dimension is 4 (#591)
  • Fix OrdinateFormat to work around a JDK issue with the minus sign character in Locale.NO (#596)
  • Fix GeoJsonReader to throw a ParseException for empty arrays (#600)
  • Fix WKTFileReader handling of files with large amount of whitespace (#616)
  • Fix WKBWriter to output 3D empty Points with 3 ordinates (#622)
  • Fix Geometry.reverse to handle all geometry structures (#628)
  • Fix GeometryPrecisionReducer to avoid silently mangling input (#648)
  • Fix Geometry.buffer to avoid dropping large polygon areas in some situations (#655)
    • also fixes DouglasPeuckerSimplifier (#498)

JTS TestBuilder

Functionality Improvements

  • Add Geometry Inspector sorting by Area or Length

jts-1.17.1

3 years ago

Version 1.17.1

Release Date: August 27, 2020

Java Version: 1.8

Functionality Improvements

  • Add WKBReader and WKBWriter support for POINT EMPTY (#567)

Performance Improvements

  • Improve performance of PreparedPolygon covers and contains for point inputs (#577)

Bug Fixes

  • Fix IndexedPointInAreaLocator thread-safety (#572)
  • Fix WKTReader to handle MultiPoints containing EMPTY (#575)
  • Fix API compile regression by removing deprecation on geometry reverse methods (#582)

JTS TestBuilder

Functionality Improvements

  • Add per-Layer palette control for Strokes and Fills

JTS TestRunner

Functionality Improvements

  • Enhance -geomfunc to load multiple function classes
  • Fix function registry to replace matching loaded functions (#569)

1.17.0

3 years ago

Java Version: 1.8

API Changes

  • Change Polygon getExteriorRing and getInteriorRingN accessors to return LinearRing.
    • This is a binary incompatible change to the method signature. Recompilation is necessary. No source code changes are required.

Functionality Improvements

  • Added IndexedFacetDistance.isWithinDistance
  • Added OrdinateFormat to ensure that ordinate text output is accurate and consistent
  • Added Triangle.circumcentreDD
  • Added DD.determinant methods
  • Added Envelope methods getDiameter, copy, disjoint (#483)
  • Added Intersection class, refactored library to use it (#468)
  • Added CascadedPolygonUnion union-by-buffer on error capability (#470)
  • Added HalfEdge support for direction points (#479)
  • Added CoordinateList.toCoordinateArray(isForward) (#482)
  • Addded HPRtree Hilbert Packed R-tree (#494)
  • Added VariableBuffer class for computing varying-distance buffers (#495)
  • Added LineSegment.reflect method (#495)
  • Added MaximumInscribedCircle algorithm (#530)
  • Added LargestEmptyCircle algorithm (#530)

Performance Improvements

  • Improve performance of UniqueCoordinateFilter (#422)
  • Improve performance of Polygonizer (#431)
  • Avoid use of ArrayList in MonotoneChain builders
  • Add DistanceOp line-line envelope short-circuit optimizations (#534)

Bug Fixes

  • Fix PackedCoordinateSequence.Float construction methods (#379, #381)
  • Fix bug in Quadtree.ensureExtent (#416)
  • Fix bugs in LinearLocation endpoint handling (#421)
  • Fix bug in MinimumBoundingCircle maximum diameter algorithm, and provide method for it
  • Improve robustness of CascadedPolygonUnion by adding OverlapUnion
  • Fix bug in HalfEdge.insert method which caused CCW order not to be preserved in some cases
  • Fix generation of Voronoi diagrams for cases with sites in a square (#447)
  • Fix use of clipping envelope in VoronoiDiagramBuilder
  • Fix infinite loop on empty input in IndexedPointInAreaLocator and SortedPackedIntervalRTree (#462)
  • Fix WKT parsing in Turkish locale (#456)
  • Improve accuracy of LineSegment.lineIntersection (#468)
  • Fix Distance3DOp coordinate ordering (#480)
  • Fix Geometry.reverse() to have consistent behaviour and to copy all fields (#513)
  • Fix MinimumBoundingCircle.farthestPoints to work correctly (#522 and #533)
  • Fix DistanceOp handling of geometry collections with empty components (#524)
  • Fix GML parsing of coordinates and SRS name (#553)

JTS TestBuilder

Functionality Improvements

  • Add a UI to run external commands
  • Allow creating additional view layers
  • Add map view title, legend and border options
  • Support points in Reveal Topology mode
  • Add WKT panel Copy as WKB via Ctl-click

JTS TestRunner

Functionality Improvements

  • Allow test files/dirs to be specified as free args
  • Only load .xml files from directories

JtsOp

  • Added command-line utility to run JTS operations

jts-1.16.1

5 years ago

Functionality Improvements

  • Added HilbertCode and HilbertCurveBuilder.
  • Added MortonCode and MortonCurveBuilder.
  • Improved InteriorPointArea algorithm performance and robustness

Bug Fixes

  • Fix IsValidOp to handle empty components.
  • Fix ShapeWriter to handle Polygons with empty holes.
  • Fix CoordinteArraySequence to duplicate coordinate array if needed (rather than fix in place)

JTS TestBuilder

  • Functionality Improvements

jts-1.16.0

5 years ago

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.

API Changes

  • Added XYZM support to CoordinateSequence and CoordinateSequenceFactory with getDimension() and getMeasures() information.
  • Introduced Coordinate methods for getX(), getY(), getZ(), and getM().
  • Deprecated Coordinate.z field, use Coordinate.getZ()
  • Coordinate subclasses introduced for XY, XYM, XYZM representations.

Functionality Improvements

  • Removed PackedCoordinateSequenceFactory constructor used to supply a default dimension, use appropriate create( size, dimension ) instead.
  • WKTReader and WKTWriter support for measures

Acknowledgments

  • Thanks to Felix Obermaier for testing the release candidate and contributing fixes to the release!

1.16.0-RC1

5 years ago

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.

API Changes

  • Added XYZM support to CoordinateSequence and CoordinateSequenceFactory with getDimension() and getMeasures() information.
  • Introduced Coordinate methods for getX(), getY(), getZ(), and getM().
  • Deprecated Coordinate.z field, use Coordinate.getZ()
  • Coordinate subclasses introduced for XY, XYM, XYZM representations.

Functionality Improvements

  • Removed PackedCoordinateSequenceFactory constructor used to supply a default dimension, use appropriate create( size, dimension ) instead.
  • WKTReader and WKTWriter support for measures

jts-1.15.1

5 years ago

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.

  • Fix Geometry.copy() to copy instance fields

The JTS Team