source: tags/3.3.2/NEWS

Last change on this file was 3556, checked in by strk, 13 years ago

Prepare for 3.3.2 release

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