• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1[/============================================================================
2  Boost.Geometry (aka GGL, Generic Geometry Library)
3
4  Copyright (c) 2009-2017 Barend Gehrels, Geodan, Amsterdam, the Netherlands.
5  Copyright (c) 2009-2017 Bruno Lalande, Paris, France.
6  Copyright (c) 2009-2017 Mateusz Loskot <mateusz@loskot.net>, London, UK.
7  Copyright (c) 2011-2017 Adam Wulkiewicz, Lodz, Poland.
8
9  This file was modified by Oracle on 2015, 2017, 2018, 2019, 2020.
10  Modifications copyright (c) 2015-2020, Oracle and/or its affiliates.
11  Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle
12  Contributed and/or modified by Menelaos Karavelas, on behalf of Oracle
13  Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
14
15  Use, modification and distribution is subject to the Boost Software License,
16  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
17  http://www.boost.org/LICENSE_1_0.txt)
18=============================================================================/]
19
20[section:release_notes Release Notes]
21
22[/=================]
23[heading Boost 1.74]
24[/=================]
25
26[*Improvements]
27
28* [@https://github.com/boostorg/geometry/pull/720 720] Additional R-tree constructors (thanks to Caian Benedicto).
29* Various improvements in buffer, set and relational operations
30
31[*Solved issues]
32
33* [@https://github.com/boostorg/geometry/issues/709 709] memcpy called for object with no trivial copy-assignment
34* [@https://github.com/boostorg/geometry/issues/721 721] Compilation error in bgi::detail::rtree::visitors::insert.
35* [@https://github.com/boostorg/geometry/issues/727 727] MSVC warning: conditional expression is constant.
36
37[*Bugfixes]
38
39* [@https://github.com/boostorg/geometry/pull/700 700] Missing cases for default strategies in distance algorithm.
40* [@https://github.com/boostorg/geometry/pull/738 738] Longitudes out of range in direct geodesic formulas.
41
42[/=================]
43[heading Boost 1.73]
44[/=================]
45
46[*Improvements]
47
48* [@https://github.com/boostorg/geometry/pull/650 650] Missing input combinations in intersection() and introduction of tupled-output.
49* [@https://github.com/boostorg/geometry/pull/671 671] Added d3::point_xyz geometry model (thanks to Digvijay Janartha).
50
51[*Solved issues]
52
53* [@https://github.com/boostorg/geometry/issues/657 657] Incorrect definition of EPSG3785.
54
55[*Bugfixes]
56
57* [@https://github.com/boostorg/geometry/pull/639 639] R-tree exception-safety improvement.
58* [@https://github.com/boostorg/geometry/pull/668 668] Andoyer inverse formula fixed for close points.
59* [@https://github.com/boostorg/geometry/pull/687 687] Fixed dangling reference in distance algorithm.
60
61[*Deprecation]
62
63* [@https://github.com/boostorg/geometry/issues/590 590] Support for C++03 has been deprecated and Geometry will require C++14 from Boost 1.75 onwards.
64
65[/=================]
66[heading Boost 1.72]
67[/=================]
68
69[*Improvements]
70
71* [@https://github.com/boostorg/geometry/pull/500 500] Karney's solution of inverse geodesic problem for internal use (thanks to Adeel Ahmad).
72* [@https://github.com/boostorg/geometry/pull/561 561] New algorithm detail::calculate_point_order() for internal use.
73* [@https://github.com/boostorg/geometry/pull/584 584] Support for arbitrary dimensions in matrix_transformer (thanks to Tinko Bartels).
74* [@https://github.com/boostorg/geometry/pull/616 616] Various improvements of srs::transformation, incl. support for std threading primitives.
75* [@https://github.com/boostorg/geometry/pull/627 627] Improved genericity of relational operations.
76* Various improvements related to robustness of set and relational operation.
77
78[*Solved issues]
79
80* [@https://github.com/boostorg/geometry/issues/557 557] Invalid result of distance between point and linestring in spherical-equatorial coordinate system.
81* [@https://github.com/boostorg/geometry/issues/612 612] Invalid result of set operations in geographic coordinate system.
82* [@https://github.com/boostorg/geometry/issues/619 619] Invalid result of set operations in spherical-equatorial coordinate system.
83
84[*Bugfixes]
85
86* [@https://github.com/boostorg/geometry/pull/479 479] Various fixes for set operations in spherical and geographic coordinate systems.
87* [@https://github.com/boostorg/geometry/pull/623 623] Potential integral overflow in set and relational operations.
88* [@https://github.com/boostorg/geometry/pull/632 632] Fixed errors in generation of asymmetric one-sided buffer.
89
90[/=================]
91[heading Boost 1.71]
92[/=================]
93
94[*Improvements]
95
96* [@https://github.com/boostorg/geometry/pull/568 568] Add a constructor that takes matrix_type to matrix_transformer.
97* [@https://github.com/boostorg/geometry/pull/605 605] Improvement of handling of coordinate systems in various algorithms.
98* Various improvements related to robustness of set and relational operation.
99
100[*Solved issues]
101
102* [@https://github.com/boostorg/geometry/issues/596 596] boost::geometry::buffer generates (multi)polygon with spike.
103
104[*Bugfixes]
105
106* [@https://github.com/boostorg/geometry/pull/595 595] Fix inaccuracy in geographic point-segment distance computation.
107* Fix various compiler warnings.
108
109[/=================]
110[heading Boost 1.70]
111[/=================]
112
113[*Improvements]
114
115* [@https://github.com/boostorg/geometry/pull/526 526] New line interpolate algorithm.
116
117[*Solved issues]
118
119* [@https://github.com/boostorg/geometry/issues/450 450] Not supported negative distance in geodesic direct formulas.
120* [@https://github.com/boostorg/geometry/issues/466 466] Invalid result of spherical/geographic disjoint(box, polygon).
121* [@https://github.com/boostorg/geometry/issues/547 547] Undefined behavior in rtree constructed with zip_iterator.
122* [@https://github.com/boostorg/geometry/issues/560 560] Inaccuracy of karney_direct formula.
123* [@https://github.com/boostorg/geometry/issues/577 577] R-tree with interprocess allocator compilation error with clang.
124* [@https://github.com/boostorg/geometry/issues/579 579] Invalid result of spherical/geographic disjoint(segment, box).
125
126[*Bugfixes]
127
128* [@https://github.com/boostorg/geometry/pull/538 538] Workaround for msvc-12 faulty array initialization.
129* [@https://github.com/boostorg/geometry/pull/553 553] Pass spheroid correctly in geographic comparable strategies.
130* [@https://github.com/boostorg/geometry/pull/570 570] Fix for spherical/geographic distance between geometries.
131* [@https://github.com/boostorg/geometry/pull/571 571] Fix nan result in geographic distance.
132* Workarounds in R-tree for compilation errors with gcc-4.6 and msvc-10, 11, 12.
133
134[*Changes in behavior]
135
136* Different strategies expected in envelope for some combinations of geometries.
137
138[/=================]
139[heading Boost 1.69]
140[/=================]
141
142[*Improvements]
143
144* [@https://github.com/boostorg/geometry/pull/486 486] Karney's solution of direct geodesic problem for internal use (thanks to Adeel Ahmad).
145* [@https://github.com/boostorg/geometry/pull/490 490] Discrete Frechet and Hausdorff distance algorithms (thanks to Yaghyavardhan Singh Khangarot).
146* [@https://github.com/boostorg/geometry/pull/496 496] New run-time and upgraded compile-time SRS transformation interfaces (undocumented for now due to potential interface changes).
147
148[*Solved issues]
149
150* [@https://github.com/boostorg/geometry/issues/520 520] Missing documentation for dsv().
151* [@https://github.com/boostorg/geometry/issues/521 521] Wrong documentation description for distance().
152* [@https://github.com/boostorg/geometry/issues/524 524] Fixed 'enumeration values not handled in switch' warnings.
153* [@https://github.com/boostorg/geometry/issues/527 527] Workaround for VS 2017 (msvc-15).
154
155[*Bugfixes]
156
157* [@https://github.com/boostorg/geometry/pull/505 505] Fixed overflow in overlay algorithms (thanks to Dane Springmeyer).
158* [@https://github.com/boostorg/geometry/pull/518 518] Fixed passing of temporaries in append() (thanks to xventura81).
159* [@https://github.com/boostorg/geometry/pull/522 522] Support python3 in building documentation.
160
161[/=================]
162[heading Boost 1.68]
163[/=================]
164
165[*Improvements]
166
167* [@https://github.com/boostorg/geometry/pull/469 469] Horizontal grid shift (nadgrids) in SRS transformations (undocumented for now due to potential interface changes).
168* [@https://github.com/boostorg/geometry/pull/478 478] Box-Segment distance for spherical and geographic coordinate systems.
169* [@https://github.com/boostorg/geometry/pull/487 487] Missing combinations of geometries in distance for spherical and geographic cs
170* [@https://github.com/boostorg/geometry/pull/489 489] Additional direct geodesic problem formulas for internal use
171
172[*Solved issues]
173
174* [@https://github.com/boostorg/geometry/issues/470 470] Assertion failure with short spherical and geographic segments.
175* [@https://github.com/boostorg/geometry/issues/471 471] Invalid envelope of spherical polygon
176* [@https://github.com/boostorg/geometry/issues/498 498] Unexpected results with expand() and make_inverse() for spherical and geographic CS
177* [@https://github.com/boostorg/geometry/issues/504 504] Unused parameter warnings.
178
179[*Bugfixes]
180
181* [@https://github.com/boostorg/geometry/pull/488 488] Handle non-true-references in closing_iterator and ever_circling_range_iterator
182* [@https://github.com/boostorg/geometry/pull/495 495] VxWorks 7 cross-compilation issue.
183
184[/=================]
185[heading Boost 1.67]
186[/=================]
187
188[*Improvements]
189
190* New map projection and SRS transformation representations (undocumented for now due to potential interface changes).
191* New densify() algorithm.
192* No longer using std::iterator (thanks to Daniela Engert).
193* No longer using allocator directly in the rtree. Replaced with boost::container::allocator_traits (thanks to Daniela Engert).
194* Default rtree allocator changed to boost::container::new_allocator to still support move semantics emulation in C++03 with boost::container::allocator_traits.
195* Area strategies interface changed. This is potentially a breaking change.
196* Radius or Sphere can be passed into spherical strategies.
197* Added Point-Box and Box-Box spherical and geographic distance() strategies.
198* Simplify (multi)polygons will discard output rings of 2 points or (for closed polygons) 3 points, but it tries to avoid creating those
199* Simplify (multi)polygons will omit empty interior rings or polygons from output
200
201[*Solved issues]
202
203* [@https://svn.boost.org/trac10/ticket/13386 13386] Workaround for some gcc compilers
204* [@https://svn.boost.org/trac10/ticket/13381 13381] Compile error with matrix_transformer in Visual C++ 2015
205* [@https://svn.boost.org/trac10/ticket/13436 13436] Incorrectness in boost::geometry::model::polygon documentation
206
207[*Bugfixes]
208
209* Add missing strategy resolving in length() algorithm, affecting Variant support.
210* Simplify (multi)polygons now simplifies closing point
211
212[*Changes in behavior]
213
214* Simplify (multi)polygons now usually rotates input rings before simplifying to select a non collinear point on its convex hull. This improves output.
215
216[/=================]
217[heading Boost 1.66]
218[/=================]
219
220[*Improvements]
221
222* Add distance for geographic PointLike/AnyGeometry.
223
224[*Solved issues]
225
226* [@https://svn.boost.org/trac10/ticket/12503 12503] Validity of complex polygon
227
228[*Bugfixes]
229
230* Fixes in validity of union/intersection/difference which were sometimes invalid. In most cases, results are valid now.
231* Fixes in validity of buffer which were sometimes invalid. In most cases, results are valid now.
232* Fixes in results of union/intersection/difference which could be incorrect in very complex cases
233* Fixes in set and relational operations for non-cartesian coordinate systems.
234
235[/=================]
236[heading Boost 1.65]
237[/=================]
238
239[*Improvements]
240
241* Add correct() overload taking area strategy
242* Add is_convex() overload taking side strategy
243* Add missing relational operations (covered_by, crosses, equals, etc.) for MultiPoint/AnyGeometry
244
245[*Solved issues]
246
247* [@https://svn.boost.org/trac/boost/ticket/12410 12410] Lack of support of geographic coordinate system in correct()
248* [@https://svn.boost.org/trac/boost/ticket/13035 13035] Wrong result of non-cartesian intersection strategies for segments near poles.
249* [@https://svn.boost.org/trac/boost/ticket/13057 13057] Wrong result of intersects() for linestrings caused by numerical issue in disjoint() for boxes.
250
251[*Bugfixes]
252
253* Fix is_valid which could return false for multipolygons where an interior ring touches another interior ring
254* Fix is_valid which could return false for multipolygons where a polygon was located in an interior ring, all touching each other
255* Fix union which could produce invalid results (for some cases, this needs to define BOOST_GEOMETRY_INCLUDE_SELF_TURNS)
256* Fix intersection (idem), but some cases are still not yet valid
257* Fix difference (idem), but some cases are still not yet valid
258* Fix propagation of area strategy into the internals of various algorithms from intersection strategy
259* Fix uninitialized variable in relate and reference to temporary in overlay
260* Fix error in disjoint for geographic Segment/Box
261* Fix handling of non-cartesian geometries in various algorithms
262
263[/=================]
264[heading Boost 1.64]
265[/=================]
266
267[*Improvements]
268
269* matrix transformation is now based on Boost.QVM instead of Boost.Ublas
270
271[*Breaking changes]
272
273* ublas_transformer is renamed to matrix_transformer
274* explicit modifier is added to constructors of rtree index::dynamic_* parameters
275* strategy::area::huiller replaced by strategy::area::spherical
276
277[*Solved issues]
278
279* [@https://github.com/boostorg/geometry/issues/363 363] Missing includes in geometry/index/parameters.hpp
280* [@https://github.com/boostorg/geometry/issues/364 364] within(Linear, Areal) compilation error when arguments use different point types
281* [@https://github.com/boostorg/geometry/issues/370 370] Buffer Seg Faults with Ring as Input
282
283[*Solved tickets]
284
285* [@https://svn.boost.org/trac/boost/ticket/11899 11899] boost::geometry::equals doesn't handle open polygons
286* [@https://svn.boost.org/trac/boost/ticket/11930 11930] Inaccuracy of area::huiller strategy
287* [@https://svn.boost.org/trac/boost/ticket/11931 11931] Wrong spherical area with pole encircling polygons
288* [@https://svn.boost.org/trac/boost/ticket/12566 12566] Ambiguous template instantiation in equal_to<> when pair value contains raw pointer
289* [@https://svn.boost.org/trac/boost/ticket/12861 12861] Segmentation fault in stdlibc++ (gcc 4.8.2) affecting rtree
290* [@https://svn.boost.org/trac/boost/ticket/12885 12885] Use BOOST_THROW_EXCEPTION instead of throw
291
292[*Bugfixes]
293
294* Fix distance_measure in get_turn_info
295
296[/=================]
297[heading Boost 1.63]
298[/=================]
299
300[*Improvements]
301
302* Intersection: take care that output is valid (work in progres, not yet finished - but more is valid)
303
304[*Solved tickets]
305
306* [@https://svn.boost.org/trac/boost/ticket/12289 12289] Avoid warning/compilation error for std::cout
307* [@https://svn.boost.org/trac/boost/ticket/12412 12412] Invalid result of covered_by() with geographic Points and Boxes
308* [@https://svn.boost.org/trac/boost/ticket/12413 12413] rtree::remove() not working properly with geographic Points
309
310[/=================]
311[heading Boost 1.62]
312[/=================]
313
314[*Improvements]
315
316* Union: take care that output is valid (with some exceptions), also with self-tangent polygons or shared edges
317* SVG: support boost::variant of geometries
318* SVG: coordinates are now written as double (by default) to svg
319* Rename namespace concept to concepts to avoid conflicts with the newest compilers
320* New spherical intersection strategy used in relational and set operations for spherical and geographic Geometries (previously cartesian intersection strategy was used for all coordinate systems).
321
322[*Solved tickets]
323
324* [@https://svn.boost.org/trac/boost/ticket/12189 12189] Relational operations not compiling when point types of inputs are different (cartesian, affecting rtree)
325* [@https://svn.boost.org/trac/boost/ticket/12287 12287] Invalid result of rtree.query() for contains() predicate
326* [@https://svn.boost.org/trac/boost/ticket/12342 12342] Relational operations not compiling when point types of inputs are different (geographic, affecting rtree)
327
328[/=================]
329[heading Boost 1.61]
330[/=================]
331
332[*Additional functionality]
333
334* Support within and covered_by for Box/Box in spherical and geographic coordinate systems.
335
336[*Improvements]
337
338* Overlay: handle_tangencies replaced by clusters, fixing many cases with colocated turns
339
340[*Solved tickets]
341
342* [@https://svn.boost.org/trac/boost/ticket/9162 9162] Invalid result of relational operations for non-cartesian Point/Areal.
343* [@https://svn.boost.org/trac/boost/ticket/10866 10866] union_ doesn't work in 1.56 and 1.57.
344* [@https://svn.boost.org/trac/boost/ticket/11018 11018] Invalid geometry intersection
345* [@https://svn.boost.org/trac/boost/ticket/11576 11576] Intersection gives wrong results.
346* [@https://svn.boost.org/trac/boost/ticket/11637 11637] Unused parameter warning.
347* [@https://svn.boost.org/trac/boost/ticket/11725 11725] union_ fails to create holes
348* [@https://svn.boost.org/trac/boost/ticket/11789 11789] Assertion failure or invalid result of set operations for spherical_equatorial coordinate system.
349* [@https://svn.boost.org/trac/boost/ticket/11917 11917] Andoyer distance strategy returns 0 for antipodal points (default geographic distance).
350* [@https://svn.boost.org/trac/boost/ticket/11928 11928] Improvement of the accuracy of surveyor (cartesian) area strategy.
351* [@https://svn.boost.org/trac/boost/ticket/11966 11966] Compilation error in svg() for box and non-int coordinate type.
352* [@https://svn.boost.org/trac/boost/ticket/11984 11984] union_() generates self-intersecting polygon
353* [@https://svn.boost.org/trac/boost/ticket/11987 11987] rtree::remove() not compiling for geographic CS.
354* [@https://svn.boost.org/trac/boost/ticket/12000 12000] Uninitialized reference in (unused) constructor of relate's mask_handler.
355* [@https://svn.boost.org/trac/boost/ticket/12106 12106] Invalid assertion failure in envelope() for non-cartesian very short segments.
356
357[*Bugfixes]
358
359* Fix intersects and disjoint for Segment/Box in cartesian coordinate system when Segment is parallel to Box's face.
360* Fix relation operations for Point/Areal in spherical and geographic coordinate systems for edge cases.
361* Fix intersects and disjoint for Point/Box and Box/Box in spherical and geographic coordinate systems for some cases.
362* Fix within and covered_by for Point/Box in spherical and geographic coordinate systems for some cases.
363
364[/=================]
365[heading Boost 1.60]
366[/=================]
367
368[*Solved tickets]
369
370* [@https://svn.boost.org/trac/boost/ticket/10803 10803] Union algorithm returning invalid geometry
371* [@https://svn.boost.org/trac/boost/ticket/11522 11522] Namespace clash in buffer for traits::detail
372* [@https://svn.boost.org/trac/boost/ticket/11533 11533] Assert failure in rtree caused by a bug in remove() if min elements number is 1
373* [@https://svn.boost.org/trac/boost/ticket/11607 11607] Private geometry::exception::what()
374* [@https://svn.boost.org/trac/boost/ticket/11709 11709] is_simple segfault
375* [@https://svn.boost.org/trac/boost/ticket/11710 11710] is_simple - empty geometry logic
376* [@https://svn.boost.org/trac/boost/ticket/11711 11711] is_simple and is_valid - Points that are NaN or Infinity
377
378[*Bugfixes]
379
380* Fix colocations of touching interior ring / exterior ring, where it also touches another polygon
381* Fix removing values from an empty rtree - no effect and 0 returned instead of assertion failure
382* Fix segfault in centroid for multi geometries containing empty single geometries (thanks to Jiri Drbalek)
383* Fix liang_barsky strategy for integral coordinates (thanks to Dane Springmeyer)
384
385[/=================]
386[heading Boost 1.59]
387[/=================]
388
389[*Additional functionality]
390
391* Added rtree const_iterator, begin(), end() and the support for Boost.Range.
392* The support for C++11 `std::initializer_list` in geometries models.
393* Disjoint and intersects support the following geometry combinations: multipoint/linestring, multipoint/multilinestring.
394* Added relate() and relation() algorithms.
395* Intersection has been implemented for combinations of pointlike and linear geometries
396* Added implementation for difference(pointlike, linear)
397* New algorithm is_empty, returning true if the geometry represents the empty set
398* The envelope algorithm supports pointlike and linear geometries in the spherical equatorial coordinate system
399* The envelope algorithm supports pointlike geometries in the geographic coordinate system
400
401[*Improvements]
402
403* Upgraded rtree const_query_iterator category to ForwardIterator.
404* Buffer performance of buffers around multi-points is improved significantly
405
406[*Breaking changes]
407
408* buffer side strategy now returns error_code instead of bool. If you have your own custom side strategy, it should be adapted
409
410[*Solved tickets]
411
412* [@https://svn.boost.org/trac/boost/ticket/11113 11113] Support easy enumeration of all elements with BOOST_FOREACH
413* [@https://svn.boost.org/trac/boost/ticket/11232 11232] Feature request - relate()
414* [@https://svn.boost.org/trac/boost/ticket/11236 11236] Invalid result of centroid() for integer coordinate type
415* [@https://svn.boost.org/trac/boost/ticket/11268 11268] Regression in boost::geometry::intersection interface with multi_linestring and box -- does not compile on 1.57 VS 1.55
416* [@https://svn.boost.org/trac/boost/ticket/11332 11332] Assertion failure in buffer for extreme coordinate differences
417* [@https://svn.boost.org/trac/boost/ticket/11346 11346] Segment iterator does not work with ranges returning values instead of references
418* [@https://svn.boost.org/trac/boost/ticket/11436 11436] sym_difference(py1, py2, mpy) returns invalid multipolygon
419
420[*Bugfixes]
421
422* Buffer: use a more robust way to calculate the side of an intersection, this fixes several errors in buffer generation
423* Fix in selection of segment to which calculate from IP from, in intersection of two segments. Now is selected the one close to a segment-point point, or else the one on the shortest segment. This avoids (rarely occuring) generation of tiny triangles making output polygons invalid
424* In rescaling round instead of truncate to the integer grid (this fix and the previous mentioned can have some impact on output geometries)
425* Fix potential infinite loop in detail::has_spikes (the loop can happen if the points passed have NaN coordinates)
426
427[/=================]
428[heading Boost 1.58]
429[/=================]
430
431[*Additional functionality]
432
433* New algorithm num_segments, returning the number of segments of a geometry
434* New overload for is_valid algorithm, that takes a string reference as a second argument and fills it with a message related to the validity or invalidity of the geometry
435* New overload for is_valid algorithm, that takes an enum reference as a second argument and fills it with a value related to the validity or invalidity of the geometry
436* Disjoint and intersects support the following geometry combinations: point/multipoint, multipoint/multipoint, multipoint/segment, multipoint/box
437
438[*Improvements]
439
440* Buffer now supports flat-ends for linestrings with a bend close to the start (such that buffered segment crosses flat-end).
441* Buffer performance is improved significantly
442* Partition performance is improved significantly for polygons, potentially enhancing all overlay operations
443
444[*Solved tickets]
445
446* [@https://svn.boost.org/trac/boost/ticket/8379 8379] Invalid comparison of the result of determinant
447* [@https://svn.boost.org/trac/boost/ticket/10108 10108] Error in overlay operations in specific cases where geometries touch at one point
448* [@https://svn.boost.org/trac/boost/ticket/10201 10201] Suggestion to use different function to compare coordinates [wontfix]
449* [@https://svn.boost.org/trac/boost/ticket/10467 10467] Template parameter name coliding with B0 macro name defined in termios.h
450* [@https://svn.boost.org/trac/boost/ticket/10640 10640] Invalid result of buffer() for CCW Polygons.
451* [@https://svn.boost.org/trac/boost/ticket/10666 10666] MSVC compiler warning C4127: conditional expression is constant
452* [@https://svn.boost.org/trac/boost/ticket/10747 10747] Error in rescaling causing errors in areal/areal set operations
453* [@https://svn.boost.org/trac/boost/ticket/10770 10770] Buffer fails for large distances, or rough round joins, where concavities where not intersected properly
454* [@https://svn.boost.org/trac/boost/ticket/10658 10658] sym_difference yields bad result for int polygons
455* [@https://svn.boost.org/trac/boost/ticket/10835 10835] Difference of multilinestring and polygon yields wrong result
456* [@https://svn.boost.org/trac/boost/ticket/10861 10861] Rtree failing to compile for Value being a pair or a tuple containing pointer to Geometry and the default equal_to<> used
457* [@https://svn.boost.org/trac/boost/ticket/10863 10863] Template parameter name coliding with B0 macro name defined in termios.h (duplicate of 10467)
458* [@https://svn.boost.org/trac/boost/ticket/10887 10887] Invalid result of within() and relate() for Linear/MultiPolygon
459* [@https://svn.boost.org/trac/boost/ticket/10890 10890] Invalid result of disjoint() for Point/Segment.
460* [@https://svn.boost.org/trac/boost/ticket/10904 10904] Invalid calculation of most significant Dimension of a segment in relate_cartesian_segments strategy
461* [@https://svn.boost.org/trac/boost/ticket/10912 10912] Invalid result of within() and relate() for Areal/Areal
462* [@https://svn.boost.org/trac/boost/ticket/10951 10951] Tests failing on windows with intel compiler due to lack of /bigobj flag.
463* [@https://svn.boost.org/trac/boost/ticket/10957 10957] Assertion failure and invalid results of various relational operations.
464* [@https://svn.boost.org/trac/boost/ticket/10958 10958] Invalid results of disjoint() L/L and L/A.
465* [@https://svn.boost.org/trac/boost/ticket/10959 10959] Assertion failure in get_turns() used with no_rescale_policy.
466* [@https://svn.boost.org/trac/boost/ticket/10960 10960] Invalid result of get_turns() for L/A, missing turn.
467* [@https://svn.boost.org/trac/boost/ticket/10961 10961] Invalid result of get_turns() for L/A, invalid turn for a Linear spike.
468* [@https://svn.boost.org/trac/boost/ticket/11112 11112] Compilation failure on Solaris due to a CS name clash (used for a macro on this platform)
469* [@https://svn.boost.org/trac/boost/ticket/11121 11121] Invalid result of difference() for integral coordinates
470
471[*Bugfixes]
472
473* Bug in multipoint/polygon multipoint/multipolygon distance computation (wrong detection of points inside the areal geometry)
474* Bug in flatten_iterator's assignment operator causing an access violation
475* Bug in Cartesian segment-segment intersection strategy when one segment degenerates to a point and is collinear to the other non-degenerate segment
476* Bug in centroid(), non-deterministic result if calculated for e.g. a Polygon with zero-area.
477* Bug in buffers for joins with a limited number of points
478* Bug in buffers for round joins with limited number of points around sharp corners
479* Bug in buffers for joins with large buffer distances
480* Bug in buffers for round ends with an odd number of points
481* Bug in buffers for flat ends with large buffer distances
482* Bug in buffers for interior rings with large negative buffer distances
483* Bug in closing_iterator not working properly when the input range is empty
484* Bug in is_simple, not handling properly closed simple linestrings within multilinestrings
485* Bug in rtree constructors taking a pair of Iterators or a Range (packing algorithm), the use of reference to destroyed temporary when Iterator's reference is not true reference, e.g. for some of the Range Adaptors. It also affects distance() and comparable_distance(). This bug may cause unexpected behavior of the rtree or distance() algorithm, e.g. an assertion failure or a SEGFAULT.
486* Bug in rtree count() member function, the use of reference to destroyed temporary when object of type convertible but not the same as value_type or indexable_type is passed. If this happens, wrong result may be returned, in most cases 0.
487* Bugs related to the handling of Ranges, preventing compilation of Geometries using non-Container Ranges in some algorithms (thanks to Samuel Debionne)
488
489[/=================]
490[heading Boost 1.57]
491[/=================]
492
493[*Improvements]
494
495* The support of parameters convertible to value_type in rtree insert(), remove() and count() functions
496* Support for counterclockwise input/output in algorithm buffer
497* Support for open-geometry input in algorithm buffer (open output not yet supported)
498* Support for degenerate input (point-like linestrings, polygons) in algorithm buffer
499
500[*Solved tickets]
501
502* [@https://svn.boost.org/trac/boost/ticket/6443 6443] Wrong degenerated hulls returned by convex_hull().
503* [@https://svn.boost.org/trac/boost/ticket/8402 8402] Implicit conversion warnings
504* [@https://svn.boost.org/trac/boost/ticket/9354 9354] Bug in winding strategy affecting within() and covered_by() for non-cartesian coordinate systems
505* [@https://svn.boost.org/trac/boost/ticket/10177 10177] Missing include
506* [@https://svn.boost.org/trac/boost/ticket/10345 10345] Distance fails to compile for some coordinate types
507* [@https://svn.boost.org/trac/boost/ticket/10398 10398] Wrong neighbour check in buffer, calculating turns
508* [@https://svn.boost.org/trac/boost/ticket/10421 10421] Invalid Point-Box distance for spherical CS
509* [@https://svn.boost.org/trac/boost/ticket/10562 10562] Invalid number of Points in the result of convex_hull() for open output
510* [@https://svn.boost.org/trac/boost/ticket/10615 10615] Rtree constructor feature request
511* [@https://svn.boost.org/trac/boost/ticket/10643 10643] Invalid point_on_surface() result for big coordinates
512* [@https://svn.boost.org/trac/boost/ticket/10647 10647] Invalid result of disjoint() in some cases when polygon is inside inner ring of other polygon
513* [@https://svn.boost.org/trac/boost/ticket/10668 10668] Implicit conversion warnings (duplicated 8402)
514
515[*Bugfixes]
516
517* Several fixes of bugs in algorithm buffer
518* Bug in point_on_surface() for CCW Polygons (extreme_points()) and numerical issue (thanks to Matt Amos)
519* Bug in disjoint() for A/A fixed by replacement of point_on_surface() with point_on_border() (thanks to Matt Amos)
520* The result of convex_hull(), duplicated Point in open output, too small number of Points for 1- and 2-Point input
521* Imprecision for big coordinates in centroid(), fixed by Points translation (related with ticket 10643)
522* for_each_segment() not taking into account the last segment of open Geometry
523
524[/=================]
525[heading Boost 1.56]
526[/=================]
527
528[*Additional functionality]
529
530* New algorithm buffer for inflating/deflating geometries (buffer itself already existed but that was only to enlarge a box)
531* New algorithm remove_spikes, algorithm to remove spikes from a ring, polygon or multi_polygon
532* New algorithm point_on_surface, generating a point lying on the surface (interior) of the polygon
533* New algorithm is_simple, returning true if a geometry is simple according to the OGC standard
534* New algorithm is_valid, returning true if a geometry is valid according to the OGC standard
535* New algorithm crosses for checking this spatial relation according to the OGC standard
536* The set operation algorithms (difference, intersection, sym_difference and union_) now support as input pairs of pointlike or linear geometries
537* The distance and comparable_distance algorithms now support all pairs of geometry combinations
538* The spatial relations which didn't support it (covered_by, touches, within, etc.) now support as input linear and/or areal geometries
539* The support for boost::variants as input geometries in various algorithms
540* The rtree support for indexing segments
541* The rtree nearest() predicate support for arbitrary geometries
542
543[*Improvements]
544
545* The rtree pack-creation algorithm optimization (thanks to Lu Wang)
546
547[*Solved tickets]
548
549* [@https://svn.boost.org/trac/boost/ticket/8310 8310] Wrong results with overlapping polygons (fixed using point_on_surface for disjoint)
550* [@https://svn.boost.org/trac/boost/ticket/8375 8375] sym_difference of non-closed polygons returns closed polygon
551* [@https://svn.boost.org/trac/boost/ticket/8376 8376] difference of non-closed polygons returns closed polygon
552* [@https://svn.boost.org/trac/boost/ticket/9081 9081] Booleans create self-intersecting polygons from non-self-intersecting polygons
553* [@https://svn.boost.org/trac/boost/ticket/9245 9245] Check for process errors in make_qbk.py
554* [@https://svn.boost.org/trac/boost/ticket/9563 9563] (Sym)difference not successful, fixed by rescaling to robust type
555* [@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
556* [@https://svn.boost.org/trac/boost/ticket/9828 9828] boost::geometry::union_(...) creates redundant closing point
557* [@https://svn.boost.org/trac/boost/ticket/9871 9871] Remove spike in polygon with only a spike
558* [@https://svn.boost.org/trac/boost/ticket/9941 9941] Add support for touches(box, box)
559* [@https://svn.boost.org/trac/boost/ticket/9947 9947] Missing info about WKT in documentation
560* [@https://svn.boost.org/trac/boost/ticket/9759 9759] Invalid results of R-tree knn queries for non-cartesian coordinate systems
561* [@https://svn.boost.org/trac/boost/ticket/10019 10019] Difference of Linestring and Box returns their intersection
562* [@https://svn.boost.org/trac/boost/ticket/10077 10077] Wrong types in concept checks in boost/geometry/arithmetic/arithmetic.hpp
563* [@https://svn.boost.org/trac/boost/ticket/10234 10234] Wrong results of covered_by() for nearly-horizontal segments
564
565[*Bugfixes]
566
567* intersects(polygon) could return a self-intersection-point for its closing point, fixed
568* equals() could return invalid results for non-simple linear geometries according to the OGC standard, fixed
569* touches() didn't work properly for CCW areal geomtries, fixed
570* rtree nearest queries returned wrong elements for non-cartesian coordinate systems, fixed
571* rtree crashed in some cases when used with Interprocess allocator, fixed
572
573[/=================]
574[heading Boost 1.55]
575[/=================]
576
577[*Additional functionality]
578
579* Added centroid for segment type
580* Added intersects() and disjoints() for Segment-Box and Linestring-Box
581* Added rtree creation using packing algorithm
582* Added contains() and covers() spatial query predicates
583* Added iterative queries
584
585[*Documentation]
586
587[*Bugfixes]
588
589* In some cases .back() or .clear() was called, violating the usage of Concepts. Fixed for the reported cases
590* Use consistent side information in cart_intersect and get_turn_info and handle_tangencies and enrich_intersection_info. This
591  is done by switching to integer (if necessary) for the specific 6 points only, zooming in on the 4 or 3 segments
592
593[*Solved tickets]
594
595* [@https://svn.boost.org/trac/boost/ticket/6958 6958] Intersection generates self-intersection. Caused by spike, fixed
596* [@https://svn.boost.org/trac/boost/ticket/8364 8364] Invalid input exception, caused by spikes in previous steps, fixed
597* [@https://svn.boost.org/trac/boost/ticket/8365 8365] Invalid input exception, caused by spikes in previous steps, fixed
598* [@https://svn.boost.org/trac/boost/ticket/8969 8969] boost::geometry::model::point single argument constructor should be explicit
599* [@https://svn.boost.org/trac/boost/ticket/8825 8825] Patch adding member variable documentation to doxygen_xml2qbk
600* [@https://svn.boost.org/trac/boost/ticket/8652 8652] Intersection fails for triangle-triangle intersection. Caused by spike, fixed
601* [@https://svn.boost.org/trac/boost/ticket/9047 9047] Boost files that include themselves (strategies/intersection.hpp), fixed
602
603[*Internal changes]
604
605* Adapted projected_point<> distance strategy, point-type in template is replaced by calculation-type
606* Adapted transform strategies, they have points now as member-template, and calculation-type as template. Similar to what was done for projected_point distance
607* Spikes (could be generated in difference) in integer-based overlays are now avoided during generation
608* Cleanup, removed old MSVC2005 project files
609* R*-tree balancing algorithm optimized
610
611[/=================]
612[heading Boost 1.54]
613[/=================]
614
615[*Additional functionality]
616
617* 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.
618* added SVG-output, this was already in extensions for several years
619
620[*Documentation]
621
622* small fixes of missing words
623* fixes in doc of template parameters (convex_hull, exterior_ring, return_buffer)
624
625[*Bugfixes]
626
627* collinear opposite segments did sometimes (in circles) have a robustness issue, fixed
628* fixed insertion of false intersection point (found by buffer)
629* applied patch of Vladimir Petrovic for debugging traversals
630
631
632[*Solved tickets]
633
634* [@https://svn.boost.org/trac/boost/ticket/7462 7462] degenerate union result for float, fixed
635* [@https://svn.boost.org/trac/boost/ticket/7465 7465] wrong construtors access type in scale_transformer class, fixed
636* [@https://svn.boost.org/trac/boost/ticket/7802 7802] cart_intersect.hpp unused parameter warnings, fixed
637* [@https://svn.boost.org/trac/boost/ticket/8254 8254] faulty intersection, fixed
638* [@https://svn.boost.org/trac/boost/ticket/8393 8393] polygon model doesn't adhere to stated Polygon concept rules, doc updated.
639* [@https://svn.boost.org/trac/boost/ticket/8403 8403] silenced compiler warning C4127: conditional expression is constant
640* [@https://svn.boost.org/trac/boost/ticket/8405 8405] silenced compiler warning C4189: '...' : local variable is initialized but not referenced
641
642[*Internal changes]
643
644* Made several algorithms variant-aware (append, area, clear, convert, equals, length, num_points)
645
646
647[/=================]
648[heading Boost 1.53]
649[/=================]
650
651[*Bugfixes]
652
653* avoid generating output polygons with interior rings below minimum size (e.g. one or two points)
654* `geometry::disjoint` for degenerate segments (patched by Karsten Ahnert)
655* problem in `geometry::difference` for missing handling tangency, reported by H2
656* fixed `geometry::for_each` for use with Lambda's
657* fixed `geometry::comparable_distance` point-linestring (and -range, -polygon)
658
659[*Additional functionality]
660
661* combinations for `geometry::disjoint`: point/ring, point/polygon, point/multi_polygon
662* combinations for `geometry::intersects`: point/ring, point/polygon, point/multi_polygon
663
664[*Internal changes]
665
666* 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)
667* fixes in unit tests
668
669[/=================]
670[heading Boost 1.51]
671[/=================]
672
673[*Breaking changes]
674
675* 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>`
676
677[*Bugfixes]
678
679* intersection was sometimes wrong for integer points, fixed
680* documentation, order of parameters in simplify was wrong, fixed
681
682[*Solved tickets]
683
684* [@https://svn.boost.org/trac/boost/ticket/7030 7030] spherical distance, fixed (by patch of Karsten Ahnert)
685
686
687[/=================]
688[heading Boost 1.50]
689[/=================]
690
691[*Bugfixes]
692
693* the return type of comparable projected point strategy for integer points was wrong (integer), fixed
694* several robustness issues in intersection of segments and polygons, fixed
695* invalid intersection output is filtered out
696* disjoint for multi_polygon's might incorrectly return true, fixed
697
698[*Solved tickets]
699
700* [@https://svn.boost.org/trac/boost/ticket/6585 6585] patch for alternative syntax multipoint, applied
701* [@https://svn.boost.org/trac/boost/ticket/6584 6584] patch for bug in distance, applied
702* [@https://svn.boost.org/trac/boost/ticket/5730 5730] same issue as 6584, fixed
703* [@https://svn.boost.org/trac/boost/ticket/6166 6166] patch for missing transformation, applied
704* [@https://svn.boost.org/trac/boost/ticket/6696 6696] invalid intersection output, was (by chance) already fixed in Trunk before reported
705
706[*Additional functionality]
707
708* added algorithm "touches" (OGC SF compliant) for *polygon/*polygon
709
710[/=================]
711[heading Boost 1.49]
712[/=================]
713
714[*Breaking changes]
715
716* point_xy was accidentally included in one of the headerfiles. If the point_xy class is used, it should be included explicitly now.
717
718[*Bugfixes]
719
720* bugfix: distance for multi-geometries ignored specified distance strategy. Fixed
721* bugfix: difference for polygon/multi_polygon (reported 2011/10/24 on GGL-list)
722* bugfix: raise exception for calculation of distances of multi-geometrie(s) where one of them is empty
723* bugfix: multi DSV did not correctly use settings, fixed
724* bugfix: self-intersections could sometimes be missed (introduced in 1.48), fixed
725* bugfix: convex hull crashed on empty range (e.g. empty multi point), fixed
726* bugfix: area/centroid/side/intersection/distance did not work for "int" type filled with large (but not overflowing) integers. Fixed.
727* bugfix: disjoint/intersect did not work for degenerate linestrings. Fixed.
728* bugfix: covered_by did not compile for a ring. Fixed.
729
730[*Solved tickets]
731
732* [@https://svn.boost.org/trac/boost/ticket/6019 6019] convex_hull / area, fixed.
733* [@https://svn.boost.org/trac/boost/ticket/6021 6021] convex_hull / append (multipoint), fixed.
734* [@https://svn.boost.org/trac/boost/ticket/6028 6028] Documentation: closure, fixed.
735* [@https://svn.boost.org/trac/boost/ticket/6178 6178] Missing headerfile, fixed.
736
737[*Additional functionality]
738
739* support for line/polygon intersections and differences
740* support for convert of segment/box of different point types
741* support for append for multi point
742* the scalar function distance now throws an empty_input_exception on empty input
743
744[*Documentation]
745
746* updated support status in several algorithms
747* updated conformance to OGC or std
748* other updates and fixes
749
750[*Internal changes]
751
752* updates in specializations/not_implemented for distance/convert/assign/area/with/covered_by
753* move of wkt/dsv to io folder, making domains redundant
754* warnings: strategy concepts assigned to zero to avoid clang warnings (patched by Vishnu)
755* warnings: there were several unused parameters, for which gcc/clang warned (patched by Christophe)
756
757[/=================]
758[heading Boost 1.48]
759[/=================]
760
761[*Bugfixes]
762
763* Robustness issue, in some circumstances the union failed to output. Fixed.
764* Robustness issue, in some circumstances the calculated intersection point was outside the segment. Fixed.
765* Concept issue, cartesian intersect didn't understand segments other than the provided one. Fixed.
766* Sometimes self-intersections in linestrings were missed. Fixed.
767* The fusion coordinate system was not registered correctly. Fixed.
768
769[*Solved tickets]
770
771* [@https://svn.boost.org/trac/boost/ticket/5726 5726] Segment intersection algorithm still assumes 'first', 'second' members
772* [@https://svn.boost.org/trac/boost/ticket/5744 5744] Mistake in fusion adapt example
773* [@https://svn.boost.org/trac/boost/ticket/5748 5748] Needed to include <boost/foreach.hpp>
774* [@https://svn.boost.org/trac/boost/ticket/5954 5954] distance_pythagoras skips sqrt() step
775
776[*Improvements on algorithms]
777
778* Checking self-intersections is now not done automatically, this can blast performance.
779* Besides that, checking self-intersections is made faster.
780* Intersections now avoid outputting duplicate points. So they output the minimal set.
781
782[*Additional algorithms]
783
784* covered_by: within is defined as "within, not on boundary". covered_by is "within or on boundary"
785
786[*Additional functionality]
787
788* within: strategies can now be specified for within<point, box> and within<box, box>
789* convert: a much broader range of conversions is supported
790* assign: idem, (currently partly) synonym for convert (but reversed arguments)
791
792[*Additional coordinate types]
793
794* Basic (limited) support for Boost.Rational
795
796[heading Boost 1.47]
797
798Original release
799
800[endsect]
801