Port JTS unit test for Polygonizer class (very light..)
[geos.git] / NEWS
blob341f573d17a5df7c6342cdf6cc363d373ede3cc2
1 Changes in 3.4.0
2 ????-??-??
4 Changes in 3.3.0
5 2011-05-30
7 - New things:
8   - CAPI: GEOSBufferWithParams (allows single sided buffers)
9   - CAPI: GEOSOffsetCurve deprecates GEOSSingleSidedBuffer
10   - CAPI: GEOSUnaryUnion deprecates GEOSCascadedUnion
11   - CAPI: GEOSisValidDetail: tell state, reason & location apart. allows
12           passing flags.
13   - CAPI: GEOSContext_setNoticeHandler_r, GEOSContext_setErrorHandler_r
14   - CAPI: GEOSGeom_createEmptyPoint, GEOSGeom_createEmptyLineString
15           GEOSGeom_createEmptyPolygon, GEOSGeom_createEmptyCollection
16   - CAPI: GEOSGeom_extractUniquePoints
17   - CAPI: GEOSGetGeometryN support for single geometries
18   - CAPI: GEOSPolygonize_full to return all informations computed by
19           the polygonizer
20   - CAPI: GEOSOrientationIndex
21   - CAPI: GEOSSharedPaths to find shared paths and their orientation
22   - CAPI: GEOSSnap 
23   - CAPI: GEOSRelatePatternMatch 
24   - CAPI: GEOSCovers, GEOSCoveredBy (#396) 
25   - CAPI: GEOSRelateBoundaryNodeRule (#399) 
26   -  PHP: new PHP5 bindings based on CAPI
27 - Semantic C++ API changes:
28   - Geometry inheritance chain changed to introduce Puntal, Lineal
29     and Polygonal classes (virtual inheritance introduced)
30   - Polygonizer::getInvalidRingLines retains ownership of vector elements
31   - Geometry::isWithinDistance method is now const
32   - Polygonizer::getCutEdges returns by const ref
33   - Polygonizer::getDangles returns by const ref
34   - Empty LinearRings are closed by definition
35 - Bug fixes / improvements
36   - Fixed Geometry.distance() and DistanceOp to return 0.0 for empty inputs
37   - Invalid compound geometries reported as valid (#333)
38   - Return up to 15 digits of precision from GEOSisValidReason_t (#329)
39   - CAPI: do not leak contexts when using the non-reentrant interface
40   - Fix duplicated dangles returned by Polygonizer
41   - Fix SnapIfNeededOverlayOp to throw the originating exception
42   - Fixed LineMerger to skip lines with only a single unique coordinate
43   - Fix NodedSegmentString to handle zero-length line segments correctly
44     (via safeOctant)
45   - Fixed buffer OffsetCurveSetBuilder to handle "flat" rings correctly
46   - Added illegal state check in LineSegment::pointAlongOffset() 
47   - Improved performance of RectangleIntersects by always using
48     segment-scanning and refining SegmentIntersectionTester
49   - Reduce memory use in PreparedGeometry predicates (#342)
50   - Fix infinite loop in RobustDeterminant with nan/inf input (#357)
52 Changes in 3.2.0 
53 2009-12-14
55 - Add Single-sided buffer operation
56 - JTS-1.10 sync ...
57   - Drastically improved Buffer speed (20x for a case in testsuite)
58   - Improved EdgeList duplicate edge finding
59   - Added algorithm::distance package
60   - Added algorithm::Angle class
61   - Added algorithm::BoundaryNodeRule class
62   - IsSimpleOp can now return non-simple location coordinate
63   - DistanceOp can now check for 'within distance' predicate
64     (earlier exit)
65   - MultiPolygon::getBoundary always return MultiLineString, also
66     when the result is the EMPTY geometry.
67 - Various bug and leak fixes, optimizations
68 - Replace MarkupSTL with tinyXML
70 Changes in 3.1.0
72 - PreparedGeometry operations for very fast predicate testing.
73   - Intersects()
74   - Covers() 
75   - CoveredBy()
76   - ContainsProperly()
77 - Easier builds under MSVC and OpenSolaris
78 - Thread-safe CAPI option
79 - IsValidReason added to CAPI
80 - GEOSPolygonizer_getCutEdges added to CAPI
81 - CascadedUnion operation for fast unions of geometry sets
82 - Numerous bug fixes.
83   http://trac.osgeo.org/geos/query?status=closed&milestone=3.1.0&order=priority
85 Changes in 3.0.0
87    These are mostly ABI breaking changes.
88    In few cases the API also changed, but the most external one
89    (the documented one) should be unchanged.
91 - New things:
92         - Added geom::BinaryOp class performing a binary operation
93           using different heuristics to reduce probability of robustness
94           issues. Both C-API and XMLTester now use this class for
95           binary operations.
96         - Added covers() and coveredBy() predicates to Geometry class
97         - Added overlay::overlayOp() adapter class
98         - Added GEOSSimplify() and GEOSTopologyPreserveSimplify()
99           to the C API
100         - Added closed ring checks in IsValidOp
101         - Multi-input support in XMLTester 
102         - HEXWKB I/O
103         - Envelope(string) ctor
104         - Ruby interface
105         - New ShortCircuitedGeometryVisitor class
106         - New operation/predicate package
107         - Added CGAlgorithms::isPointInRing() version working with
108           Coordinate::ConstVect type (faster!)
109         - Added getAt(int pos, Coordinate &to) funtion to CoordinateSequence
110           class.
111         - Moved GetNumGeometries() and GetGeometryN() interfaces
112           from GeometryCollection to Geometry class.
113         - New planarSubgraph class
114         - New ConnectedSubgraphFinder class.
115         - New LineSequencer class
116         - New WKTWriter::toLineString and ::toPoint convenience methods
117         - New IsValidOp::setSelfTouchingRingFormingHoleValid method
118         - New WKTWriter::toLineString and ::toPoint convenience methods
119         - New IsValidOp::setSelfTouchingRingFormingHoleValid method
120         - New Envelope::centre()
121         - New Envelope::intersection(Envelope)
122         - New Envelope::expandBy(distance, [ydistance])
123         - New LineString::reverse()
124         - New MultiLineString::reverse()
125         - New Geometry::buffer(distance, quadSeg, endCapStyle)
126         - New SnapRounding code
127         - New size() and operator[] interfaces to CoordinateSequence
128         - New ScaledNoder class
129         - New unit tests (make check rule)
131 - Optimizations:
132         - WKT parser speedup
133         - Function inlining
134         - Coordinate copies reduction
135         - Heap allocations reduction
136         - More classes made final
137         - Better use of standard containers
138         - Use of singletons when appropriate
139         - Removed many function calls in loops' end conditions
140         - Improved XMLTester output and user interface
141         - Improved memory use in geos::geom::util::PolygonExtractor
142         - Ported JTS-1.7 version of ConvexHull with big attention to
143           memory usage optimizations.
144         - Changed CoordinateArrayFilter to reduce memory copies
145         - Changed UniqueCoordinateArrayFilter to reduce memory copies
146         - Added rectangle-based optimizations of intersects() and
147           contains() ops
148         - Inlined all planarGraphComponent class
149         - More iterators returning methods and inlining in planargraph.
150         - Obsoleted toInternalGeometry/fromInternalGeometry 
151         - Improved buffering speed and robustness by using Snap Rounding
153 - Semantic changes
155         - SegmentString: getCoordinates() doesn't return a clone
156           anymore, getCoordinatesRO() obsoleted.
157         - JTS packages mapped to geos:: sub-namespaces
158         - Geometry::getInteriorPoint() returns NULL if called
159           against an EMPTY geom
160         - LineString::get{Start,End}Point return NULL for
161           EMPTY geoms
162         - GEOSException is now derived by std::runtim_exception
163           and thrown by const reference.
164         - Geometry constructors made protected, to force use
165           of a GeometryFactory.
167 - Correctness:
168         - More const-correct signatures
169         - Stronger methods typing (removed some void * args).
170         - Changed index-related funx signatures to use size_t
171           rather then int
172         - More const-correctness in Buffer "package"
173         - Bugfix in LineString::getCoordinate() failing to return
174           NULL from getCoordinat() when empty.
175         - Use unsigned int for indexes and sizes.
177 - Layout changes:
178         - Namespaces mapping JTS packages
179         - Renamed classes after JTS names (namespaces use made this possible
180           w/out name clashes)
181         - Splitted headers, for build speedup and possible API reduction.
182         - Moved source/bigtest and source/test to tests/bigtest
183           and test/xmltester
184         - Moved C-API in it's own top-level dir capi/
185         - Reworked automake scripts to produce a static lib for each subdir
186           and then link all subsystem's libs togheter
187         - Renamed DefaultCoordinateSequence to CoordinateArraySequence.
188         - Renamed OverlayOp opcodes by prepending the 'op' prefix, and
189           given the enum a name (OpCode) for type-safety.
191 - Bug fixes:
192         - Fixed bug causing redundant linestrings to be returned in the
193           result of overlaying polygons containing touching holes (#13)
194         - Fixed integer conversion bug
195         - Fixed PointLocator handling of LinearRings
196         - Added missing ::clone() methods for Multi* geoms 
198 - (Partial) Detailed list of changes:
199         - Changed SegmentNode to contain a *real* Coordinate (not a pointer)
200           to reduce construction costs.
201         - Changed geomgraph nodeMap to use Coordinate pointers as keys
202         - Envelope destructor made non-virtual to give compiler more static
203           binding options.
204         - Changed BufferSubgraph::computeDepths to use a set instead of a
205           vector for checking visited Edges.
206         - Made LineIntersector a concrete type
207         - Node::isIncidentEdgeInResult() method made virtual
208         - Const-correct signatures in LineMerger package
209         - Changed operation/valid/*NestedRingTester classes interface
210           to use Coordinate pointers instead of copies.
211         - Changed EdgeIntersectionList to use a set instead of a vector
212         - Changed DepthSegment to store a real Coordinate rather then a pointer.
213         - Changed SubgraphDepthLocater to store real containers rather then
214           pointers.
215         - Changed BufferSubgraph to store a real RightmostEdgeFinder and real
216           containers rather then pointers.
217         - CoordinateSequence API changes:
218                 - point index and size related functions
219                   use unsigned int rather then int
220         - Changed EdgeEndStar to maintain a single container for EdgeEnds 
221         - Changed PlanarGraph::addEdges to take a const vector by ref
222           rathern then a non-const vector by pointer
223         - Changed EdgeList::addAll to take a const vector by ref
224           rather then a non-const vector by pointer
225         - Added apply_rw(CoordinateFilter *) and apply_ro(CoordinateFilter *)
226           const to CoordinateSequence
227         - LineBuilder::lineEdgesList made a real vector, rather then pointer
228           (private member)
229         - SegmentString::eiList made a real SegmentNodeList, rather then
230           a pointer (private member)
231         - Removed coordinate copies in ElevationMatrix::elevate
232         - Changed CoordinateFilter interface to have a const method
233           for filter_rw, updated interfaces using this to take
234           const CoordinateFilter (apply_rw).
237 Changes in 2.2.4
239         - Added version.in.vc to distribution
241 Changes in 2.2.1
243 - Support for MingW builds
244 - Bugfix in Polygonizer chocking on invalid LineString inputs
245 - CAPI: small leak removed in GEOSHasZ() 
247 Changes in 2.2.0
249 - Performance improvement in OverlayOp::insertUniqueEdge()
250 - CoordinateSequence copy removal in EdgeRing
251 - Minor memory allocation improvements 
252 - Higher dimensions interface for CoordinateSequence
253 - Added getCoordinatesRO for Point class
254 - NEW WKB IO
255 - NEW Simplified and stabler C API 
257 Changes in 2.1.4
259 - Severe BUGFIX in BufferSubgraphGT and other functions used
260   as StrictWeakOrdering predicates for sort()
262 Changes in 2.1.3
264 - win32/mingw build support
265 - Segfault fix in LinearRing and LineString constructors
266 - Segfault fix in Polygonizer
267 - XMLTester installed by default
268 - XMLTester code cleanup
269 - Fixed handling of collection input in GeometryFactory::buildGeometry
270 - Added shortcircuit test for Union operation
271 - Reduced useless Coordinate copies in CGAlgorithms::isPointInRing()
272 - Performance improvements in CGAlgorithms::isOnLine()
273 - Other minor performance improvements
274 - New Node::isIncidentEdgeInResult() method
275 - OverlayOp's PointBuilder performance improvement by reduction
276   of LineIntersector calls.
277 - Optimizations in Buffer operation
278 - Sever BUGFIX in DepthSegmentLT as suggested by Graeme Hiebert
280 Changes in 2.1.2
282 - Segfault fix in Point::isEmpty
283 - Mem Leak fix in OffsetCurveBuilder::getRingCurve
284 - Bugfix in LineSegment::reverse
285 - Added multipolygon buffering test in source/test/testLeaksBig
286 - Ported JTS robustness patch for RobustLineIntersector
287 - Removed useless Coordinate copies in OverlayOp::mergeZ()
288 - Avoided throws by IsValid on invalid input
289 - Stricter C++ syntax (math.h=>cmath, ieeefp.h in "C" block, ostringstream
290   instead of sprintf)
291 - Better support for older compilers (Polygonizer::LineStringAdder friendship)
292 - Removed useless Coordinate copies in CGAlgorithms::isOnLine()
293 - Added support for polygonize and parametrized buffer tests in XMLTester
294 - Fixed support for --includedir and --libdir
295 - Fixed Z interpolation in LineIntersector
296 - Handled NULL results from getCentroid() in XMLTester
297 - Segfault fix in (EMPTY)Geometry::getCentroid()
298 - Made polygon::getBoundary() always OGC-valid (no LinearRings)
299 - Input checking and promoting in GeometryFactory::createMultiLineString()
300 - Segfault fix in GeometryEditor::editPolygon()
303 Changes in 2.1.1
305 - Fixed uninitialized Coordinate in TopologyException
306 - Added install of version.h, platform.h and timeval.h
307 - Memleak fix in PolygonizeGraph
308 - Memleak fix in OverlayOp
309 - Compiler warnings removal
310 - Cleaner w32 build
311 - Z interpolation in overlay operations
312 - Debian package build scripts
315 Changes in 2.1.0
317 - Added Polygonizer and LineMerger classes.
318 - python wrapper examples
319 - General cleanup / warnings removal
320 - cleaner win32 / older copilers builds
321 - Reduced heap allocations
322 - debian package builder scripts
323 - reduction of standard C lib headers dependency
324 - Z support in overlay operations.
327 Changes in 2.0.0
329 - CoordinateList renamed to CoordinateSequence, BasicCoordinateList
330   renamed to DefaultCoordinateSequence to reflect JTS changes.
331   DefaultCoordinateSequenceFactory and CoordinateSequenceFactory
332   got same interface as JTS.
333 - Added geos/version.h defining versioning infos
334 - Added geos.h for quick inclusion. It will include geos/geom.h,
335   new geos/version.h, geos/util.h geos/io.h and geos/unload.h
336   (geometry input/output, exceptions, operations).
337 - Added a geos::version() function showing GEOS and equivalent
338   JTS versions as strings.
339 - All geometry constructors take ownership of given arguments.
340   GeometryFactory provides pass-by-reference geometry creators
341   to take care of a deep-copy.
342 - GeometryFactory::createMultiPoint(const CoordinateList *)
343   has been renamed to
344   GeometryFactory::createMultiPoint(const CoordinateList &)
345   to reflect copy semantic
346 - GeometryFactory: EMPTY geometry creation do now have their
347   own constructors taking no arguments.
348 - Geometry constructors taking PrecisionModel and SRID have
349   been dropped. You have to use GeometryFactory instead.
350 - WKTWriter default constructor has been dropped. You need
351   to initialize it with an explicit GeometryFactory