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