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