Just passing this along to GeoMason users since GeoMason relies heavily on JTS. You might want this version given its bug fixes. In any case, I'll be updating the GeoMason site in a bit to reflect the advent of JTS 1.13.
---------- Forwarded message ----------
From:
Martin Davis <[log in to unmask]>Date: Thu, Dec 13, 2012 at 12:10 PM
Subject: [Jts-topo-suite-user] JTS 1.13 released
To: "
[log in to unmask]" <
[log in to unmask]>
I'm happy to announce that JTS 1.13 has been released and is now
available for download from SourceForge at
http://sourceforge.net/projects/jts-topo-suite/
There are many new features, improvements and bug fixes in this
release. The full list is:
Functionality Improvements
- Changed GeometryFactory.createGeometry() to make a
deep copy of the argument Geometry,
using the CoordinateSequenceFactory of the factory
- Added ability to specify a dimension in CoordinateArraySequence
- Changed Geometry.getEnvelopeInternal() to return a
copy of the cached envelope, to prevent modification
- Added GeometryEditor.CoordinateSequenceOperation to
allow easy editing of constituent CoordinateSequences
- Added 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
- Added RectangleLineIntersector to provide efficient
rectangle-line intersection testing
- Added getOrdinate and setOrdinate to Coordinate
- Quadtree is Serializable
- STRtree is Serializable
- Added max, average and wrap
functions to MathUtil
- Improved WKTReader parse error reporting to report
input line of error
- Improved
WKBReader
to repair
structurally-invalid input
- Made TopologyPreservingSimplifier thread-safe
- Added AbstractSTRtree.isEmpty() method
- Added QuadTree.isEmpty() method
- Added KdTree.isEmpty() method
- Added decimation and duplicate point removal to ShapeWriter.
- ScaledNoder now preserves Z values of input
- Added instance methods for all Triangle
static methods
- Added CGAlgorithmsDD containing high-precision
versions of some basic CG algorithms
- Added IntersectionMatrix.isTrue() method for testing
IM pattern matches
- Added
getRawCoordinates
methods to PackedCoordinateSequence
concrete classes
- Modified
Geometry.isSimple()
to explicity check
for simplicity for all types,
and support GeometryCollections
- Improved
MCIndexSnapRounder
to add nodes only
where they are necessary
- Added
CoordinateArrays.removeNull()
method
- Enhanced
GeometryEditor
to handle null
geometries returned from operation
- Added
WKBHExFileReader
- Added
Distance3D
operation
Performance Improvements
- Simplified & improved performance of RectangleIntersects
by using new RectangleLineIntersector
- In RandomPointsInGridBuilder eliminated redundant ArrayList
usage
- In PreparedPolygonIntersects and PreparedLineStringIntersects
added check
to avoid creating segment index if all test inputs are points
- In AbstractSTRtree switched to using indexed list
access for better performance than using iterators
- In AbstractSTRtree freed inserted item array after
index is built
- Improved performance of Polygonizer for cases with
many potential holes
- Improved performance for some DD methods by making
them final
- Added fast filter for CGAlgorithmsDD.orientationIndex,
and switched to self-operations for DD determinant
- Changed
STRtree.createNode()
to use a static
class for nodes
- Changed
QuadTree Node
to use scalar x and y
variables rather than a Coordinate
to reduce
memory allocation
- Fixed
PreparedGeometry
concrete classes to be
thread-safe.
- Fixed
SortedPackedIntervalRTree
so that it is
thread-safe.
Robustness Improvements
- Switched to using DD extended-precision arithmetic to compute
orientation predicate
CGAlgorithms.distanceLineLine()
improved to be
more robust and performant
- Fixed robustness issue causing Empty Stack failure
in ConvexHull for some nearly collinear inputs
- CGAlgorithms.signedArea() uses a more accurate
algorithm
Bug Fixes
- Fixed Geometry.equalsExact() to avoid NPE when
comparing empty and non-empty Points
- Fixed CascadedPolygonUnion to discard non-polygonal
components created during unioning,
to avoid failures and provide more desirable behaviour
- Fixed CentralEndpointIntersector to initialize
result correctly
- Fixed DelaunayTriangulationBuilder.extractUniqueCoordinates(Geometry)
to avoid mutating the vertex order of the input Geometry
- Fixed ConformingDelaunayTriangulationBuilder to
allow
non-disjoint site and constraint vertex sets
- Fixed RandomPointsInGridBuilder point generation to
use circle constraint correctly
- Fixed Linear Referencing API to handle MultiLineStrings
consistently,
by always using the lowest possible index value, and by trimming
zero-length components from results
- Fixed bug in 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
- Fixed bug in STRtree.query(Envelope, ItemVisitor)
causing an NPE when tree is empty
- Fixed issue with creating zero-length edges during buffer
topology building under fixed precision, by:
adding filter to remove zero-length edges;
using a better estimate of scale factor for reducing to fixed
precision after initial failure.
- Fixed TopologyPreservingSimplifier to return a valid
result
for closed LineStrings with large distance tolerances
- Fixed TopologyPreservingSimplifier to return an
empty result for an empty input
- Fixed DouglasPeuckerSimplifier to return an empty
result for an empty input
- Fixed MinimumBoundingCircle to correctly compute
circle for obtuse triangles.
- Fixd GeometryPrecisionReducer to use input
GeometryFactory when polygon topology is fixed
- Fixed GeometryNoder bug that was failing to snap to
end vertices of lines
- Fixed Geometry.getCentroid() and Geometry.getInteriorPoint()
to return POINT EMPTY for empty inputs
- Fixed DelaunayTriangulationBuilder to correctly
extract unique points
- Fixed KdTree to correctly handle inserting duplicate
points into an empty tree
- Fixed LineSegment.projectionFactor() to handle
zero-length lines (by returning Double.POSITIVE_INFINITY)
- Fixed LocationIndexedLine to handle locations on
zero-length lines
- Fixed
LengthIndexedLine
and LocationIndexedLine
to handle indexOfAfter()
correctly
- Fixed
WKBReader
to handle successive geometrys
with different endianness
- Fixed
GeometricShapeFactory
to correctly handle
setting the centre point
- Fixed
GeometryFactory.createMultiPoint(CoordinateSequence)
to handle sequences of dimension > 3
API Changes
- Changed visibility of TaggedLineStringSimplifier
back to public due to user demand
Testing
- Added Performance Testing framework (PerformanceTestRunner
and PerformanceTestCase)
- Added named predicate tests to all Relate test cases
Contributors
- Peter Hopfgartner - improved area computation
- Michael Michaud - snap-rounding improvements
JTS TestBuilder
Functionality Improvements
- Added segment index visualization styling
- Improved Geometry Inspector
- Added stream digitizing for Polygon and LineString tools
- Added output of Test Case XML with WKB
- Added Extract Component tool
- Added Delete Vertices Or Components tool
- Added Geometry Edit Panel pop-up menu, with operations
- Added Halton sequence functions
- Added sorting functions
- Added function for selection of first N components
- Added CGAlgorithms functions
- Added ability to paste and load multiple WKBHex geometries
Performance Improvements
- Using decimation substantially improves rendering time for
large geometries.
Bug Fixes
- Fixed bug in saving XML test files
------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d_______________________________________________
Jts-topo-suite-user mailing list
[log in to unmask]
https://lists.sourceforge.net/lists/listinfo/jts-topo-suite-user