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