JTS 1.9 Released

JTS 1.9 has been released on SourceForge

Major enhancements in this release include:
- PreparedGeometry for improved spatial predicate performance
- Geometry unaryUnion() functionality
- New functions, improved UI and rendering in the TestBuilder

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

//

Functionality Improvements

* Added Polygonal, Lineal, Puntal tag interfaces to better
categorize geometry classes
* Added Geometry.union() method, UnaryUnionOp class for efficient
unioning of geometrys
* Added Triangle.area3D method
* Added LineSegment.pointAlongOffset method
* Added LineSegment.orientationIndex(Coordinate) method
* Added PreparedGeometry classes and methods to optimize some
geometry functions in batch situations
* Added Envelope.covers methods, for preciseness
* Added OctagonalEnvelope class
* Improved CGAlgorithms.isPointInRing method to handle case where
point lies on the ring
* Added CGAlgorithms.locatePointInRing method
* Added PointInAreaLocator interface, enhanced
SimplePointInAreaLocator to extend this
* Added RayCrossingCounter, IndexedPointInAreaLocator classes for
more efficient Point-In-Polygon testing
* Added GeometryCombiner class
* Enhanced BufferOp with join styles
* Enhanced WKTReader to accept any case for NaN number symbols
* Added WKTFileReader class
* Improved performance of CoordinateList constructors
* Added CascadedPolygonUnion class
* Added LinearLocation.isOnSameSegment method
* Added LinearLocation.getSegment method
* Added LocationIndexedLine.indexOfAfter method
* Added interpolation of Z value to linear referencing methods
* Added methods to rotate around a given point to AffineTransformation
* Allowed GeometricShapeFactory to be subclassed to add new shapes
* Added SineStarFactory (primarily to support testing)
* Added SortedPackedIntervalRTree class
* Added SegmentSetMutualIntersector interface and implementations
* Added Node.remove(DirectedEdge) method in planargraph package

Performance Improvements

* Improved performance for |SimplePointInAreaLocator| (by checking
ring envelopes as a filter)

Bug Fixes

* Geometry.buffer operation fixed to always return polygonal geometries
* Fixed bug in |Geometry.buffer(distance, quadrantSegs)| causing
failure for some cases with quadrantSegs = 1
* Fixed bug in GeometryFactory.toGeometry(Envelope) which was
returning invalid Polygons for "linear" envelopes
* Fixed bug in MonotoneChainBuilder which caused failures in
situations with segments of zero length
* Fixed PointLocator to handle locating in Point geometries
* Fixed GeometricShapeFactory to always use provided PrecisionModel
* Fixed LinearLocation.clone method
* Fixed LinearLocation.isValid method
* Fixed Polygonizer to accept single-point linestrings (which are
ignored)

API Changes

* Deprecated |RobustCGAlgorithms|
* Deprecated |BufferOp| cap style constants (these are now provided
in BufferParameters)
* Removed |SIRPointInRing|

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

JTS TestRunner

New Features

* Added ability to specify GeometryOperation in XML file
* Added BufferValidatedGeometryOperation
* Added ability to specify custom result matching via resultMatcher
parameter in XML files
* Added BufferResultMatcher

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

JTS TestBuilder

UI Improvements

* Improved rendering of geometries
* Improved symbology for orientation
* Simplified Geometry creation
* Improved vertex move/add
* Added tooltip for coordinate location
* Added more geometry functions
* Added Copy Result to Test button

Code Improvements

* Restructured code for more flexibility, better Swing functionality
* Made it easier to add geometry functions

Posted by Dr JTS 2008-01-03