source: tags/3.3.8/NEWS

Last change on this file was 3775, checked in by strk, 3 years ago

Release 3.3.8

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