PageRenderTime 65ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/jts/doc/JTS Version History.html

https://bitbucket.org/mayastudios_3rdparty/jts-src
HTML | 1003 lines | 859 code | 119 blank | 25 comment | 0 complexity | a18b77b384821ff1e6bf3a5d12de733d MD5 | raw file
Possible License(s): LGPL-2.1
  1. <html>
  2. <head>
  3. <title>JTS Version History</title>
  4. </head>
  5. <body bgcolor='#DFF0FF'>
  6. <h1 style='text-align:center; color:darkblue;'>
  7. JTS TOPOLOGY SUITE
  8. <br>
  9. <i>Version History</i>
  10. </h1>
  11. This document lists the change history of release versions of the
  12. <span style='color:darkblue;'><b>JTS Topology Suite</b></span>.
  13. <p>
  14. Further information on JTS can be found at <b>Tsusiat Software's
  15. <a href='http://tsusiatsoftware.net/jts/main.html'>JTS pages</a></b>.
  16. <p>
  17. The current and archived JTS distributions can be obtained at the
  18. <a href='http://sourceforge.net/projects/jts-topo-suite/'><b>SourceForge JTS site</b></a>.
  19. <!-- ================================================================ -->
  20. <hr size='4' color='darkblue'>
  21. <h2>Version 1.13</h2>
  22. <i>Release Date: ????</i>
  23. <h3>Functionality Improvements</h3>
  24. <ul>
  25. <li>Changed <tt>GeometryFactory.createGeometry()</tt> to make a deep copy of the arg Geometry,
  26. using the CoordinateSequenceFactory of the factory
  27. <li>Added <tt>GeometryEditor.CoordinateSequenceOperation</tt> to allow easy editing of constituent CoordinateSequences
  28. <li>Added <tt>Geometry.createPolygon</tt> convenience methods
  29. <li>Added <tt>RectangleLineIntersector</tt> to provide efficient rectangle-line intersection testing
  30. <li>Added <tt>getOrdinate</tt> and <tt>setOrdinate</tt> to <tt>Coordinate</tt>
  31. <li><tt>Quadtree</tt> is <tt>Serializable</tt>
  32. <li><tt>STRtree</tt> is <tt>Serializable</tt>
  33. <li>Added <tt>max</tt>, <tt>average</tt> and <tt>wrap</tt> functions to </tt>MathUtil</tt>
  34. <li>Improved <tt>WKTReader</tt> parse error reporting to report input line of error
  35. <li>Made <tt>TopologyPreservingSimplifier</tt> thread-safe
  36. <li>Added <tt>AbstractSTRtree.isEmpty()</tt> method
  37. <li>Added <tt>QuadTree.isEmpty()</tt> method
  38. <li>Added <tt>KdTree.isEmpty()</tt> method
  39. <li>Added decimation and duplicate point removal to </tt>ShapeWriter<tt>.
  40. <li><tt>ScaledNoder</tt> now preserves Z values of input
  41. </ul>
  42. <h3>Performance Improvements</h3>
  43. <ul>
  44. <li>Simplified & improved performance of <tt>RectangleIntersects</tt> by using new <tt>RectangleLineIntersector</tt>
  45. <li>In <tt>RandomPointsInGridBuilder</tt> eliminated redundant <tt>ArrayList</tt> usage
  46. <li>In <tt>PreparedPolygonIntersects</tt> and <tt>PreparedLineStringIntersects</tt> added check
  47. to avoid creating segment index if all test inputs are points
  48. <li>In <tt>AbstractSTRtree</tt> switched to using indexed list access for better performance than using iterators
  49. <li>In <tt>AbstractSTRtree</tt> freed inserted item array after index is built
  50. <li>Added <tt>IntersectionMatrix.isTrue()</tt> method for testing IM pattern matches
  51. </ul>
  52. <h3>Robustness Improvements</h3>
  53. <ul>
  54. <li>Fixed robustness issue causing <tt>Empty Stack</tt> failure
  55. in <tt>ConvexHull</tt> for some nearly collinear inputs
  56. <li><tt>CGAlgorithms.signedArea()</tt> uses a more accurate algorithm
  57. </ul>
  58. <h3>Bug Fixes</h3>
  59. <ul>
  60. <li>Fixed <tt>Geometry.equalsExact()</tt> to avoid NPE when comparing empty and non-empty <tt>Point</tt>s
  61. <li>Fixed <tt>CascadedPolygonUnion</tt> to discard non-polygonal components created during unioning,
  62. to avoid failures and provide more desirable behaviour
  63. <li>Fixed <tt>CentralEndpointIntersector</tt> to initialize result correctly
  64. <li>Fixed <tt>DelaunayTriangulationBuilder.extractUniqueCoordinates(Geometry)</tt>
  65. to avoid mutating the vertex order of the input Geometry
  66. <li>Fixed <tt>ConformingDelaunayTriangulationBuilder</tt> to allow
  67. non-disjoint site and constraint vertex sets
  68. <li>Fixed <tt>RandomPointsInGridBuilder</tt> point generation to use circle constraint correctly
  69. <li>Fixed Linear Referencing API to handle MultiLineStrings consistently,
  70. by always using the lowest possible index value, and by trimming zero-length components from results
  71. <li>Fixed bug in <tt>LocationIndexedLine</tt> and <tt>LengthIndexLine</tt> which was
  72. causing an assertion failure when the indexOfAfter() method was called with a constraint location
  73. which is at the end of the line
  74. <li>Fixed bug in <tt>STRtree.query(Envelope, ItemVisitor)</tt> causing an NPE when tree is empty
  75. <li>Fixed issue with creating zero-length edges during buffer topology building under fixed precision, by:
  76. adding filter to remove zero-length edges;
  77. using a better estimate of scale factor for reducing to fixed precision after initial failure.
  78. <li>Fixed <tt>TopologyPreservingSimplifier</tt> to return a valid result
  79. for closed <tt>LineString</tt>s with large distance tolerances
  80. <li>Fixed <tt>TopologyPreservingSimplifier</tt> to return an empty result for an empty input
  81. <li>Fixed <tt>DouglasPeuckerSimplifier</tt> to return an empty result for an empty input
  82. <li>Fixed bug in <tt>MinimumBoundingCircle</tt> which computed an incorrect circle for obtuse triangles.
  83. </ul>
  84. <h3>API Changes</h3>
  85. <ul>
  86. <li>Changed visibility of <tt>TaggedLineStringSimplifier</tt> back to <tt>public</tt> due to user demand
  87. </ul>
  88. <h3>Testing</h3>
  89. <ul>
  90. <li>Added Performance Testing framework (<tt>PerformanceTestRunner</tt>
  91. and <tt>PerformanceTestCase</tt>)
  92. <li>Added named predicate tests to all Relate test cases
  93. </ul>
  94. <h3>Contributors</h3>
  95. <ul>
  96. <li>Peter Hopfgartner - improved area computation
  97. </ul>
  98. <!------- TestBuilder -------------------->
  99. <hr size='0' color='darkblue'>
  100. <h3 style='font-family:sans-serif; color:darkblue'>JTS TestBuilder</h3>
  101. <h3>Functionality Improvements</h3>
  102. <ul>
  103. <li>Added segment index visualization styling
  104. <li>Improved <b>Geometry Inspector</b>
  105. <li>Added stream digitizing for Polygon and LineString tools
  106. <li>Added output of Test Case XML with WKB
  107. <li>Added Extract Component tool
  108. <li>Added Geometry Edit Panel pop-up menu, with operations
  109. </ul>
  110. <h3>Performance Improvements</h3>
  111. <ul>
  112. <li>Using decimation substantially improves rendering time for large geometries.
  113. </ul>
  114. <!-- ================================================================ -->
  115. <hr size='4' color='darkblue'>
  116. <h2>Version 1.12</h2>
  117. <i>Release Date: June 30, 2011</i>
  118. <h3>Functionality Improvements</h3>
  119. <ul>
  120. <li>Added new names for methods for computing <tt>Geometry</tt> equality:
  121. <li><tt>equals(Object)</tt> is a synonym for <tt>equalsExact(Geometry)</tt>
  122. <li><tt>equalsNorm(Geometry)</tt> automatically normalizes the operands
  123. <li><tt>equalsTopo(Geometry)</tt> computes topological equality,
  124. and is a synonym for the original <tt>equals(Geometry)</tt>
  125. </ul>
  126. <li>Added <tt>Geometry.norm()</tt> to provide non-mutating normalization
  127. <li>Added <tt>Geometry.hashCode()</tt> to fulfill Java conventions
  128. <li>Added <tt>LineIntersector.getEndpoint()</tt> method
  129. <li>Added methods to <tt>CoordinateSequences</tt> to test for and create valid rings
  130. <li>Added <tt>minExtent</tt> and <tt>maxExtent</tt> to <tt>Envelope</tt>
  131. <li>Added ability to compute Single-Sided Buffers (invoked via <tt>BufferOp</tt> and <tt>BufferParameters</tt>)
  132. <li>Added <tt>GeometryPrecisionReducer</tt>
  133. <li>Added ExtendedWKB SRID support to <tt>WKBWriter</tt> (thanks to Justin Deoliviera)
  134. <li>Improved <tt>PolygonShape</tt> to support floating-point coordinates
  135. <li>Added <tt>GeometryShapeFactory.setRotation(double radians)</tt> method
  136. <li>Added <tt>GeometricShapeBuilder</tt> API to support shape builder development
  137. <li>Added <tt>RandomPointsBuilder</tt> to allow generating various random point sets
  138. <li>Added <tt>RandomPointsInGridBuilder</tt> to allow generating various random point sets constrained to a grid
  139. <li>Added <tt>KochSnowflakeBuilder</tt>
  140. <li>Added <tt>SierpinskiCarpetBuilder</tt>
  141. <li>Added <tt>MathUtil</tt> containing mathematics and numerical utility functions
  142. <li>Added <tt>Vector2D</tt> class providing vector operations
  143. <li>Added <tt>DirectedEdgeStar.getNextCWEdge()</tt> method to <tt>planargraph</tt> API
  144. <li><tt>AffineTransformation</tt> enhanced to avoid numeric precision issues in case of reflection in X=Y (coordinate flipping)
  145. <li>Added <tt>LineSequencer.sequence()</tt> static convenience method
  146. <li>Added error indicators to <tt>BufferDistanceValidator</tt> and <tt>BufferResultValidator</tt>
  147. <li>Added <tt>MinimumClearance</tt> class
  148. <li>Added <tt>nearestNeighbours</tt> methods to <tt>STRtree</tt>
  149. </ul>
  150. <h3>Performance Improvements</h3>
  151. <ul>
  152. <li>Improved memory performance of <tt>ShapeWriter</tt> conversions (by tuning coordinate and polygon conversion)
  153. <li>Improved performance of <tt>RectangleIntersects</tt> by refining <tt>SegmentIntersectionTester</tt>
  154. </ul>
  155. <h3>Robustness Improvements</h3>
  156. <ul>
  157. <li>Delaunay triangulation uses more robust formulation for the inCircle test
  158. <li>Voronoi computation now uses more robust formulation for the circumcentre computation
  159. <li>Force RectangleIntersects to always use segment-scanning to improve robustness
  160. </ul>
  161. <h3>API Changes</h3>
  162. <ul>
  163. <li>Reduced visibility of internal classes in <tt>com.vividsolutions.jts.geom.prep</tt>
  164. <li>Reduced visibility of internal classes in <tt>com.vividsolutions.jts.simplify</tt>
  165. <li>Moved <tt>Matrix</tt> class into <tt>jts.math</tt> package
  166. <li>Refactored internal offset curve generation classes
  167. in <tt>com.vividsolutions.jts.operation.buffer</tt> package
  168. </ul>
  169. <h3>Bug Fixes</h3>
  170. <ul>
  171. <li>Fixed <tt>CoordinateArraySequence</tt> and <tt>PackedCoordinateSequence</tt>
  172. to correctly handle Z ordinate in <tt>getCoordinate(int, Coordinate)</tt>
  173. <li>Fixed <tt>LinearRing</tt> to have <tt>isClosed()</tt> return <tt>true</tt> for empty rings
  174. <li>Fixed <tt>Geometry.union()</tt> to use more robust union algorithm.
  175. This provides behaviour consistent with <tt>union(Geometry)</tt>.
  176. <li>Fixed <tt>Point.isValid()</tt> to validate POINT EMPTY correctly
  177. <li>Fixed <tt>SnapIfNeededOverlayOp</tt> to throw the originating exception,which contains meaningful coordinates
  178. <li>Fixed <tt>GeometrySnapper</tt> to allow final vertices of LineStrings to snap correctly
  179. <li>Fixed buffer (<tt>OffsetCurveSetBuilder</tt>) to handle "flat" rings correctly
  180. <li>Fixed <tt>IsValidOp</tt> to handle reporting "Not Closed" errors on empty rings correctly
  181. <li>Fixed <tt>NestedRingTester</tt> (used by <tt>IsValidOp</tt>)
  182. to correctly handle the case where a hole touches all the vertices of another hole (which is invalid)
  183. <li>Fixed <tt>ConvexHull</tt> to handle large geometries with fewer than 3 unique points
  184. <li>Fixed <tt>GeometryGraph</tt> to ignore empty hole rings when building graph
  185. <li>Fixed <tt>LineMerger</tt> to skip lines with only a single unique coordinate
  186. <li>Fixed <tt>ByteArrayInStream</tt> to pad byte buffers with zeroes
  187. <li>Corrected spelling of <tt>SquarePointShapeFactory</tt>
  188. <li>Fixed tolerance check in <tt>KdTree</tt>
  189. <li>Updated <tt>MasterTester</tt> to include more unit tests
  190. </ul>
  191. <!------- TestBuilder -------------------->
  192. <hr size='0' color='darkblue'>
  193. <h3 style='font-family:sans-serif; color:darkblue'>JTS TestBuilder</h3>
  194. <h3>Functionality Improvements</h3>
  195. <ul>
  196. <li>Added <tt>[Zoom To Result]</tt> button
  197. <li>Improved mark display, with floating point label
  198. <li>Added more random geometry creation functions
  199. <li>Added fractal geometry creation functions
  200. <li>Improved threaded rendering handling to ensure only one frame drawn
  201. <li>Added Magnify Topology capability
  202. <li>Added Geometry Inspector dialog
  203. <li>Better startup script, with auto-home directory detection
  204. and JTS_LIB_DIR environment variable (thanks to strk)
  205. <li>Added logging Info window behaviour
  206. <li>Improved saving PNG to allow specifying file name
  207. </ul>
  208. <h3>Bug Fixes</h3>
  209. <ul>
  210. <li>Fixed Stats panel to update when current test changes
  211. <li>Fixed deleting single test case
  212. </ul>
  213. <!-- ================================================================ -->
  214. <hr size='4' color='darkblue'>
  215. <h2>Version 1.11</h2>
  216. <i>Release Date: March 1, 2010</i>
  217. <h3>Functionality Improvements</h3>
  218. <ul>
  219. <li>Added <tt>CoordinateArrays.isRing</tt>
  220. <li>Added <tt>CGAlgorithms.signedArea(CoordinateSequence)</tt>
  221. <li>Added <tt>CoordinateArrays.copyDeep(...)</tt> method to copy sections of arrays
  222. <li>Added <tt>CoordinateList.add(Coordinate[], boolean, int, int)</tt> method to add sections of arrays
  223. <li>Added <tt>LineSegment.toGeometry()</tt>, <tt>LineSegment.lineIntersection()()</tt>
  224. <li>Added <tt>LineSegment.hashCode()</tt>
  225. <li>Added geometric similarity classes (<tt>HausdorffSimilarityMeasure</tt>, <tt>AreaSimilarityMeasure</tt>)
  226. <li>Added <tt>MinimumDiameter.getMinimumRectangle()</tt>
  227. <li>Added <tt>MinimumBoundingCircle</tt> class
  228. <li>Added <tt>Densifier</tt> class
  229. <li>Added triangulation API, including <tt>QuadEdgeSubdivision</tt>, <tt>IncrementalDelaunayTriangulator</tt>,
  230. <tt>ConformingDelaunayTriangulator</tt> and supporting classes
  231. <li>Added <tt>VoronoiDiagramBuilder</tt> to perform Voronoi diagram generation
  232. <li>Added <tt>scaleInstance(scaleX, scaleY, x, y)</tt> to <tt>AffineTransformation</tt>
  233. <li>Added <tt>AffineTransformationFactory</tt> to allow generating transformations from various kinds of control inputs
  234. <li>Added <tt>BinTree.remove()</tt> method
  235. <li>Fixed <tt>BinTree.query()</tt> to allow null interval arguments
  236. <li>Added <tt>ShapeReader</tt> API to convert Java2D Shapes into JTS Geometry
  237. <li>Added <tt>ShapeWriter</tt> API to convert JTS geometry into Java2D Shapes
  238. <li>Added <tt>FontGlyphReader</tt> API to render Java2D text font glyphs into geometry
  239. <li>Added <tt>SdeReader</tt> to <b>jtsio</b> library
  240. <li>Added <tt>Debug</tt> break methods
  241. <li>Added <tt>Memory</tt> utility for reporting memory statistics
  242. <li>Added <tt>ObjectCounter</tt> utility for counting objects
  243. <li>Added <tt>createSquircle</tt> and <tt>createSuperCircle</tt> to <tt>GeometricShapeFactory</tt>
  244. </ul>
  245. <h3>Performance Improvements</h3>
  246. <ul>
  247. <li>Improved performance of <tt>Geometry.getArea()</tt> and <tt>Geometry.getLength()</tt> when used with custom <tt>CoordinateSequence</tt>s
  248. </ul>
  249. <h3>API Changes</h3>
  250. <ul>
  251. <li>Deprecated <tt>WKBWriter.bytesToHex</tt> in favour of <tt>WKBWriter.toHex</tt> to regularize and simplify method name
  252. </ul>
  253. <h3>Bug Fixes</h3>
  254. <ul>
  255. <li>Fixed Point.isValid() to check for invalid coordinates (ie with Nan ordinates)
  256. <li>Fixed <tt>Geometry.distance()</tt> and <tt>DistanceOp</tt> to return 0.0 for empty inputs
  257. <li>Fixed <tt>Buffer</tt> to handle degenerate polygons with too few distinct points correctly
  258. <li>Added illegal state check in <tt>LineSegment.pointAlongOffset()</tt>
  259. <li>Fixed exception strategy in <tt>BufferSubgraph</tt> to handle certain robustness failures correctly
  260. <li>Fixed robustness problem in <tt>OffsetCurveBuilder</tt> in computing mitred joins for nearly parallel segments
  261. <li>Fixed minor bug in <tt>BufferInputLineSimplifier</tt> which prevented simplification of some situations
  262. <li>Fixed bug in <tt>BufferInputLineSimplifier</tt> which caused over-simplification for large tolerances
  263. <li>Fixed bug in <tt>Angle.normalizePositive</tt> to handle values > 2PI correctly
  264. <li>Fixed <tt>WKTWriter</tt> to emit correct syntax for MULTIPOINTs
  265. <li>Fixed <tt>WKTReader</tt> to accept correct syntax for MULTIPOINTs
  266. <li><tt>CGAlgorithms.isCCW</tt> now checks for too few points in the ring and throws an <tt>IllegalArgumentException</tt>
  267. <li>Fixed bug in <tt>AffineTransformation#eqals</tt> (logic bug)
  268. <li>Fixed bug in <tt>CoordinateList#closeRing</tt> (cloning closing Coordinate)
  269. </ul>
  270. <!------- TestBuilder -------------------->
  271. <hr size='0' color='darkblue'>
  272. <h3 style='font-family:sans-serif; color:darkblue'>JTS TestBuilder</h3>
  273. <h3>Functionality Improvements</h3>
  274. <ul>
  275. <li>WKT input is cleaned automatically when loaded (illegal chars are removed)
  276. <li>Added WKT-Formatted option to Test Case View dialog
  277. <li>Many new geometry functions added
  278. <li>Geometry functions are displayed in tree
  279. <li>Geometry functions can be implemented as Java static class methods.
  280. <li>Geometry function classes can be loaded dynamically from command-line
  281. <li>Improved handling of very large geometry inputs and results
  282. <li>Threaded rendering allows display of very large geometries without limiting usability
  283. <li>Added Draw Rectangle tool
  284. <li>Added Drag-n-drop loading of .SHP files
  285. <li>Added Info tool to provide persistent display of geometry point/segment information
  286. <li>Added display of memory usage
  287. </ul>
  288. <!-- ================================================================ -->
  289. <hr size='4' color='darkblue'>
  290. <h2>Version 1.10</h2>
  291. <i>Release Date: December 31, 2008</i>
  292. <h3>Functionality Improvements</h3>
  293. <ul>
  294. <li>Added <tt>Geometry.reverse()</tt> method for all geometry types
  295. <li>Added <tt>setSrsName</tt>, <tt>setNamespace</tt>, <tt>setCustomRootElements</tt> methods to <tt>GMLWriter</tt>
  296. <li>Added <tt>Envelope.getArea</tt> method
  297. <li>Added <tt>copy</tt>, <tt>copyCoord</tt> methods to <tt>CoordinateSequences</tt>
  298. <li>Added <tt>area</tt> method to <tt>Envelope</tt>
  299. <li>Added <tt>extractPoint(pt, offset)</tt> methods to <tt>LengthIndexedLine</tt> and <tt>LocationIndexedLine</tt>
  300. <li>Added <tt>CoordinatePrecisionReducerFilter</tt>
  301. <li>Added <tt>UnaryUnionOp(Collection, GeometryFactory)</tt> constructor to handle empty inputs more automatically
  302. <li>Added <tt>DiscreteHausdorffDistance</tt> class
  303. <li>Made <tt>LineMerger</tt> able to be called incrementally
  304. <li>Added <tt>GeometricShapeFactory.createArcPolygon</tt> to create a polygonal arc
  305. <li>Enhanced <tt>Geometry.buffer()</tt> to preserve SRID
  306. </ul>
  307. <h3>Performance Improvements</h3>
  308. <ul>
  309. <li>Improved performance for <code>EdgeList</code> (by using a more efficient technique for detecting duplicate edges)
  310. <li>Improved performance for <code>ByteArrayInStream</code> (by avoiding use of <tt>java.io.ByteArrayInputStream</tt>)
  311. <li>Unrolled intersection computation in <tt>HCoordinate</tt> to avoid object allocation
  312. <li>Improved performance for buffering via better offset curve generation and simplification.
  313. <li>Improved performance for <tt>IsValidOp</tt> by switching to use <tt>STRtree</tt> for nested hole checking
  314. </ul>
  315. <h3>Bug Fixes</h3>
  316. <ul>
  317. <li>Fixed <tt>Geometry.getClassSortIndex()</tt> to lazily initialize the sorted class list. This fixes a threading bug.
  318. <li>Fixed <tt>RectangleContains</tt> to return correct result for points on the boundary of the rectangle
  319. <li>Fixed error in <tt>com.vividsolutions.jts.simplify.LineSegmentIndex</tt> which caused polygons
  320. simplified using <tt>TopologyPreservingSimplifier</tt> to be invalid in certain situations
  321. <li>Fixed error in <tt>DouglasPeuckerSimplifier</tt> which caused empty polygons to be returned when they contained a very small hole
  322. <li>Fixed <tt>PackedCoordinateSequence</tt> to return <tt>NaN</tt> for null ordinate values
  323. <li>Fixed <tt>Geometry.centroid()</tt> (<tt>CentroidArea</tt>) so that it handles degenerate (zero-area) polygons
  324. <li>Fixed <tt>Geometry.buffer()</tt> (<tt>OffsetCurveBuilder</tt>) so that it handles JOIN_MITRE cases with nearly collinear lines correctly
  325. <li>Fixed <tt>GeometryFactory.toGeometry(Envelope)</tt> to return a CW polygon
  326. <li>Fixed <tt>UnaryUnionOp</tt> to correctly handle heterogeneous inputs with P/L/A components
  327. <li>Fixed <tt>UnaryUnionOp</tt> to accept <tt>LINEARRING</tt>s
  328. <li>Fixed <tt>CentroidArea</tt> to handle zero-area polygons correctly
  329. <li>Fixed <tt>WKBWriter</tt> to always output 3D when requested, and to handle 2D <tt>PackedCoordinateSequences</tt> correctly in this case
  330. <li>Fixed <tt>NodedSegmentString</tt> to handle zero-length line segments correctly (via <tt>safeOctant</tt>)
  331. <li>Cleaned up code to remove unneeded <tt>CGAlgorithms</tt> objects
  332. <li>Fixed <tt>GeometricShapeFactory.createArc</tt> to ensure arc has requested number of vertices
  333. </ul>
  334. <h3>API Changes</h3>
  335. <ul>
  336. <li>Moved GML I/O classes into core JTS codebase
  337. <li>Changed <tt>GMLWriter</tt> to not write the <tt>srsName</tt> attribute by default
  338. <li>In <tt>DistanceOp</tt> switched to using <tt>nearestPoints</tt> method names
  339. <li>Exposed <tt>STRtree.getRoot()</tt> method
  340. </ul>
  341. <!------- TestBuilder -------------------->
  342. <hr size='0' color='darkblue'>
  343. <h3 style='font-family:sans-serif; color:darkblue'>JTS TestBuilder</h3>
  344. <h3>UI Improvements</h3>
  345. <ul>
  346. <li>Added ability to read GML from input panel
  347. <li>Added GML output to View dialog
  348. <li>Added file drag'n'drop to Geometry Input text areas
  349. <li>Add display of computation time
  350. <li>Added Stats panel
  351. <li>Added Scalar functions panel, with extensible function list
  352. <li>Added <b>Save as PNG...</b>
  353. <li>Added stream digitizing to Polygon and Line Draw tools
  354. </ul>
  355. <!------- TestRunner -------------------->
  356. <hr size='0' color='darkblue'>
  357. <h3 style='font-family:sans-serif; color:darkblue'>JTS TestRunner</h3>
  358. <h3>Functionality Improvements</h3>
  359. <ul>
  360. <li>Added <tt>-testCaseIndex</tt> command-line option
  361. </ul>
  362. <!-- ================================================================ -->
  363. <hr size='4' color='darkblue'>
  364. <h2>Version 1.9</h2>
  365. <i>Release Date: January 2, 2008</i>
  366. <h3>Functionality Improvements</h3>
  367. <ul>
  368. <li>Added <tt>Polygonal</tt>, <tt>Lineal</tt>, <tt>Puntal</tt> tag interfaces to better categorize geometry classes
  369. <li>Added <tt>Geometry.union()</tt> method, <tt>UnaryUnionOp</tt> class for efficient unioning of geometrys
  370. <li>Added <tt>Triangle.area3D</tt> method
  371. <li>Added <tt>LineSegment.pointAlongOffset</tt> method
  372. <li>Added <tt>LineSegment.orientationIndex(Coordinate)</tt> method
  373. <li>Added <tt>PreparedGeometry</tt> classes and methods to optimize some geometry functions in batch situations
  374. <li>Added <tt>Envelope.covers</tt> methods, for preciseness
  375. <li>Added <tt>OctagonalEnvelope</tt> class
  376. <li>Improved <tt>CGAlgorithms.isPointInRing</tt> method to handle case where point lies on the ring
  377. <li>Added <tt>CGAlgorithms.locatePointInRing</tt> method
  378. <li>Added <tt>PointInAreaLocator</tt> interface, enhanced <tt>SimplePointInAreaLocator</tt> to extend this
  379. <li>Added <tt>RayCrossingCounter</tt>, <tt>IndexedPointInAreaLocator</tt> classes for more efficient Point-In-Polygon testing
  380. <li>Added <tt>GeometryCombiner</tt> class
  381. <li>Enhanced <tt>BufferOp</tt> with join styles
  382. <li>Enhanced <tt>WKTReader</tt> to accept any case for <tt>NaN</tt> number symbols
  383. <li>Added <tt>WKTFileReader</tt> class
  384. <li>Improved performance of <tt>CoordinateList</tt> constructors
  385. <li>Added <tt>CascadedPolygonUnion</tt> class
  386. <li>Added <tt>LinearLocation.isOnSameSegment</tt> method
  387. <li>Added <tt>LinearLocation.getSegment</tt> method
  388. <li>Added <tt>LocationIndexedLine.indexOfAfter</tt> method
  389. <li>Added interpolation of Z value to linear referencing methods
  390. <li>Added methods to rotate around a given point to <tt>AffineTransformation</tt>
  391. <li>Allowed <tt>GeometricShapeFactory</tt> to be subclassed to add new shapes
  392. <li>Added <tt>SineStarFactory</tt> (primarily to support testing)
  393. <li>Added <tt>SortedPackedIntervalRTree</tt> class
  394. <li>Added <tt>SegmentSetMutualIntersector</tt> interface and implementations
  395. <li>Added <tt>Node.remove(DirectedEdge)</tt> method in <tt>planargraph</tt> package
  396. </ul>
  397. <h3>Performance Improvements</h3>
  398. <ul>
  399. <li>Improved performance for <code>SimplePointInAreaLocator</code> (by checking ring envelopes as a filter)
  400. </ul>
  401. <h3>Bug Fixes</h3>
  402. <ul>
  403. <li><tt>Geometry.buffer</tt> operation fixed to always return polygonal geometries
  404. <li>Fixed bug in <code>Geometry.buffer(distance, quadrantSegs)</code>
  405. causing failure for some cases with <tt>quadrantSegs = 1</tt>
  406. <li>Fixed bug in <tt>GeometryFactory.toGeometry(Envelope)</tt>
  407. which was returning invalid Polygons for "linear" envelopes
  408. <li>Fixed bug in <tt>MonotoneChainBuilder</tt> which caused failures in situations with segments of zero length
  409. <li>Fixed <tt>PointLocator</tt> to handle locating in Point geometries
  410. <li>Fixed <tt>GeometricShapeFactory</tt> to always use provided PrecisionModel
  411. <li>Fixed <tt>LinearLocation.clone</tt> method
  412. <li>Fixed <tt>LinearLocation.isValid</tt> method
  413. <li>Fixed <tt>Polygonizer</tt> to accept single-point linestrings (which are ignored)
  414. </ul>
  415. <h3>API Changes</h3>
  416. <ul>
  417. <li>Deprecated <code>RobustCGAlgorithms</code>
  418. <li>Deprecated <code>BufferOp</code> cap style constants (these are now provided in </tt>BufferParameters</tt>)
  419. <li>Removed <code>SIRPointInRing</code>
  420. </ul>
  421. <!------- TestRunner -------------------->
  422. <hr size='0' color='darkblue'>
  423. <h3 style='font-family:sans-serif; color:darkblue'>JTS TestRunner</h3>
  424. <h3>New Features</h3>
  425. <ul>
  426. <li>Added ability to specify GeometryOperation in XML file
  427. <li>Added <tt>BufferValidatedGeometryOperation</tt>
  428. <li>Added ability to specify custom result matching via <tt>resultMatcher</tt> parameter
  429. in XML files
  430. <li>Added <tt>BufferResultMatcher</tt>
  431. </ul>
  432. <!------- TestBuilder -------------------->
  433. <hr size='0' color='darkblue'>
  434. <h3 style='font-family:sans-serif; color:darkblue'>JTS TestBuilder</h3>
  435. <h3>UI Improvements</h3>
  436. <ul>
  437. <li>Improved rendering of geometries
  438. <li>Improved symbology for orientation
  439. <li>Simplified Geometry creation
  440. <li>Improved vertex move/add
  441. <li>Added tooltip for coordinate location
  442. <li>Added more geometry functions
  443. <li>Added Copy Result to Test button
  444. </ul>
  445. <h3>Code Improvements</h3>
  446. <ul>
  447. <li>Restructured code for more flexibility, better Swing functionality
  448. <li>Made it easier to add geometry functions
  449. </ul>
  450. <!-- ================================================================ -->
  451. <hr size='4' color='darkblue'>
  452. <h2>Version 1.8</h2>
  453. <i>Release Date: December 19, 2006</i>
  454. <h3>Functionality Improvements</h3>
  455. <ul>
  456. <li>Improved robustness for overlay operations, via using geometry snapping
  457. <li>Added <code>Angle</code> class
  458. <li>Added methods to <code>Triangle</code> class
  459. <li>Added <code>LineSegment.midPoint</code> method
  460. <li>Added ability to specify output of Z values to <code>WKTWriter</code>
  461. <li>Added <code>setFormatted</code>, <code>setTab</code>, <code>setMaxCoordinatesPerLine</code> methods to <code>WKTWriter</code>
  462. <li>Added <code>BoundaryNodeRule</code> classes, and ability to specify a Boundary Node Rule
  463. in <code>RelateOp</code>, <code>IsSimpleOp</code>, <code>BoundaryOp</code>
  464. <li>Added ability to get the failure location to <code>IsSimpleOp</code>
  465. <li>Added <code>BoundaryOp</code> with improved algorithm for lineal geometries. Changed lineal Geometry classes to use it.
  466. <li>Enhanced <code>Geometry</code> overlay methods to accept empty <code>GeometryCollections.</code>
  467. <li>Enhanced Error Handling for <tt>WKTReader</tt>
  468. <li>Added <code>CoordinateSequenceFilter</code>
  469. <li>Added <code>AffineTransformation</code> and <code>AffineTransformationBuilder</code>
  470. </ul>
  471. <h3>API Changes</h3>
  472. <ul>
  473. <li>Changed API for <code>IsSimpleOp</code> (required to support returning failure location)
  474. </ul>
  475. <h3>Bug Fixes</h3>
  476. <ul>
  477. <li>Fixed bug in <code>GeometryFactory.buildGeometry</code>
  478. causing failure if input contained all GeometryCollections of the same subclass
  479. <li>Changed AssertFailure to TopologyException in <code>PolygonBuilder</code>
  480. <li>Improved correctness of <tt>RobustLineIntersector</tt> in certain cases where segment endpoints intersect
  481. <li>Eliminated duplicate method execution in <code>TestRunner</code>
  482. </ul>
  483. <hr size='0' color='darkblue'>
  484. <h3 style='font-family:sans-serif; color:darkblue'>JTS TestBuilder</h3>
  485. <h3>New Features</h3>
  486. <ul>
  487. <li>Zoom tool can now draw zoom box as well as click
  488. <li>Cut, Copy and Paste buttons for Input WKT
  489. <li>added ability to specify custom Geometry Operations
  490. </ul>
  491. <hr size='0' color='darkblue'>
  492. <h3 style='font-family:sans-serif; color:darkblue'>JTS TestRunner</h3>
  493. <h3>New Features</h3>
  494. <ul>
  495. <li>added ability to specify custom Geometry Operations
  496. </ul>
  497. <h3>Bug Fixes</h3>
  498. <ul>
  499. <li>Eliminated duplicate method execution
  500. </ul>
  501. <!----------------------------------------------------------------------->
  502. <hr size='4' color='darkblue'>
  503. <h2>Version 1.7.2</h2>
  504. <i>Release Date: June 22, 2006</i>
  505. <h3>Functionality Improvements</h3>
  506. <ul>
  507. <li>Added support for EWKB (SRIDs only) to <code>WKBReader</code>
  508. </ul>
  509. <h3>Bug Fixes</h3>
  510. <ul>
  511. <li>Fixed bug in <code>CoordinateArrays.ptNotInList</code>.
  512. Changed <code>polygonize.EdgeRing</code> to used corrected code.
  513. <li>Fixed bug causing duplicate points in <code>ScaledNoder</code>
  514. <li>Fixed bug causing Null Pointer for empty geometries in <code>OraWriter</code>
  515. <li>Changed AssertFailure to TopologyException in <code>EdgeNode</code>
  516. </ul>
  517. <!----------------------------------------------------------------------->
  518. <hr size='4' color='darkblue'>
  519. <h2>Version 1.7.1</h2>
  520. <i>Release Date: March 20, 2006</i>
  521. <h3>Functionality Improvements</h3>
  522. <ul>
  523. <li>Added Hex string conversion to <code>WKBReader</code> and <code>WKBWriter</code>
  524. </ul>
  525. <h3>Bug Fixes</h3>
  526. <ul>
  527. <li>Fixed null point cloning bug in <code>TopologyValidationError</code> (<i>thanks to Markus Gebhard</i>)
  528. <li>Fixed bug in <code>PointLocator</code> fix for LinearRings
  529. <li>Fixed bug in <code>Geometry.isValid</code> and <code>IsValidOp</code> causing some valid polygons
  530. to be reported as having a Disconnected Interior (specifically, polygons containing
  531. holes touching at a single point, where the point is the highest point in the hole rings, and where the holes
  532. have a specific orientation)
  533. <li>Fixed bug in <code>Polygon.isRectangle</code>, which reported some valid rectangles as false
  534. </ul>
  535. <h3>Performance Improvements</h3>
  536. <ul>
  537. <li>Improved performance for <code>Geometry#withinDistance</code> (via short-circuiting)
  538. </ul>
  539. <h3>Contributors</h3>
  540. <ul>
  541. <li>Dave Blasby
  542. <li>Koen van Dijken
  543. </ul>
  544. <!----------------------------------------------------------------------->
  545. <hr size='4' color='darkblue'>
  546. <h2>Version 1.7</h2>
  547. <i>Release Date: December 7, 2005</i>
  548. <h3>Functionality Improvements</h3>
  549. <ul>
  550. <li>Added <code>JTSVersion</code> class to provide access to the API version information
  551. <li>Added <code>covers</code> and <code>coveredBy</code> predicates to <code>Geometry</code>
  552. <li>Added <code>Geometry#buffer(distance, quadSegs, endCapStyle)</code> method to expose buffer end cap styles
  553. <li>Added <code>LineString#reverse</code> and <code>MultiLineString#reverse</code> methods
  554. <li>Added <code>centre</code>, <code>intersection</code>, <code>translate</code>,
  555. <code>expandBy(distance)</code>, <code>expandBy(dx, dy)</code>
  556. methods to <code>Envelope</code>
  557. <li>Added <code>CollectionUtil</code> class for performing operations over collections
  558. <li>Added <code>CoordinateArrays</code> comparators
  559. <li>Added <code>CoordinateSequence#getDimension</code>
  560. <li>Added convenience methods <code>toPoint</code> and <code>toLineString</code> to <code>WKTWriter</code>
  561. <li>Added WKB API (<code>WKBReader</code> and <code>WKBWriter</code> classes in <code>com.vividsolutions.jts.io</code>
  562. <li><code>WKTReader</code> has better handling of numeric parsing, including support for scientific notation
  563. <li>Added <code>IsValidOp#setSelfTouchingRingFormingHoleValid</code> to allow validating SDE-style polygons
  564. <li>Added check for non-closed rings in <code>IsValidOp</code>
  565. <li>Added Linear Referencing API (<code>com.vividsolutions.jts.linearref</code>
  566. <li>Added <code>LineSequencer</code> class to <code>com.vividsolutions.jts.operation.linemerge</code>
  567. <li>Added <code>Subgraph</code> class to <code>com.vividsolutions.jts.planargraph</code>
  568. <li>Added <code>isRemoved</code> method to <code>GraphComponent</code>
  569. <li>Added <code>ConnectedSubgraphFinder</code> class to <code>com.vividsolutions.jts.planargraph.algorithm</code>
  570. <li>Added <code>setVisited</code>, <code>getComponentWithVisitedState</code>,
  571. <code>setVisited</code>, <code>getComponentWithVisitedState</code>
  572. methods to <code>com.vividsolutions.jts.planargraph.GraphComponent</code>
  573. <li>Added classes to perform Snap Rounding (in <code>com.vividsolutions.jts.noding.snapround</code>>
  574. <li>Improved buffering speed and robustness by using Snap Rounding
  575. <li>Added buffer optimization for results with large numbers of polygons and/or holes
  576. <li>Added <code>STRtree#query(Envelope, ItemVisitor)</code> method
  577. <li>Added <code>Debug#toLine</code> methods
  578. <li>Added <code>ConvexHull(Coordinate[])</code> constructor
  579. </ul>
  580. <h3>Bug Fixes</h3>
  581. <ul>
  582. <li>Fixed decimal formatting in <code>WKTWriter</code> to force a leading 0 in decimal numbers
  583. <li>Fixed bug in <code>CoordinateArraySequence#setOrdinate</code>
  584. <li>Fixed bug when checking validity of polygon with hole (<code>IsValidOp#checkHolesInShell</code>)
  585. <li>Improved correctness of computated intersections in <code>RobustLineIntersector</code>
  586. <li>Fixed bugs in <code>CoordinateList.clone</code> (thanks to Matthias Bobzien)
  587. <li>Fixed bug in <code>Envelope.equals</code> (thanks to John Cartwright)
  588. <li>Fixed <code>PointLocator</code> for LinearRings
  589. </ul>
  590. <h3>Performance Improvements</h3>
  591. <ul>
  592. <li>Improved performance for overlay operations (point inclusion, identical edge detection)
  593. <li>Improved Convex Hull performance
  594. </ul>
  595. <h3>API Changes</h3>
  596. <ul>
  597. <li>Added <code>SpatiaIndex#query(Envelope, ItemVisitor)</code> method signature
  598. <li>Added <code>CoordinateSequence#getDimension()</code> method signature
  599. <li>Marked <code>GeometryEditor.CoordinateOperation#edit(Geometry, GeometryFactory)</code> method
  600. as <code>final</code>, to prevent incorrect use
  601. </ul>
  602. <h3>Semantics Changes</h3>
  603. <ul>
  604. <li>CoordinateArraySequence#setOrdinate now checks that the ordinate index is in range
  605. </ul>
  606. <!----------------------------------------------------------------------->
  607. <hr size='4' color='darkblue'>
  608. <h2>Version 1.6</h2>
  609. Release Date: February 3, 2005
  610. <h3>API Changes</h3>
  611. <ul>
  612. <li>Changed to using <code>CoordinateArraySequence</code> instead of <code>DefaultCoordinateSequence</code>
  613. (to provide a more descriptive name).
  614. </ul>
  615. <h3>Semantics Changes</h3>
  616. <ul>
  617. <li>PrecisionModel#makePrecise changed to use Symmetric Arithmetic Rounding rather than Banker's Rounding
  618. </ul>
  619. <h3>Functionality Improvements</h3>
  620. <ul>
  621. <li>Added ability to enable <code>Debug</code> methods by setting a system property
  622. <li>Added <code>getNumGeometries</code> and <code>getGeometryN</code> methods to Geometry class, to make API more uniform
  623. <li>Improved API for <code>CoordinateSequence</code> allows more options for improving memory usage and handling custom coordinate storage methods
  624. <li>Added <code>PackedCoordinateSequence</code> to provide reduced memory footprint for geometry objects if desired
  625. <li>Added optimized spatial predicates for rectangles
  626. <li>Added Debug#isDebugging method
  627. </ul>
  628. <h3>Bug Fixes</h3>
  629. <ul>
  630. <li>Fixed bug in <code>Geometry#within()</code> short circuiting
  631. <li>Fixed bug causing <code>Geometry#isValid</code> to throw IllegalArgumentException for certain kinds of holes with invalid rings
  632. <li>Fixed bug causing redundant linestrings to be returned in the result of overlaying polygons containing holes touching their shell.
  633. <li><code>Polygon#getBoundary</code> now returns a <code>LinearRing</code> if the polygon does not have holes
  634. </ul>
  635. <h3>Architecture Changes</h3>
  636. <ul>
  637. <li>Removed a proliferation of references to the default <code>CoordinateSequenceFactory</code>
  638. </ul>
  639. <h3>Contributors</h3>
  640. <ul>
  641. <li>Andrea Aime
  642. </ul>
  643. <!----------------------------------------------------------------------->
  644. <hr size='4' color='darkblue'>
  645. <h2>Version 1.5</h2>
  646. Release Date: September 22, 2004
  647. <p>
  648. This version is upwards compatible with Version 1.4
  649. <h3>API Changes</h3>
  650. <ul>
  651. <li>None
  652. </ul>
  653. <h3>Semantics Changes</h3>
  654. <ul>
  655. <li>None
  656. </ul>
  657. <h3>Functionality Improvements</h3>
  658. <ul>
  659. <li><code>CGAlgorithms#isCCW</code> now handles coordinate lists with repeated points. Also throws an IllegalArgumentException if the input ring does not have 3 distinct points
  660. <li><code>isValid</code> now checks for invalid coordinates (e.g. ones with Nan or infinite numbers)
  661. <li>added copyDeep() method to <code>CoordinateArrays</code>
  662. <li>added geometry simplification operations <code>DouglasPeuckerSimplifier</code> and <code>TopologyPreservingSimplifier</code>
  663. <li>added methods to <code>Quadtree</code> and <code>STRtree</code> to remove items and query using the Visitor pattern
  664. </ul>
  665. <h3>Performance Improvements</h3>
  666. <ul>
  667. <li>Added short-circuit tests in geometry named predicates based on envelope tests
  668. </ul>
  669. <h3>Bug Fixes</h3>
  670. <ul>
  671. <li>Fixed bugs in <code>Geometry</code> serialization
  672. <li>Fixed bug in <code>ValidOp</code> which reported some MultiPolygons with shells nested inside a hole as invalid
  673. <li>Fixed bug in buffer which caused buffers of some polygons with small & large holes to not contain any holes
  674. <li>Fixed bug in <code>Polygonizer</code> which caused exception if no lines were supplied
  675. </ul>
  676. <h3>Architecture Changes</h3>
  677. <ul>
  678. <li>Basic CG algorithm methods made static in the <code>CGAlgorithms</code> class
  679. <li>Various utility methods made public in <code>CoordinateArrays</code> class
  680. </ul>
  681. <h3>Documentation</h3>
  682. <ul>
  683. <li>More examples provided in <code>com.vividsolutions.jtsexamples package</code>
  684. </ul>
  685. <!----------------------------------------------------------------------->
  686. <hr size='4' color='darkblue'>
  687. <h2>Version 1.4</h2>
  688. Release Date: November 4, 2003
  689. <h3>Semantics Changes</h3>
  690. <ul>
  691. <li>none
  692. </ul>
  693. <h3>Functionality Improvements</h3>
  694. <ul>
  695. <li>Added "LINEARRING" tag to WKT syntax
  696. <li>Added GeometryEditor class to allow easy copy/modify of Geometrys
  697. <li>Added GeometricShapeFactory class to easily create standard geometric shapes
  698. <li>Geometries can now carry arbitrary user-defined data objects (via Geometry#get/setUserData(Object) method)
  699. <li>Added CoordinateSequence and CoordinateSequenceFactory interfaces, and default implementations (BasicCoordinateSequence, BasicCoordinateSequenceFactory)
  700. <li>Added Geometry#getFactory
  701. <li>Added new PrecisionModel type of FLOATING_SINGLE, for rounding to single precision floating point
  702. <li>Added DistanceOp#getClosestPoints method, which returns the closest points between two Geometries
  703. <li>Added com.vividsolutions.jts.noding package containing classes to perform fast indexed noding of linestrings
  704. <li>Added com.vividsolutions.jts.operation.polygonize package containing classes to perform polygonization
  705. <li>Added com.vividsolutions.jts.operation.linemerge package containing classes to perform line merging
  706. <li>Added SimpleGeometryPrecisionReducer to allow reducing precision of coordinates of a Geometry
  707. <li>Added LineSegment#closestPoints method to compute the closest points between two line segments
  708. <li>Added MinimumDiameter class to compute minimum diameters of Geometries
  709. <li>Added geom.Triangle class to contain algorithms for Triangles
  710. <li>BufferOp now allows end cap styles to be specified. Three types are supported: round, butt and square.
  711. </ul>
  712. <h3>Performance Improvements</h3>
  713. <ul>
  714. <li>EdgeList now provides a findEqualEdge method which is substantially faster than findEdgeIndex, for large lists
  715. <li>Buffering is now faster and much more robust
  716. <li>Overlap operations are now more robust
  717. </ul>
  718. <h3>Bug Fixes</h3>
  719. <ul>
  720. <li>Envelope#init(Envelope) now handles null Envelopes correctly
  721. <li>CoordinateList#add() now correctly ignores the z-value of Coordinates in determining equality
  722. <li>Geometry#isValid now correctly handles checking validity of LinearRings
  723. <li>Fixed infinite loop bug causing Out Of Memory errors during polygon intersection
  724. <li>Geometry#clone now correctly clones the Geometry's Envelope
  725. <li>LineIntersector#computeEdgeDistance now correctly computes a non-zero edge distance in certain situations when a fixed precision model was being used and the line segment was a single unit in length
  726. <li>Fixed incorrect calculation of depths in DirectedEdgeStar#computeDepths
  727. <li>Fixed BufferSubgraph#addReachable to use explicit stack to avoid stack overflow problems
  728. <li>Fixed various bugs causing some kinds of buffers to be computed incorrectly
  729. </ul>
  730. <h3>API Changes</h3>
  731. <ul>
  732. <li>WKTReader/Writer: changed protected members to private
  733. <li>PrecisionModel type is now an object rather than an int
  734. <li>ConvexHull API changed to remove requirement to pass in CGAlgorithms object
  735. </ul>
  736. <h3>Code Architecture Changes</h3>
  737. <ul>
  738. <li>geom.util package added for utility classes which parse and modify geometries
  739. </ul>
  740. <h3>Documentation</h3>
  741. <ul>
  742. <li>More examples provided in com.vividsolutions.jtsexamples package
  743. <li>Added JTS Developers Guide
  744. </ul>
  745. <!----------------------------------------------------------------------->
  746. <hr size='4' color='darkblue'>
  747. <h2>Version 1.3</h2>
  748. Release Date: April 4, 2003
  749. <h3>Semantics Changes</h3>
  750. <ul>
  751. <li>all Geometry methods are now reentrant (thread-safe)
  752. <li>Fixed-precision coordinates are now stored in a rounded but non-scaled form. This makes them compatible with non-precise (Floating) coordinates, and simplifies working with precise coordinates directly. Mixed precision models are now supported in Geometry methods; method results are in the more precise of the input precision models.
  753. <li>Offsets are no longer supported in the Fixed precision model. This is necessary to allow storing fixed precision coordinates in a non-scaled form. This does not reduce the total precision available, since coordinates are stored in a floating-point format.
  754. <li>SRID and Precision Model are no longer checked for equality during Geometry operations. This removes a limitation which provided little semantic benefit.
  755. </ul>
  756. <h3>Functionality Improvements</h3>
  757. <ul>
  758. <li>added Geometry.isWithinDistance(Geometry g, double distance) method, to provide optimized proximity queries
  759. <li>added Geometry.buffer(double distance, int quadrantSegments) method, allowing control over accuracy of buffer approximation
  760. <li>added Geometry.getCentroid() method
  761. <li>added Geometry.getInteriorPoint() method, which uses heuristic methods to return a point in the interior of a Geometry
  762. <li>GeometryFactory.toGeometryArray now returns null if the argument is null
  763. </ul>
  764. <h3>Performance Improvements</h3>
  765. <ul>
  766. <li>Removed unnecessary string construction in EdgeEndStar.propagateSideLabels()
  767. <li>Eliminated unnecessary computation of self-intersections in rings during relate and spatial functions. This provides a large increase in speed when working with large rings and polygons. (Note that IsValid still checks for these self-intersections, which are illegal in LinearRings)
  768. <li>Add short-circuit code to RobustLineIntersector to detect non-intersections more efficiently
  769. </ul>
  770. <h3>Bug Fixes</h3>
  771. <ul>
  772. <li>Fixed ClassCastException occurring in GeometryCollection.getLength()
  773. <li>Fixed bug in Edge Intersection insertion (replaced Coordinate#equals with equals2D to ensure that intersection creation is not sensitive to Z-value).
  774. <li>Fixed handling LineStrings with too few points in GeometryGraph.addLineString
  775. <li>Fixed: was not checking that MultiPolygons don't contain components with too few points.
  776. <li>Fixed Envelope.distance() to return correct distance for all envelopes.
  777. <li>Fixed a few Geometry methods to make them re-entrant.
  778. <li>Fixed CoordinateList.closeRing() to ensure endpoints are not duplicated
  779. <li>Fixed CGAlgorithms.signedArea() to use a simpler algorithm which is more robust and faster.
  780. <li>Fixed bug preventing validating Rings containing an initial repeated point.
  781. </ul>
  782. <h3>API Changes</h3>
  783. <ul>
  784. <li>Added default constructor to WKTReader. It uses the default GeometryFactory
  785. <li>Add two static intersects() methods to Envelope, to allow computing intersections with envelopes defined by points only.
  786. <li>Dropped BinaryPower; its functionality is provided by DoubleBits in a more robust fashion.
  787. <li>Removed a couple of redundant private static methods from Geometry; they have been replaced by methods in CoordinateArrays
  788. <li>The Geometry class is now marked as Serializable
  789. </ul>
  790. <!----------------------------------------------------------------------->
  791. <hr size='4' color='darkblue'>
  792. <h2>Version 1.2</h2>
  793. Release Date: 7 October 2002
  794. <h3>Semantics Changes</h3>
  795. <ul>
  796. <li>JTS now allows Geometrys to have repeated points. All operations will continue to perform as before. This removes a significant incompatibility with the OGC spatial data model.
  797. <li>TopologyExceptions may now be thrown by spatial overlay methods. This helps to distinguish between code bugs and known robustness problems. It also provides a machine-readable coordinate for the error location.
  798. </ul>
  799. <h3>Functionality Improvements</h3>
  800. <ul>
  801. <li>RobustLineIntersector now uses "normalized" coordinates to maximize the accuracy of intersection computation.
  802. <li>Upgraded Quadtree with more robust implementation
  803. <li>Replaced IntervalTree with a more robust implementation of BinTree
  804. <li>Added STRTree 2-D spatial index, which exhibits better performance than QuadTrees in many situations.
  805. <li>Added EnhancePrecisionOp, which uses precisioning enhancing techniques to reduce the number of failure cases due to robustness problems.
  806. </ul>
  807. <h3>Bug Fixes</h3>
  808. <ul>
  809. <li>fixed ConvexHull to use TreeSet instead of HashSet for coordinates
  810. <li>Fixed isValid for GeometryCollections containing Polygons, which were sometimes erroneously returning a validity failure for correct Geometrys.
  811. <li>Fixed bug in LineSegment.distancePointLine() which would return the incorrect distance for a LineSegment with two identical points
  812. <li>Improved error handling in CGAlgorithms.isCCW()
  813. <li>IsValid now checks for too few points in a geometry component (e.g. due to repeated points in a ring)
  814. </ul>
  815. <h3>API Changes</h3>
  816. <ul>
  817. <li>added Stopwatch class
  818. <li>added Geometry.getArea() and Geometry.getLength() methods
  819. <li>added CGAlgorithms.signedArea() method
  820. <li>added methods to LineSegment - closestPoint(), getLength()
  821. <li>added CoordinateArrrays and CoordinateLists utility classes
  822. <li>Added TopologyValidationError.getErrorType() method
  823. <li>Added Envelope#intersects; deprecated Envelope#overlaps.
  824. <li>Added Geometry#geometryChanged() method to allow signaling when Geometry coordinates have been mutated by a client class
  825. <li>Added STRTree class implementing a Sort-Tile-Recursive spatial index (a variant of a packed R-tree)
  826. <li>Deleted IntervalTree 1-D spatial index (replaced by BinTree)
  827. <li>Add BinTree 1-D spatial index
  828. </ul>
  829. <!----------------------------------------------------------------------->
  830. <hr size='4' color='darkblue'>
  831. <h2>Version 1.1.1</h2>
  832. Release Date: 9 April 2002
  833. <h3>Bug Fixes</h3>
  834. <ul>
  835. <li>fixed decimal-point symbol localization bug in WKTWriter
  836. <li>fixed bug in Envelope.int(Envelope env)
  837. <li>fixed filename case of SFSMultiLineString.java and IntervalTree.java
  838. </ul>
  839. <h3>API Changes</h3>
  840. <ul>
  841. <li>deleted TopologyException class
  842. <li>renamed CGAlgorithms.isPointInPolygon to isPointInRing (a more accurate description of what the method computes)
  843. </ul>
  844. <h3>API Additions</h3>
  845. <ul>
  846. <li>added Geometry.getCoordinate() method
  847. <li>added Geometry.distance() method
  848. <li>added GeometryComponentFilter interface and Geometry.apply(GeometryComponentFilter) method
  849. </ul>
  850. <!----------------------------------------------------------------------->
  851. <hr size='4' color='darkblue'>
  852. <h2>Version 1.1</h2>
  853. Release Date: 28 March 2002
  854. <h3>New Features</h3>
  855. <ul>
  856. <li>added Geometry.isSimple() and Geometry.isValid() methods
  857. <li>improved design of topological data structures
  858. <li>added Geometry.setSRID() method
  859. <li>improved functionality of the Envelope class
  860. <li>added ability to write to an arbitrary java.io.Writer object to WKTWriter
  861. <li>added Validate and Mark Location functionality to TestBuilder
  862. </ul>
  863. <!----------------------------------------------------------------------->
  864. <hr size='4' color='darkblue'>
  865. <h2>Version 1.0</h2>
  866. Release Date: 1 February 2002
  867. <ul>
  868. <li>Removed some non-compatibilities with Java 1.1
  869. <li>Fixed bug in constructing buffer outline around inside of angles
  870. <li>In TestBuilder vertices are now displayed with fixed size in view units
  871. <li>Improved code for WKTWriter.writeFormatted()
  872. <li>Fixed bug in constructor for LinearRing
  873. <li>Improved implementation of sweepline intersection algorithm to avoid use of dynamic set.
  874. <li>Fixed bug in ConvexHull.cleanRing()
  875. <li>Refactored RobustLineIntersector and NonRobustLineIntersector
  876. </ul>
  877. <!----------------------------------------------------------------------->
  878. <hr size='4' color='darkblue'>
  879. <h2>Version 0.0</h2>
  880. Release Date: 30 May 2001
  881. <p>
  882. <i>Baseline version</i>
  883. </body>
  884. </html>