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