summaryrefslogtreecommitdiff
path: root/libs/geometry/doc/release_notes.qbk
blob: 70c726f54ae86a4772c31bd2ce4d228f4940a166 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
[/============================================================================
  Boost.Geometry (aka GGL, Generic Geometry Library)

  Copyright (c) 2009-2014 Barend Gehrels, Geodan, Amsterdam, the Netherlands.
  Copyright (c) 2009-2014 Bruno Lalande, Paris, France.
  Copyright (c) 2009-2014 Mateusz Loskot <mateusz@loskot.net>, London, UK
  Copyright (c) 2011-2014 Adam Wulkiewicz

  Use, modification and distribution is subject to the Boost Software License,
  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]

[section:release_notes Release Notes]

[/=================]
[heading Boost 1.57]
[/=================]

[*Additional functionality]

[*Improvements]

* The support of parameters convertible to value_type in rtree insert(), remove() and count() functions
* Support for counterclockwise input/output in algorithm buffer
* Support for open-geometry input in algorithm buffer (open output not yet supported)
* Support for degenerate input (point-like linestrings, polygons) in algorithm buffer

[*Solved tickets]

* [@https://svn.boost.org/trac/boost/ticket/8402 8402] Implicit conversion warnings
* [@https://svn.boost.org/trac/boost/ticket/9354 9354] Bug in winding strategy affecting within() and covered_by() for non-cartesian coordinate systems
* [@https://svn.boost.org/trac/boost/ticket/10177 10177] Missing include
* [@https://svn.boost.org/trac/boost/ticket/10345 10345] Distance fails to compile for some coordinate types
* [@https://svn.boost.org/trac/boost/ticket/10398 10398] Wrong neighbour check in buffer, calculating turns
* [@https://svn.boost.org/trac/boost/ticket/10421 10421] Invalid Point-Box distance for spherical CS
* [@https://svn.boost.org/trac/boost/ticket/10615 10615] Rtree constructor feature request
* [@https://svn.boost.org/trac/boost/ticket/10643 10643] Invalid point_on_surface() result for big coordinates
* [@https://svn.boost.org/trac/boost/ticket/10668 10668] Implicit conversion warnings (duplicated 8402)

[*Bugfixes]

* Several fixes of bugs in algorithm buffer
* Bug in point_on_surface() for CCW Polygons (extreme_points()) and numerical issue (thanks to Matt Amos)
* Bug in disjoint() for A/A fixed by replacement of point_on_surface() with point_on_border() (thanks to Matt Amos)
* The result of convex_hull(), duplicated Point in open output, too small number of Points for 1- and 2-Point input
* Imprecision for big coordinates in centroid(), fixed by Points translation (related with ticket 10643)
* for_each_segment() not taking into account the last segment of open Geometry

[/=================]
[heading Boost 1.56]
[/=================]

[*Additional functionality]

* New algorithm buffer for inflating/deflating geometries (buffer itself already existed but that was only to enlarge a box)
* New algorithm remove_spikes, algorithm to remove spikes from a ring, polygon or multi_polygon
* New algorithm point_on_surface, generating a point lying on the surface (interior) of the polygon
* New algorithm is_simple, returning true if a geometry is simple according to the OGC standard
* New algorithm is_valid, returning true if a geometry is valid according to the OGC standard
* New algorithm crosses for checking this spatial relation according to the OGC standard
* The set operation algorithms (difference, intersection, sym_difference and union_) now support as input pairs of pointlike or linear geometries
* The distance and comparable_distance algorithms now support all pairs of geometry combinations
* The spatial relations which didn't support it (covered_by, touches, within, etc.) now support as input linear and/or areal geometries
* The support for boost::variants as input geometries in various algorithms
* The rtree support for indexing segments
* The rtree nearest() predicate support for arbitrary geometries

[*Improvements]

* The rtree pack-creation algorithm optimization (thanks to Lu Wang)

[*Solved tickets]

* [@https://svn.boost.org/trac/boost/ticket/8310 8310] Wrong results with overlapping polygons (fixed using point_on_surface for disjoint)
* [@https://svn.boost.org/trac/boost/ticket/8375 8375] sym_difference of non-closed polygons returns closed polygon
* [@https://svn.boost.org/trac/boost/ticket/8376 8376] difference of non-closed polygons returns closed polygon
* [@https://svn.boost.org/trac/boost/ticket/9081 9081] Booleans create self-intersecting polygons from non-self-intersecting polygons
* [@https://svn.boost.org/trac/boost/ticket/9245 9245] Check for process errors in make_qbk.py
* [@https://svn.boost.org/trac/boost/ticket/9563 9563] (Sym)difference not successful, fixed by rescaling to robust type
* [@https://svn.boost.org/trac/boost/ticket/9628 9628] Wrong result of within() due to the winding strategy not working correctly for nearly-horizontal segments
* [@https://svn.boost.org/trac/boost/ticket/9828 9828] boost::geometry::union_(...) creates redundant closing point
* [@https://svn.boost.org/trac/boost/ticket/9871 9871] Remove spike in polygon with only a spike
* [@https://svn.boost.org/trac/boost/ticket/9941 9941] Add support for touches(box, box)
* [@https://svn.boost.org/trac/boost/ticket/9947 9947] Missing info about WKT in documentation
* [@https://svn.boost.org/trac/boost/ticket/9759 9759] Invalid results of R-tree knn queries for non-cartesian coordinate systems
* [@https://svn.boost.org/trac/boost/ticket/10019 10019] Difference of Linestring and Box returns their intersection
* [@https://svn.boost.org/trac/boost/ticket/10077 10077] Wrong types in concept checks in boost/geometry/arithmetic/arithmetic.hpp
* [@https://svn.boost.org/trac/boost/ticket/10234 10234] Wrong results of covered_by() for nearly-horizontal segments

[*Bugfixes]

* intersects(polygon) could return a self-intersection-point for its closing point, fixed
* equals() could return invalid results for non-simple linear geometries according to the OGC standard, fixed
* touches() didn't work properly for CCW areal geomtries, fixed
* rtree nearest queries returned wrong elements for non-cartesian coordinate systems, fixed
* rtree crashed in some cases when used with Interprocess allocator, fixed

[/=================]
[heading Boost 1.55]
[/=================]

[*Additional functionality]

* Added centroid for segment type
* Added intersects() and disjoints() for Segment-Box and Linestring-Box
* Added rtree creation using packing algorithm
* Added contains() and covers() spatial query predicates
* Added iterative queries

[*Documentation]

[*Bugfixes]

* In some cases .back() or .clear() was called, violating the usage of Concepts. Fixed for the reported cases
* Use consistent side information in cart_intersect and get_turn_info and handle_tangencies and enrich_intersection_info. This
  is done by switching to integer (if necessary) for the specific 6 points only, zooming in on the 4 or 3 segments

[*Solved tickets]

* [@https://svn.boost.org/trac/boost/ticket/6958 6958] Intersection generates self-intersection. Caused by spike, fixed
* [@https://svn.boost.org/trac/boost/ticket/8364 8364] Invalid input exception, caused by spikes in previous steps, fixed
* [@https://svn.boost.org/trac/boost/ticket/8365 8365] Invalid input exception, caused by spikes in previous steps, fixed
* [@https://svn.boost.org/trac/boost/ticket/8969 8969] boost::geometry::model::point single argument constructor should be explicit
* [@https://svn.boost.org/trac/boost/ticket/8825 8825] Patch adding member variable documentation to doxygen_xml2qbk
* [@https://svn.boost.org/trac/boost/ticket/8652 8652] Intersection fails for triangle-triangle intersection. Caused by spike, fixed
* [@https://svn.boost.org/trac/boost/ticket/9047 9047] Boost files that include themselves (strategies/intersection.hpp), fixed

[*Internal changes]

* Distance-strategy TODO
* Transform-strategy TODO
* Spikes (could be generated in difference) in integer-based overlays are now avoided during generation
* Cleanup, removed old MSVC2005 project files, let all tests pass green (also in extensions)
* R*-tree balancing algorithm optimized

[/=================]
[heading Boost 1.54]
[/=================]

[*Additional functionality]

* added Spatial Index, developed for Boost.Geometry by Adam Wulkiewicz. The spatial index was originally started by Federico J. Fernandez during the Google Summer of Code 2008 program, mentored by Hartmut Kaiser.
* added SVG-output, this was already in extensions for several years

[*Documentation]

* small fixes of missing words
* fixes in doc of template parameters (convex_hull, exterior_ring, return_buffer)

[*Bugfixes]

* collinear opposite segments did sometimes (in circles) have a robustness issue, fixed
* fixed insertion of false intersection point (found by buffer)
* applied patch of Vladimir Petrovic for debugging traversals


[*Solved tickets]

* [@https://svn.boost.org/trac/boost/ticket/7462 7462] degenerate union result for float, fixed
* [@https://svn.boost.org/trac/boost/ticket/7465 7465] wrong construtors access type in scale_transformer class, fixed
* [@https://svn.boost.org/trac/boost/ticket/7802 7802] cart_intersect.hpp unused parameter warnings, fixed
* [@https://svn.boost.org/trac/boost/ticket/8254 8254] faulty intersection, fixed
* [@https://svn.boost.org/trac/boost/ticket/8393 8393] polygon model doesn't adhere to stated Polygon concept rules, doc updated.
* [@https://svn.boost.org/trac/boost/ticket/8403 8403] silenced compiler warning C4127: conditional expression is constant
* [@https://svn.boost.org/trac/boost/ticket/8405 8405] silenced compiler warning C4189: '...' : local variable is initialized but not referenced

[*Internal changes]

* Made several algorithms variant-aware (append, area, clear, convert, equals, length, num_points)


[/=================]
[heading Boost 1.53]
[/=================]

[*Bugfixes]

* avoid generating output polygons with interior rings below minimum size (e.g. one or two points)
* `geometry::disjoint` for degenerate segments (patched by Karsten Ahnert)
* problem in `geometry::difference` for missing handling tangency, reported by H2
* fixed `geometry::for_each` for use with Lambda's
* fixed `geometry::comparable_distance` point-linestring (and -range, -polygon)

[*Additional functionality]

* combinations for `geometry::disjoint`: point/ring, point/polygon, point/multi_polygon
* combinations for `geometry::intersects`: point/ring, point/polygon, point/multi_polygon

[*Internal changes]

* updates in specializations/not_implemented for various algorithms (as in an earlier version, these changes are still going on; they take care for simplified structs, better error reporting, and automatized documentation)
* fixes in unit tests

[/=================]
[heading Boost 1.51]
[/=================]

[*Breaking changes]

* points accessed through a pointer (e.g. in a linestring) should now be specialized without the pointer. In previous versions a type `my_point` used like `linestring<my_point*>` had to be specalized like: `template<> struct tag<my_point*>`. Now the library itself removes the pointer before calling the traits class, so now it should be like: `template<> struct tag<my_point>`

[*Bugfixes]

* intersection was sometimes wrong for integer points, fixed
* documentation, order of parameters in simplify was wrong, fixed

[*Solved tickets]

* [@https://svn.boost.org/trac/boost/ticket/7030 7030] spherical distance, fixed (by patch of Karsten Ahnert)


[/=================]
[heading Boost 1.50]
[/=================]

[*Bugfixes]

* the return type of comparable projected point strategy for integer points was wrong (integer), fixed
* several robustness issues in intersection of segments and polygons, fixed
* invalid intersection output is filtered out
* disjoint for multi_polygon's might incorrectly return true, fixed

[*Solved tickets]

* [@https://svn.boost.org/trac/boost/ticket/6585 6585] patch for alternative syntax multipoint, applied
* [@https://svn.boost.org/trac/boost/ticket/6584 6584] patch for bug in distance, applied
* [@https://svn.boost.org/trac/boost/ticket/5730 5730] same issue as 6584, fixed
* [@https://svn.boost.org/trac/boost/ticket/6166 6166] patch for missing transformation, applied
* [@https://svn.boost.org/trac/boost/ticket/6696 6696] invalid intersection output, was (by chance) already fixed in Trunk before reported

[*Additional functionality]

* added algorithm "touches" (OGC SF compliant) for *polygon/*polygon

[/=================]
[heading Boost 1.49]
[/=================]

[*Breaking changes]

* point_xy was accidentally included in one of the headerfiles. If the point_xy class is used, it should be included explicitly now.

[*Bugfixes]

* bugfix: distance for multi-geometries ignored specified distance strategy. Fixed
* bugfix: difference for polygon/multi_polygon (reported 2011/10/24 on GGL-list)
* bugfix: raise exception for calculation of distances of multi-geometrie(s) where one of them is empty
* bugfix: multi DSV did not correctly use settings, fixed
* bugfix: self-intersections could sometimes be missed (introduced in 1.48), fixed
* bugfix: convex hull crashed on empty range (e.g. empty multi point), fixed
* bugfix: area/centroid/side/intersection/distance did not work for "int" type filled with large (but not overflowing) integers. Fixed.
* bugfix: disjoint/intersect did not work for degenerate linestrings. Fixed.
* bugfix: covered_by did not compile for a ring. Fixed.

[*Solved tickets]

* [@https://svn.boost.org/trac/boost/ticket/6019 6019] convex_hull / area, fixed.
* [@https://svn.boost.org/trac/boost/ticket/6021 6021] convex_hull / append (multipoint), fixed.
* [@https://svn.boost.org/trac/boost/ticket/6028 6028] Documentation: closure, fixed.
* [@https://svn.boost.org/trac/boost/ticket/6178 6178] Missing headerfile, fixed.

[*Additional functionality]

* support for line/polygon intersections and differences
* support for convert of segment/box of different point types
* support for append for multi point
* the scalar function distance now throws an empty_input_exception on empty input

[*Documentation]

* updated support status in several algorithms
* updated conformance to OGC or std
* other updates and fixes

[*Internal changes]

* updates in specializations/not_implemented for distance/convert/assign/area/with/covered_by
* move of wkt/dsv to io folder, making domains redundant
* warnings: strategy concepts assigned to zero to avoid clang warnings (patched by Vishnu)
* warnings: there were several unused parameters, for which gcc/clang warned (patched by Christophe)

[/=================]
[heading Boost 1.48]
[/=================]

[*Bugfixes]

* Robustness issue, in some circumstances the union failed to output. Fixed.
* Robustness issue, in some circumstances the calculated intersection point was outside the segment. Fixed.
* Concept issue, cartesian intersect didn't understand segments other than the provided one. Fixed.
* Sometimes self-intersections in linestrings were missed. Fixed.
* The fusion coordinate system was not registered correctly. Fixed.

[*Solved tickets]

* [@https://svn.boost.org/trac/boost/ticket/5726 5726] Segment intersection algorithm still assumes 'first', 'second' members
* [@https://svn.boost.org/trac/boost/ticket/5744 5744] Mistake in fusion adapt example
* [@https://svn.boost.org/trac/boost/ticket/5748 5748] Needed to include <boost/foreach.hpp>
* [@https://svn.boost.org/trac/boost/ticket/5954 5954] distance_pythagoras skips sqrt() step

[*Improvements on algorithms]

* Checking self-intersections is now not done automatically, this can blast performance.
* Besides that, checking self-intersections is made faster.
* Intersections now avoid outputting duplicate points. So they output the minimal set.

[*Additional algorithms]

* covered_by: within is defined as "within, not on boundary". covered_by is "within or on boundary"

[*Additional functionality]

* within: strategies can now be specified for within<point, box> and within<box, box>
* convert: a much broader range of conversions is supported
* assign: idem, (currently partly) synonym for convert (but reversed arguments)

[*Additional coordinate types]

* Basic (limited) support for Boost.Rational
         
[heading Boost 1.47]

Original release         

[endsect]