source: tags/3.3.5/NEWS

Last change on this file was 3686, checked in by strk, 4 years ago

Set version to 3.3.5 final, and release date

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