JTS 1.10 released

JTS 1.10 has been released on SourceForge

Major enhancements in this release include:

* Dramatic improvements to buffer performance, robustness and quality
* Moving the GML I/O classes into the core library, and provided more control over the emitted GML
* numerous bug fixes and performance improvements.

Numerous other enhancements and fixes are included. The full list is:

Functionality Improvements

* Added Geometry.reverse() method for all geometry types
* Added setSrsName, setNamespace, setCustomRootElements methods to
GMLWriter
* Added Envelope.getArea method
* Added copy, copyCoord methods to CoordinateSequences
* Added area method to Envelope
* Added extractPoint(pt, offset) methods to LengthIndexedLine and
LocationIndexedLine
* Added CoordinatePrecisionReducerFilter
* Added UnaryUnionOp(Collection, GeometryFactory) constructor to
handle empty inputs more automatically
* Added DiscreteHausdorffDistance class
* Made LineMerger able to be called incrementally
* Added GeometricShapeFactory.createArcPolygon to create a polygonal
arc
* Enhanced Geometry.buffer() to preserve SRID

Performance Improvements

* Improved performance for |EdgeList| (by using a more efficient
technique for detecting duplicate edges)
* Improved performance for |ByteArrayInStream| (by avoiding use of
java.io.ByteArrayInputStream)
* Unrolled intersection computation in HCoordinate to avoid object
allocation
* Improved performance for buffering via better offset curve
generation and simplification.
* Improved performance for IsValipOp by switching to use STRtree for
nested hole checking

Bug Fixes

* Fixed Geometry.getClassSortIndex() to lazily initialize the sorted
class list. This fixes a threading bug.
* Fixed RectangleContains to return correct result for points on the
boundary of the rectangle
* Fixed error in com.vividsolutions.jts.simplify.LineSegmentIndex
which caused polygons simplified using
TopologyPreservingSimplifier to be invalid in certain situations
* Fixed error in DouglasPeuckerSimplifier which caused empty
polygons to be returned when they contained a very small hole
* Fixed PackedCoordinateSequence to return NaN for null ordinate values
* Fixed Geometry.centroid() (CentroidArea) so that it handles
degenerate (zero-area) polygons
* Fixed Geometry.buffer() (OffsetCurveBuilder) so that it handles
JOIN_MITRE cases with nearly collinear lines correctly
* Fixed GeometryFactory.toGeometry(Envelope) to return a CW polygon
* Fixed UnaryUnionOp to correctly handle heterogeneous inputs with
P/L/A components
* Fixed UnaryUnionOp to accept LINEARRINGs
* Fixed CentroidArea to handle zero-area polygons correctly
* Fixed WKBWriter to always output 3D when requested, and to handle
2D PackedCoordinateSequences correctly in this case
* Fixed NodedSegmentString to handle zero-length line segments
correctly (via safeOctant)
* Cleaned up code to remove unneeded CGAlgorithms objects
* Fixed GeometricShapeFactory.createArc to ensure arc has requested
number of vertices

API Changes

* Moved GML I/O classes into core JTS codebase
* Changed GMLWriter to not write the srsName attribute by default
* In DistanceOp switched to using nearestPoints method names
* Exposed STRtree.getRoot() method

------------------------------------------------------------------------

JTS TestBuilder

UI Improvements

* Added ability to read GML from input panel
* Added GML output to View dialog
* Added file drag'n'drop to Geometry Input text areas
* Add display of computation time
* Added Stats panel
* Added Scalar functions panel, with extensible function list
* Added *Save as PNG...*

------------------------------------------------------------------------

JTS TestRunner

Functionality Improvements

* Added -testCaseIndex command-line option

Posted by Dr JTS 2009-01-05