4 - Bug fixes / improvements
5 - Fixed CMAKE_CXX_FLAGS overridind -std=gnu++0x (#489)
6 - Missing versions update in CMake configuration (#490)
7 - Fix noding of self-intersecting lines through UnaryUnion (#482)
8 - Fix handling of collapsed edges skipping in BufferOp (#494)
9 - Print up to 18 digits of precision for TopologyException points
10 - Fix noding with reduced precision in Buffer operation (#473)
11 - Fix HotPixel original point invalidation (#498)
12 - Fix CascadedPolygonUnion to discard non-polygonal components (#499)
17 - Bug fixes / improvements
18 - Fix memory leak on invalid geometry in InteriorPointArea (#475)
19 - ValidOp abort in presence of 2 touching holes forming an island (#449)
20 - Enable prepared intersects operation for points
21 - Fortify suspicious code found by static analisys tools
22 - Fix for SOLARIS build (#461)
23 - Fix EMPTY result from GEOSOffsetCurve with distance 0 (#454)
24 - Fix Geometry::clone to copy SRID (#464)
25 - Fix for clang builds (#463)
26 - Fix out-of-place builds for python binding (#332) and regress testing
27 - Fix OS X framework cmake build (#385)
33 - CAPI: GEOSBufferWithParams (allows single sided buffers)
34 - CAPI: GEOSOffsetCurve deprecates GEOSSingleSidedBuffer
35 - CAPI: GEOSUnaryUnion deprecates GEOSCascadedUnion
36 - CAPI: GEOSisValidDetail: tell state, reason & location apart. allows
38 - CAPI: GEOSContext_setNoticeHandler_r, GEOSContext_setErrorHandler_r
39 - CAPI: GEOSGeom_createEmptyPoint, GEOSGeom_createEmptyLineString
40 GEOSGeom_createEmptyPolygon, GEOSGeom_createEmptyCollection
41 - CAPI: GEOSGeom_extractUniquePoints
42 - CAPI: GEOSGetGeometryN support for single geometries
43 - CAPI: GEOSPolygonize_full to return all informations computed by
45 - CAPI: GEOSOrientationIndex
46 - CAPI: GEOSSharedPaths to find shared paths and their orientation
48 - CAPI: GEOSRelatePatternMatch
49 - CAPI: GEOSCovers, GEOSCoveredBy (#396)
50 - CAPI: GEOSRelateBoundaryNodeRule (#399)
51 - CAPI: GEOSGeom_getCoordinateDimension() (#311)
52 - CAPI: GEOSWKTWriter_setOutputDimension, GEOSWKTWriter_setOld3D (#292)
53 - PHP: new PHP5 bindings based on CAPI
54 - Semantic C++ API changes:
55 - Geometry inheritance chain changed to introduce Puntal, Lineal
56 and Polygonal classes (virtual inheritance introduced)
57 - Polygonizer::getInvalidRingLines retains ownership of vector elements
58 - Geometry::isWithinDistance method is now const
59 - Polygonizer::getCutEdges returns by const ref
60 - Polygonizer::getDangles returns by const ref
61 - Empty LinearRings are closed by definition
62 - Bug fixes / improvements
63 - Fixed Geometry.distance() and DistanceOp to return 0.0 for empty inputs
64 - Invalid compound geometries reported as valid (#333)
65 - Return up to 15 digits of precision from GEOSisValidReason_t (#329)
66 - CAPI: do not leak contexts when using the non-reentrant interface
67 - Fix duplicated dangles returned by Polygonizer
68 - Fix SnapIfNeededOverlayOp to throw the originating exception
69 - Fixed LineMerger to skip lines with only a single unique coordinate
70 - Fix NodedSegmentString to handle zero-length line segments correctly
72 - Fixed buffer OffsetCurveSetBuilder to handle "flat" rings correctly
73 - Added illegal state check in LineSegment::pointAlongOffset()
74 - Improved performance of RectangleIntersects by always using
75 segment-scanning and refining SegmentIntersectionTester
76 - Reduce memory use in PreparedGeometry predicates (#342)
77 - Fix infinite loop in RobustDeterminant with nan/inf input (#357)
82 - Add Single-sided buffer operation
84 - Drastically improved Buffer speed (20x for a case in testsuite)
85 - Improved EdgeList duplicate edge finding
86 - Added algorithm::distance package
87 - Added algorithm::Angle class
88 - Added algorithm::BoundaryNodeRule class
89 - IsSimpleOp can now return non-simple location coordinate
90 - DistanceOp can now check for 'within distance' predicate
92 - MultiPolygon::getBoundary always return MultiLineString, also
93 when the result is the EMPTY geometry.
94 - Various bug and leak fixes, optimizations
95 - Replace MarkupSTL with tinyXML
99 - PreparedGeometry operations for very fast predicate testing.
104 - Easier builds under MSVC and OpenSolaris
105 - Thread-safe CAPI option
106 - IsValidReason added to CAPI
107 - GEOSPolygonizer_getCutEdges added to CAPI
108 - CascadedUnion operation for fast unions of geometry sets
109 - Numerous bug fixes.
110 http://trac.osgeo.org/geos/query?status=closed&milestone=3.1.0&order=priority
114 These are mostly ABI breaking changes.
115 In few cases the API also changed, but the most external one
116 (the documented one) should be unchanged.
119 - Added geom::BinaryOp class performing a binary operation
120 using different heuristics to reduce probability of robustness
121 issues. Both C-API and XMLTester now use this class for
123 - Added covers() and coveredBy() predicates to Geometry class
124 - Added overlay::overlayOp() adapter class
125 - Added GEOSSimplify() and GEOSTopologyPreserveSimplify()
127 - Added closed ring checks in IsValidOp
128 - Multi-input support in XMLTester
130 - Envelope(string) ctor
132 - New ShortCircuitedGeometryVisitor class
133 - New operation/predicate package
134 - Added CGAlgorithms::isPointInRing() version working with
135 Coordinate::ConstVect type (faster!)
136 - Added getAt(int pos, Coordinate &to) funtion to CoordinateSequence
138 - Moved GetNumGeometries() and GetGeometryN() interfaces
139 from GeometryCollection to Geometry class.
140 - New planarSubgraph class
141 - New ConnectedSubgraphFinder class.
142 - New LineSequencer class
143 - New WKTWriter::toLineString and ::toPoint convenience methods
144 - New IsValidOp::setSelfTouchingRingFormingHoleValid method
145 - New WKTWriter::toLineString and ::toPoint convenience methods
146 - New IsValidOp::setSelfTouchingRingFormingHoleValid method
147 - New Envelope::centre()
148 - New Envelope::intersection(Envelope)
149 - New Envelope::expandBy(distance, [ydistance])
150 - New LineString::reverse()
151 - New MultiLineString::reverse()
152 - New Geometry::buffer(distance, quadSeg, endCapStyle)
153 - New SnapRounding code
154 - New size() and operator[] interfaces to CoordinateSequence
155 - New ScaledNoder class
156 - New unit tests (make check rule)
161 - Coordinate copies reduction
162 - Heap allocations reduction
163 - More classes made final
164 - Better use of standard containers
165 - Use of singletons when appropriate
166 - Removed many function calls in loops' end conditions
167 - Improved XMLTester output and user interface
168 - Improved memory use in geos::geom::util::PolygonExtractor
169 - Ported JTS-1.7 version of ConvexHull with big attention to
170 memory usage optimizations.
171 - Changed CoordinateArrayFilter to reduce memory copies
172 - Changed UniqueCoordinateArrayFilter to reduce memory copies
173 - Added rectangle-based optimizations of intersects() and
175 - Inlined all planarGraphComponent class
176 - More iterators returning methods and inlining in planargraph.
177 - Obsoleted toInternalGeometry/fromInternalGeometry
178 - Improved buffering speed and robustness by using Snap Rounding
182 - SegmentString: getCoordinates() doesn't return a clone
183 anymore, getCoordinatesRO() obsoleted.
184 - JTS packages mapped to geos:: sub-namespaces
185 - Geometry::getInteriorPoint() returns NULL if called
186 against an EMPTY geom
187 - LineString::get{Start,End}Point return NULL for
189 - GEOSException is now derived by std::runtim_exception
190 and thrown by const reference.
191 - Geometry constructors made protected, to force use
192 of a GeometryFactory.
195 - More const-correct signatures
196 - Stronger methods typing (removed some void * args).
197 - Changed index-related funx signatures to use size_t
199 - More const-correctness in Buffer "package"
200 - Bugfix in LineString::getCoordinate() failing to return
201 NULL from getCoordinat() when empty.
202 - Use unsigned int for indexes and sizes.
205 - Namespaces mapping JTS packages
206 - Renamed classes after JTS names (namespaces use made this possible
208 - Splitted headers, for build speedup and possible API reduction.
209 - Moved source/bigtest and source/test to tests/bigtest
211 - Moved C-API in it's own top-level dir capi/
212 - Reworked automake scripts to produce a static lib for each subdir
213 and then link all subsystem's libs togheter
214 - Renamed DefaultCoordinateSequence to CoordinateArraySequence.
215 - Renamed OverlayOp opcodes by prepending the 'op' prefix, and
216 given the enum a name (OpCode) for type-safety.
219 - Fixed bug causing redundant linestrings to be returned in the
220 result of overlaying polygons containing touching holes (#13)
221 - Fixed integer conversion bug
222 - Fixed PointLocator handling of LinearRings
223 - Added missing ::clone() methods for Multi* geoms
225 - (Partial) Detailed list of changes:
226 - Changed SegmentNode to contain a *real* Coordinate (not a pointer)
227 to reduce construction costs.
228 - Changed geomgraph nodeMap to use Coordinate pointers as keys
229 - Envelope destructor made non-virtual to give compiler more static
231 - Changed BufferSubgraph::computeDepths to use a set instead of a
232 vector for checking visited Edges.
233 - Made LineIntersector a concrete type
234 - Node::isIncidentEdgeInResult() method made virtual
235 - Const-correct signatures in LineMerger package
236 - Changed operation/valid/*NestedRingTester classes interface
237 to use Coordinate pointers instead of copies.
238 - Changed EdgeIntersectionList to use a set instead of a vector
239 - Changed DepthSegment to store a real Coordinate rather then a pointer.
240 - Changed SubgraphDepthLocater to store real containers rather then
242 - Changed BufferSubgraph to store a real RightmostEdgeFinder and real
243 containers rather then pointers.
244 - CoordinateSequence API changes:
245 - point index and size related functions
246 use unsigned int rather then int
247 - Changed EdgeEndStar to maintain a single container for EdgeEnds
248 - Changed PlanarGraph::addEdges to take a const vector by ref
249 rathern then a non-const vector by pointer
250 - Changed EdgeList::addAll to take a const vector by ref
251 rather then a non-const vector by pointer
252 - Added apply_rw(CoordinateFilter *) and apply_ro(CoordinateFilter *)
253 const to CoordinateSequence
254 - LineBuilder::lineEdgesList made a real vector, rather then pointer
256 - SegmentString::eiList made a real SegmentNodeList, rather then
257 a pointer (private member)
258 - Removed coordinate copies in ElevationMatrix::elevate
259 - Changed CoordinateFilter interface to have a const method
260 for filter_rw, updated interfaces using this to take
261 const CoordinateFilter (apply_rw).
266 - Added version.in.vc to distribution
270 - Support for MingW builds
271 - Bugfix in Polygonizer chocking on invalid LineString inputs
272 - CAPI: small leak removed in GEOSHasZ()
276 - Performance improvement in OverlayOp::insertUniqueEdge()
277 - CoordinateSequence copy removal in EdgeRing
278 - Minor memory allocation improvements
279 - Higher dimensions interface for CoordinateSequence
280 - Added getCoordinatesRO for Point class
282 - NEW Simplified and stabler C API
286 - Severe BUGFIX in BufferSubgraphGT and other functions used
287 as StrictWeakOrdering predicates for sort()
291 - win32/mingw build support
292 - Segfault fix in LinearRing and LineString constructors
293 - Segfault fix in Polygonizer
294 - XMLTester installed by default
295 - XMLTester code cleanup
296 - Fixed handling of collection input in GeometryFactory::buildGeometry
297 - Added shortcircuit test for Union operation
298 - Reduced useless Coordinate copies in CGAlgorithms::isPointInRing()
299 - Performance improvements in CGAlgorithms::isOnLine()
300 - Other minor performance improvements
301 - New Node::isIncidentEdgeInResult() method
302 - OverlayOp's PointBuilder performance improvement by reduction
303 of LineIntersector calls.
304 - Optimizations in Buffer operation
305 - Sever BUGFIX in DepthSegmentLT as suggested by Graeme Hiebert
309 - Segfault fix in Point::isEmpty
310 - Mem Leak fix in OffsetCurveBuilder::getRingCurve
311 - Bugfix in LineSegment::reverse
312 - Added multipolygon buffering test in source/test/testLeaksBig
313 - Ported JTS robustness patch for RobustLineIntersector
314 - Removed useless Coordinate copies in OverlayOp::mergeZ()
315 - Avoided throws by IsValid on invalid input
316 - Stricter C++ syntax (math.h=>cmath, ieeefp.h in "C" block, ostringstream
318 - Better support for older compilers (Polygonizer::LineStringAdder friendship)
319 - Removed useless Coordinate copies in CGAlgorithms::isOnLine()
320 - Added support for polygonize and parametrized buffer tests in XMLTester
321 - Fixed support for --includedir and --libdir
322 - Fixed Z interpolation in LineIntersector
323 - Handled NULL results from getCentroid() in XMLTester
324 - Segfault fix in (EMPTY)Geometry::getCentroid()
325 - Made polygon::getBoundary() always OGC-valid (no LinearRings)
326 - Input checking and promoting in GeometryFactory::createMultiLineString()
327 - Segfault fix in GeometryEditor::editPolygon()
332 - Fixed uninitialized Coordinate in TopologyException
333 - Added install of version.h, platform.h and timeval.h
334 - Memleak fix in PolygonizeGraph
335 - Memleak fix in OverlayOp
336 - Compiler warnings removal
338 - Z interpolation in overlay operations
339 - Debian package build scripts
344 - Added Polygonizer and LineMerger classes.
345 - python wrapper examples
346 - General cleanup / warnings removal
347 - cleaner win32 / older copilers builds
348 - Reduced heap allocations
349 - debian package builder scripts
350 - reduction of standard C lib headers dependency
351 - Z support in overlay operations.
356 - CoordinateList renamed to CoordinateSequence, BasicCoordinateList
357 renamed to DefaultCoordinateSequence to reflect JTS changes.
358 DefaultCoordinateSequenceFactory and CoordinateSequenceFactory
359 got same interface as JTS.
360 - Added geos/version.h defining versioning infos
361 - Added geos.h for quick inclusion. It will include geos/geom.h,
362 new geos/version.h, geos/util.h geos/io.h and geos/unload.h
363 (geometry input/output, exceptions, operations).
364 - Added a geos::version() function showing GEOS and equivalent
365 JTS versions as strings.
366 - All geometry constructors take ownership of given arguments.
367 GeometryFactory provides pass-by-reference geometry creators
368 to take care of a deep-copy.
369 - GeometryFactory::createMultiPoint(const CoordinateList *)
371 GeometryFactory::createMultiPoint(const CoordinateList &)
372 to reflect copy semantic
373 - GeometryFactory: EMPTY geometry creation do now have their
374 own constructors taking no arguments.
375 - Geometry constructors taking PrecisionModel and SRID have
376 been dropped. You have to use GeometryFactory instead.
377 - WKTWriter default constructor has been dropped. You need
378 to initialize it with an explicit GeometryFactory