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