source: tags/3.1.1/NEWS

Last change on this file was 2573, checked in by pramsey, 7 years ago

Prepare for 3.1.1 release

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 10.9 KB
Line 
1Changes in 3.1.1
2
3- Bug fixes
4  - Calculations in Octant
5  - Packaging fixes
6  - Memory leaks
7  - Buffer build for multipolygons
8
9
10Changes in 3.1.0
11
12- PreparedGeometry operations for very fast predicate testing.
13  - Intersects()
14  - Covers()
15  - CoveredBy()
16  - ContainsProperly()
17- Easier builds under MSVC and OpenSolaris
18- Thread-safe CAPI option
19- IsValidReason added to CAPI
20- CascadedUnion operation for fast unions of geometry sets
21- Numerous bug fixes.
22  http://trac.osgeo.org/geos/query?status=closed&milestone=3.1.0&order=priority
23
24Changes in 3.0.0
25
26   These are mostly ABI breaking changes.
27   In few cases the API also changed, but the most external one
28   (the documented one) should be unchanged.
29
30- New things:
31        - Added geom::BinaryOp class performing a binary operation
32          using different heuristics to reduce probability of robustness
33          issues. Both C-API and XMLTester now use this class for
34          binary operations.
35        - Added covers() and coveredBy() predicates to Geometry class
36        - Added overlay::overlayOp() adapter class
37        - Added GEOSSimplify() and GEOSTopologyPreserveSimplify()
38          to the C API
39        - Added closed ring checks in IsValidOp
40        - Multi-input support in XMLTester
41        - HEXWKB I/O
42        - Envelope(string) ctor
43        - Ruby interface
44        - New ShortCircuitedGeometryVisitor class
45        - New operation/predicate package
46        - Added CGAlgorithms::isPointInRing() version working with
47          Coordinate::ConstVect type (faster!)
48        - Added getAt(int pos, Coordinate &to) funtion to CoordinateSequence
49          class.
50        - Moved GetNumGeometries() and GetGeometryN() interfaces
51          from GeometryCollection to Geometry class.
52        - New planarSubgraph class
53        - New ConnectedSubgraphFinder class.
54        - New LineSequencer class
55        - New WKTWriter::toLineString and ::toPoint convenience methods
56        - New IsValidOp::setSelfTouchingRingFormingHoleValid method
57        - New WKTWriter::toLineString and ::toPoint convenience methods
58        - New IsValidOp::setSelfTouchingRingFormingHoleValid method
59        - New Envelope::centre()
60        - New Envelope::intersection(Envelope)
61        - New Envelope::expandBy(distance, [ydistance])
62        - New LineString::reverse()
63        - New MultiLineString::reverse()
64        - New Geometry::buffer(distance, quadSeg, endCapStyle)
65        - New SnapRounding code
66        - New size() and operator[] interfaces to CoordinateSequence
67        - New ScaledNoder class
68        - New unit tests (make check rule)
69
70- Optimizations:
71        - WKT parser speedup
72        - Function inlining
73        - Coordinate copies reduction
74        - Heap allocations reduction
75        - More classes made final
76        - Better use of standard containers
77        - Use of singletons when appropriate
78        - Removed many function calls in loops' end conditions
79        - Improved XMLTester output and user interface
80        - Improved memory use in geos::geom::util::PolygonExtractor
81        - Ported JTS-1.7 version of ConvexHull with big attention to
82          memory usage optimizations.
83        - Changed CoordinateArrayFilter to reduce memory copies
84        - Changed UniqueCoordinateArrayFilter to reduce memory copies
85        - Added rectangle-based optimizations of intersects() and
86          contains() ops
87        - Inlined all planarGraphComponent class
88        - More iterators returning methods and inlining in planargraph.
89        - Obsoleted toInternalGeometry/fromInternalGeometry
90        - Improved buffering speed and robustness by using Snap Rounding
91
92- Semantic changes
93
94        - SegmentString: getCoordinates() doesn't return a clone
95          anymore, getCoordinatesRO() obsoleted.
96        - JTS packages mapped to geos:: sub-namespaces
97        - Geometry::getInteriorPoint() returns NULL if called
98          against an EMPTY geom
99        - LineString::get{Start,End}Point return NULL for
100          EMPTY geoms
101        - GEOSException is now derived by std::runtim_exception
102          and thrown by const reference.
103        - Geometry constructors made protected, to force use
104          of a GeometryFactory.
105
106- Correctness:
107        - More const-correct signatures
108        - Stronger methods typing (removed some void * args).
109        - Changed index-related funx signatures to use size_t
110          rather then int
111        - More const-correctness in Buffer "package"
112        - Bugfix in LineString::getCoordinate() failing to return
113          NULL from getCoordinat() when empty.
114        - Use unsigned int for indexes and sizes.
115
116- Layout changes:
117        - Namespaces mapping JTS packages
118        - Renamed classes after JTS names (namespaces use made this possible
119          w/out name clashes)
120        - Splitted headers, for build speedup and possible API reduction.
121        - Moved source/bigtest and source/test to tests/bigtest
122          and test/xmltester
123        - Moved C-API in it's own top-level dir capi/
124        - Reworked automake scripts to produce a static lib for each subdir
125          and then link all subsystem's libs togheter
126        - Renamed DefaultCoordinateSequence to CoordinateArraySequence.
127        - Renamed OverlayOp opcodes by prepending the 'op' prefix, and
128          given the enum a name (OpCode) for type-safety.
129
130- Bug fixes:
131        - Fixed bug causing redundant linestrings to be returned in the
132          result of overlaying polygons containing touching holes (#13)
133        - Fixed integer conversion bug
134        - Fixed PointLocator handling of LinearRings
135        - Added missing ::clone() methods for Multi* geoms
136
137- (Partial) Detailed list of changes:
138        - Changed SegmentNode to contain a *real* Coordinate (not a pointer)
139          to reduce construction costs.
140        - Changed geomgraph nodeMap to use Coordinate pointers as keys
141        - Envelope destructor made non-virtual to give compiler more static
142          binding options.
143        - Changed BufferSubgraph::computeDepths to use a set instead of a
144          vector for checking visited Edges.
145        - Made LineIntersector a concrete type
146        - Node::isIncidentEdgeInResult() method made virtual
147        - Const-correct signatures in LineMerger package
148        - Changed operation/valid/*NestedRingTester classes interface
149          to use Coordinate pointers instead of copies.
150        - Changed EdgeIntersectionList to use a set instead of a vector
151        - Changed DepthSegment to store a real Coordinate rather then a pointer.
152        - Changed SubgraphDepthLocater to store real containers rather then
153          pointers.
154        - Changed BufferSubgraph to store a real RightmostEdgeFinder and real
155          containers rather then pointers.
156        - CoordinateSequence API changes:
157                - point index and size related functions
158                  use unsigned int rather then int
159        - Changed EdgeEndStar to maintain a single container for EdgeEnds
160        - Changed PlanarGraph::addEdges to take a const vector by ref
161          rathern then a non-const vector by pointer
162        - Changed EdgeList::addAll to take a const vector by ref
163          rather then a non-const vector by pointer
164        - Added apply_rw(CoordinateFilter *) and apply_ro(CoordinateFilter *)
165          const to CoordinateSequence
166        - LineBuilder::lineEdgesList made a real vector, rather then pointer
167          (private member)
168        - SegmentString::eiList made a real SegmentNodeList, rather then
169          a pointer (private member)
170        - Removed coordinate copies in ElevationMatrix::elevate
171        - Changed CoordinateFilter interface to have a const method
172          for filter_rw, updated interfaces using this to take
173          const CoordinateFilter (apply_rw).
174
175
176Changes in 2.2.4
177
178        - Added version.in.vc to distribution
179
180Changes in 2.2.1
181
182- Support for MingW builds
183- Bugfix in Polygonizer chocking on invalid LineString inputs
184- CAPI: small leak removed in GEOSHasZ()
185
186Changes in 2.2.0
187
188- Performance improvement in OverlayOp::insertUniqueEdge()
189- CoordinateSequence copy removal in EdgeRing
190- Minor memory allocation improvements
191- Higher dimensions interface for CoordinateSequence
192- Added getCoordinatesRO for Point class
193- NEW WKB IO
194- NEW Simplified and stabler C API
195
196Changes in 2.1.4
197
198- Severe BUGFIX in BufferSubgraphGT and other functions used
199  as StrictWeakOrdering predicates for sort()
200
201Changes in 2.1.3
202
203- win32/mingw build support
204- Segfault fix in LinearRing and LineString constructors
205- Segfault fix in Polygonizer
206- XMLTester installed by default
207- XMLTester code cleanup
208- Fixed handling of collection input in GeometryFactory::buildGeometry
209- Added shortcircuit test for Union operation
210- Reduced useless Coordinate copies in CGAlgorithms::isPointInRing()
211- Performance improvements in CGAlgorithms::isOnLine()
212- Other minor performance improvements
213- New Node::isIncidentEdgeInResult() method
214- OverlayOp's PointBuilder performance improvement by reduction
215  of LineIntersector calls.
216- Optimizations in Buffer operation
217- Sever BUGFIX in DepthSegmentLT as suggested by Graeme Hiebert
218
219Changes in 2.1.2
220
221- Segfault fix in Point::isEmpty
222- Mem Leak fix in OffsetCurveBuilder::getRingCurve
223- Bugfix in LineSegment::reverse
224- Added multipolygon buffering test in source/test/testLeaksBig
225- Ported JTS robustness patch for RobustLineIntersector
226- Removed useless Coordinate copies in OverlayOp::mergeZ()
227- Avoided throws by IsValid on invalid input
228- Stricter C++ syntax (math.h=>cmath, ieeefp.h in "C" block, ostringstream
229  instead of sprintf)
230- Better support for older compilers (Polygonizer::LineStringAdder friendship)
231- Removed useless Coordinate copies in CGAlgorithms::isOnLine()
232- Added support for polygonize and parametrized buffer tests in XMLTester
233- Fixed support for --includedir and --libdir
234- Fixed Z interpolation in LineIntersector
235- Handled NULL results from getCentroid() in XMLTester
236- Segfault fix in (EMPTY)Geometry::getCentroid()
237- Made polygon::getBoundary() always OGC-valid (no LinearRings)
238- Input checking and promoting in GeometryFactory::createMultiLineString()
239- Segfault fix in GeometryEditor::editPolygon()
240
241
242Changes in 2.1.1
243
244- Fixed uninitialized Coordinate in TopologyException
245- Added install of version.h, platform.h and timeval.h
246- Memleak fix in PolygonizeGraph
247- Memleak fix in OverlayOp
248- Compiler warnings removal
249- Cleaner w32 build
250- Z interpolation in overlay operations
251- Debian package build scripts
252
253
254Changes in 2.1.0
255
256- Added Polygonizer and LineMerger classes.
257- python wrapper examples
258- General cleanup / warnings removal
259- cleaner win32 / older copilers builds
260- Reduced heap allocations
261- debian package builder scripts
262- reduction of standard C lib headers dependency
263- Z support in overlay operations.
264
265
266Changes in 2.0.0
267
268- CoordinateList renamed to CoordinateSequence, BasicCoordinateList
269  renamed to DefaultCoordinateSequence to reflect JTS changes.
270  DefaultCoordinateSequenceFactory and CoordinateSequenceFactory
271  got same interface as JTS.
272- Added geos/version.h defining versioning infos
273- Added geos.h for quick inclusion. It will include geos/geom.h,
274  new geos/version.h, geos/util.h geos/io.h and geos/unload.h
275  (geometry input/output, exceptions, operations).
276- Added a geos::version() function showing GEOS and equivalent
277  JTS versions as strings.
278- All geometry constructors take ownership of given arguments.
279  GeometryFactory provides pass-by-reference geometry creators
280  to take care of a deep-copy.
281- GeometryFactory::createMultiPoint(const CoordinateList *)
282  has been renamed to
283  GeometryFactory::createMultiPoint(const CoordinateList &)
284  to reflect copy semantic
285- GeometryFactory: EMPTY geometry creation do now have their
286  own constructors taking no arguments.
287- Geometry constructors taking PrecisionModel and SRID have
288  been dropped. You have to use GeometryFactory instead.
289- WKTWriter default constructor has been dropped. You need
290  to initialize it with an explicit GeometryFactory
291
Note: See TracBrowser for help on using the repository browser.