Major change
-
977
Rescaling is turned off by default. This avoids many related bugs in set
operations and buffer.
Improvements
-
961
Added Web Mercator projection.
-
966
More efficient cartesian distance strategy used in simplify.
Solved issues
-
956
Result of simplify algorithm with incorrect closure.
-
962
Runtime error in R-tree deserialization due to load factor.
-
971
R-tree insertion time impacted by use of long double on ARM platforms.
Bugfixes
-
936
Envelope of polygon containing pole.
-
948
Spherical and geographic envelope for near meridian segments.
-
974
Spheroidal normalization utilities for NaN coordinates.
-
Various fixes in set operations and buffer.
Improvements
-
894
Optimization and refactoring of rtree queries.
-
913
DynamicGeometry and GeometryCollection support in various algorithms (undocumented
for now).
-
922
DynamicGeometry and GeometryCollection support in distance (undocumented
for now).
Solved issues
-
867
Poor performance of rtree query iterator with nearest predicate for big
k.
-
870
Compilation error in boost::geometry::self_turns.
-
896
Assertion failure in get_turns with BOOST_GEOMETRY_NO_ROBUSTNESS.
Bugfixes
-
906
Invalid result of buffer on macos-11 with clang-12.
-
921
Compilation errors with c++20 (various compilers) and gcc-5.
-
Various fixes in set operations and buffer.
Improvements
-
812
Umbrella strategies for distance and comparable_distance (undocumented
for now).
-
840
Umbrella strategies for various algorithms (undocumented for now).
-
850
Introduced DynamicGeometry and GeometryCollection concepts and support
in some algorithms (undocumented for now).
-
855
Various improvements related to strategies. Default strategies are now
included with algorithms.
Solved issues
-
865
Exception thrown in rtree serialization.
-
439
Invalid box spherical area computation.
-
838
Invalid result of union_().
-
851
Invalid geographic disjoint segment/box result.
-
861
Invalid result of intersection().
Bugfixes
-
832
Fixed box spherical and geographic area computation.
-
853
Fixed geographic disjoint segment/box.
-
866
Fixed serialization of rtree containing lesser number of elements in root
node than minimum.
-
886
Fixed knn rtree query bug causing it to be slow for big k.
-
Various fixes in set operations and buffer.
Improvements
-
670
New IOs to_wkt() and from_wkt() (thanks to Baidyanath Kundu).
-
756
Non cartesian and robust convex hulls.
-
768
Umbrella strategies for relops, setops, index, buffer and more (undocumented
for now).
-
797
New azimuth() algorithm.
-
801
Improved accuracy in geographic area computations.
-
820
Parameter scale added to svg_mapper.
Bugfixes
-
808
Fixed compilation error with rtree serialization enabled (thanks to Tristan
Carel).
-
815
Fixed issue in buffer().
-
Various fixes in set operations and buffer.
Breaking changes
-
Removed strategy convex_hull::graham_andrew.
Improvements
-
726
Umbrella strategies for area, envelope, expand (undocumented for now).
-
733
Added example of adaptation of std::array<> to Point concept (thanks
to Ben FrantzDale).
-
745
constexpr added in geometries and arithmetic.
-
747
Added optional traits::make (undocumented for now).
-
748
Modernized usage of type traits.
-
759
MPL_ASSERT replaced with standard static_assert.
-
767
Modernized usage of tuple.
Solved issues
-
716
Dangling proxy references.
Bugfixes
-
Various fixes in set operations and buffer.
Deprecation
-
590
Boost.Geometry requires C++14.
Improvements
-
720
Additional R-tree constructors (thanks to Caian Benedicto).
-
Various improvements in buffer, set and relational operations
Solved issues
-
709
memcpy called for object with no trivial copy-assignment
-
721
Compilation error in bgi::detail::rtree::visitors::insert.
-
727
MSVC warning: conditional expression is constant.
Bugfixes
-
700
Missing cases for default strategies in distance algorithm.
-
738
Longitudes out of range in direct geodesic formulas.
Improvements
-
650
Missing input combinations in intersection() and introduction of tupled-output.
-
671
Added d3::point_xyz geometry model (thanks to Digvijay Janartha).
Solved issues
-
657
Incorrect definition of EPSG3785.
Bugfixes
-
639
R-tree exception-safety improvement.
-
668
Andoyer inverse formula fixed for close points.
-
687
Fixed dangling reference in distance algorithm.
Deprecation
-
590
Support for C++03 has been deprecated and Geometry will require C++14 from
Boost 1.75 onwards.
Improvements
-
500
Karney's solution of inverse geodesic problem for internal use (thanks
to Adeel Ahmad).
-
561
New algorithm detail::calculate_point_order() for internal use.
-
584
Support for arbitrary dimensions in matrix_transformer (thanks to Tinko
Bartels).
-
616
Various improvements of srs::transformation, incl. support for std threading
primitives.
-
627
Improved genericity of relational operations.
-
Various improvements related to robustness of set and relational operation.
Solved issues
-
557
Invalid result of distance between point and linestring in spherical-equatorial
coordinate system.
-
612
Invalid result of set operations in geographic coordinate system.
-
619
Invalid result of set operations in spherical-equatorial coordinate system.
Bugfixes
-
479
Various fixes for set operations in spherical and geographic coordinate
systems.
-
623
Potential integral overflow in set and relational operations.
-
632
Fixed errors in generation of asymmetric one-sided buffer.
Improvements
-
568
Add a constructor that takes matrix_type to matrix_transformer.
-
605
Improvement of handling of coordinate systems in various algorithms.
-
Various improvements related to robustness of set and relational operation.
Solved issues
-
596
boost::geometry::buffer generates (multi)polygon with spike.
Bugfixes
-
595
Fix inaccuracy in geographic point-segment distance computation.
-
Fix various compiler warnings.
Improvements
-
526
New line interpolate algorithm.
Solved issues
-
450
Not supported negative distance in geodesic direct formulas.
-
466
Invalid result of spherical/geographic disjoint(box, polygon).
-
547
Undefined behavior in rtree constructed with zip_iterator.
-
560
Inaccuracy of karney_direct formula.
-
577
R-tree with interprocess allocator compilation error with clang.
-
579
Invalid result of spherical/geographic disjoint(segment, box).
Bugfixes
-
538
Workaround for msvc-12 faulty array initialization.
-
553
Pass spheroid correctly in geographic comparable strategies.
-
570
Fix for spherical/geographic distance between geometries.
-
571
Fix nan result in geographic distance.
-
Workarounds in R-tree for compilation errors with gcc-4.6 and msvc-10,
11, 12.
Changes in behavior
-
Different strategies expected in envelope for some combinations of geometries.
Improvements
-
486
Karney's solution of direct geodesic problem for internal use (thanks to
Adeel Ahmad).
-
490
Discrete Frechet and Hausdorff distance algorithms (thanks to Yaghyavardhan
Singh Khangarot).
-
496
New run-time and upgraded compile-time SRS transformation interfaces (undocumented
for now due to potential interface changes).
Solved issues
-
520
Missing documentation for dsv().
-
521
Wrong documentation description for distance().
-
524
Fixed 'enumeration values not handled in switch' warnings.
-
527
Workaround for VS 2017 (msvc-15).
Bugfixes
-
505
Fixed overflow in overlay algorithms (thanks to Dane Springmeyer).
-
518
Fixed passing of temporaries in append() (thanks to xventura81).
-
522
Support python3 in building documentation.
Improvements
-
469
Horizontal grid shift (nadgrids) in SRS transformations (undocumented for
now due to potential interface changes).
-
478
Box-Segment distance for spherical and geographic coordinate systems.
-
487
Missing combinations of geometries in distance for spherical and geographic
cs
-
489
Additional direct geodesic problem formulas for internal use
Solved issues
-
470
Assertion failure with short spherical and geographic segments.
-
471
Invalid envelope of spherical polygon
-
498
Unexpected results with expand() and make_inverse() for spherical and geographic
CS
-
504
Unused parameter warnings.
Bugfixes
-
488
Handle non-true-references in closing_iterator and ever_circling_range_iterator
-
495
VxWorks 7 cross-compilation issue.
Improvements
-
New map projection and SRS transformation representations (undocumented
for now due to potential interface changes).
-
New densify() algorithm.
-
No longer using std::iterator (thanks to Daniela Engert).
-
No longer using allocator directly in the rtree. Replaced with boost::container::allocator_traits
(thanks to Daniela Engert).
-
Default rtree allocator changed to boost::container::new_allocator to still
support move semantics emulation in C++03 with boost::container::allocator_traits.
-
Area strategies interface changed. This is potentially a breaking change.
-
Radius or Sphere can be passed into spherical strategies.
-
Added Point-Box and Box-Box spherical and geographic distance() strategies.
-
Simplify (multi)polygons will discard output rings of 2 points or (for
closed polygons) 3 points, but it tries to avoid creating those
-
Simplify (multi)polygons will omit empty interior rings or polygons from
output
Solved issues
-
13386 Workaround
for some gcc compilers
-
13381 Compile
error with matrix_transformer in Visual C++ 2015
-
13436 Incorrectness
in boost::geometry::model::polygon documentation
Bugfixes
-
Add missing strategy resolving in length() algorithm, affecting Variant
support.
-
Simplify (multi)polygons now simplifies closing point
Changes in behavior
-
Simplify (multi)polygons now usually rotates input rings before simplifying
to select a non collinear point on its convex hull. This improves output.
Improvements
-
Add distance for geographic PointLike/AnyGeometry.
Solved issues
-
12503 Validity
of complex polygon
Bugfixes
-
Fixes in validity of union/intersection/difference which were sometimes
invalid. In most cases, results are valid now.
-
Fixes in validity of buffer which were sometimes invalid. In most cases,
results are valid now.
-
Fixes in results of union/intersection/difference which could be incorrect
in very complex cases
-
Fixes in set and relational operations for non-cartesian coordinate systems.
Improvements
-
Add correct() overload taking area strategy
-
Add is_convex() overload taking side strategy
-
Add missing relational operations (covered_by, crosses, equals, etc.) for
MultiPoint/AnyGeometry
Solved issues
-
12410
Lack of support of geographic coordinate system in correct()
-
13035
Wrong result of non-cartesian intersection strategies for segments near
poles.
-
13057
Wrong result of intersects() for linestrings caused by numerical issue
in disjoint() for boxes.
Bugfixes
-
Fix is_valid which could return false for multipolygons where an interior
ring touches another interior ring
-
Fix is_valid which could return false for multipolygons where a polygon
was located in an interior ring, all touching each other
-
Fix union which could produce invalid results (for some cases, this needs
to define BOOST_GEOMETRY_INCLUDE_SELF_TURNS)
-
Fix intersection (idem), but some cases are still not yet valid
-
Fix difference (idem), but some cases are still not yet valid
-
Fix propagation of area strategy into the internals of various algorithms
from intersection strategy
-
Fix uninitialized variable in relate and reference to temporary in overlay
-
Fix error in disjoint for geographic Segment/Box
-
Fix handling of non-cartesian geometries in various algorithms
Improvements
-
matrix transformation is now based on Boost.QVM instead of Boost.Ublas
Breaking changes
-
ublas_transformer is renamed to matrix_transformer
-
explicit modifier is added to constructors of rtree index::dynamic_* parameters
-
strategy::area::huiller replaced by strategy::area::spherical
Solved issues
-
363
Missing includes in geometry/index/parameters.hpp
-
364
within(Linear, Areal) compilation error when arguments use different point
types
-
370
Buffer Seg Faults with Ring as Input
Solved tickets
-
11899
boost::geometry::equals doesn't handle open polygons
-
11930
Inaccuracy of area::huiller strategy
-
11931
Wrong spherical area with pole encircling polygons
-
12566
Ambiguous template instantiation in equal_to<> when pair value contains
raw pointer
-
12861
Segmentation fault in stdlibc++ (gcc 4.8.2) affecting rtree
-
12885
Use BOOST_THROW_EXCEPTION instead of throw
Bugfixes
-
Fix distance_measure in get_turn_info
Improvements
-
Intersection: take care that output is valid (work in progres, not yet
finished - but more is valid)
Solved tickets
-
12289
Avoid warning/compilation error for std::cout
-
12412
Invalid result of covered_by() with geographic Points and Boxes
-
12413
rtree::remove() not working properly with geographic Points
Improvements
-
Union: take care that output is valid (with some exceptions), also with
self-tangent polygons or shared edges
-
SVG: support boost::variant of geometries
-
SVG: coordinates are now written as double (by default) to svg
-
Rename namespace concept to concepts to avoid conflicts with the newest
compilers
-
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).
Solved tickets
-
12189
Relational operations not compiling when point types of inputs are different
(cartesian, affecting rtree)
-
12287
Invalid result of rtree.query() for contains() predicate
-
12342
Relational operations not compiling when point types of inputs are different
(geographic, affecting rtree)
Additional functionality
-
Support within and covered_by for Box/Box in spherical and geographic coordinate
systems.
Improvements
-
Overlay: handle_tangencies replaced by clusters, fixing many cases with
colocated turns
Solved tickets
-
9162
Invalid result of relational operations for non-cartesian Point/Areal.
-
10866
union_ doesn't work in 1.56 and 1.57.
-
11018
Invalid geometry intersection
-
11576
Intersection gives wrong results.
-
11637
Unused parameter warning.
-
11725
union_ fails to create holes
-
11789
Assertion failure or invalid result of set operations for spherical_equatorial
coordinate system.
-
11917
Andoyer distance strategy returns 0 for antipodal points (default geographic
distance).
-
11928
Improvement of the accuracy of surveyor (cartesian) area strategy.
-
11966
Compilation error in svg() for box and non-int coordinate type.
-
11984
union_() generates self-intersecting polygon
-
11987
rtree::remove() not compiling for geographic CS.
-
12000
Uninitialized reference in (unused) constructor of relate's mask_handler.
-
12106
Invalid assertion failure in envelope() for non-cartesian very short segments.
Bugfixes
-
Fix intersects and disjoint for Segment/Box in cartesian coordinate system
when Segment is parallel to Box's face.
-
Fix relation operations for Point/Areal in spherical and geographic coordinate
systems for edge cases.
-
Fix intersects and disjoint for Point/Box and Box/Box in spherical and
geographic coordinate systems for some cases.
-
Fix within and covered_by for Point/Box in spherical and geographic coordinate
systems for some cases.
Solved tickets
-
10803
Union algorithm returning invalid geometry
-
11522
Namespace clash in buffer for traits::detail
-
11533
Assert failure in rtree caused by a bug in remove() if min elements number
is 1
-
11607
Private geometry::exception::what()
-
11709
is_simple segfault
-
11710
is_simple - empty geometry logic
-
11711
is_simple and is_valid - Points that are NaN or Infinity
Bugfixes
-
Fix colocations of touching interior ring / exterior ring, where it also
touches another polygon
-
Fix removing values from an empty rtree - no effect and 0 returned instead
of assertion failure
-
Fix segfault in centroid for multi geometries containing empty single geometries
(thanks to Jiri Drbalek)
-
Fix liang_barsky strategy for integral coordinates (thanks to Dane Springmeyer)
Additional functionality
-
Added rtree const_iterator, begin(), end() and the support for Boost.Range.
-
The support for C++11
std::initializer_list
in geometries models.
-
Disjoint and intersects support the following geometry combinations: multipoint/linestring,
multipoint/multilinestring.
-
Added relate() and relation() algorithms.
-
Intersection has been implemented for combinations of pointlike and linear
geometries
-
Added implementation for difference(pointlike, linear)
-
New algorithm is_empty, returning true if the geometry represents the empty
set
-
The envelope algorithm supports pointlike and linear geometries in the
spherical equatorial coordinate system
-
The envelope algorithm supports pointlike geometries in the geographic
coordinate system
Improvements
-
Upgraded rtree const_query_iterator category to ForwardIterator.
-
Buffer performance of buffers around multi-points is improved significantly
Breaking changes
-
buffer side strategy now returns error_code instead of bool. If you have
your own custom side strategy, it should be adapted
Solved tickets
-
11113
Support easy enumeration of all elements with BOOST_FOREACH
-
11232
Feature request - relate()
-
11236
Invalid result of centroid() for integer coordinate type
-
11268
Regression in boost::geometry::intersection interface with multi_linestring
and box -- does not compile on 1.57 VS 1.55
-
11332
Assertion failure in buffer for extreme coordinate differences
-
11346
Segment iterator does not work with ranges returning values instead of
references
-
11436
sym_difference(py1, py2, mpy) returns invalid multipolygon
Bugfixes
-
Buffer: use a more robust way to calculate the side of an intersection,
this fixes several errors in buffer generation
-
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
-
In rescaling round instead of truncate to the integer grid (this fix and
the previous mentioned can have some impact on output geometries)
-
Fix potential infinite loop in detail::has_spikes (the loop can happen
if the points passed have NaN coordinates)
Additional functionality
-
New algorithm num_segments, returning the number of segments of a geometry
-
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
-
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
-
Disjoint and intersects support the following geometry combinations: point/multipoint,
multipoint/multipoint, multipoint/segment, multipoint/box
Improvements
-
Buffer now supports flat-ends for linestrings with a bend close to the
start (such that buffered segment crosses flat-end).
-
Buffer performance is improved significantly
-
Partition performance is improved significantly for polygons, potentially
enhancing all overlay operations
Solved tickets
-
8379
Invalid comparison of the result of determinant
-
10108
Error in overlay operations in specific cases where geometries touch at
one point
-
10201
Suggestion to use different function to compare coordinates [wontfix]
-
10467
Template parameter name coliding with B0 macro name defined in termios.h
-
10640
Invalid result of buffer() for CCW Polygons.
-
10666
MSVC compiler warning C4127: conditional expression is constant
-
10747
Error in rescaling causing errors in areal/areal set operations
-
10770
Buffer fails for large distances, or rough round joins, where concavities
where not intersected properly
-
10658
sym_difference yields bad result for int polygons
-
10835
Difference of multilinestring and polygon yields wrong result
-
10861
Rtree failing to compile for Value being a pair or a tuple containing pointer
to Geometry and the default equal_to<> used
-
10863
Template parameter name coliding with B0 macro name defined in termios.h
(duplicate of 10467)
-
10887
Invalid result of within() and relate() for Linear/MultiPolygon
-
10890
Invalid result of disjoint() for Point/Segment.
-
10904
Invalid calculation of most significant Dimension of a segment in relate_cartesian_segments
strategy
-
10912
Invalid result of within() and relate() for Areal/Areal
-
10951
Tests failing on windows with intel compiler due to lack of /bigobj flag.
-
10957
Assertion failure and invalid results of various relational operations.
-
10958
Invalid results of disjoint() L/L and L/A.
-
10959
Assertion failure in get_turns() used with no_rescale_policy.
-
10960
Invalid result of get_turns() for L/A, missing turn.
-
10961
Invalid result of get_turns() for L/A, invalid turn for a Linear spike.
-
11112
Compilation failure on Solaris due to a CS name clash (used for a macro
on this platform)
-
11121
Invalid result of difference() for integral coordinates
Bugfixes
-
Bug in multipoint/polygon multipoint/multipolygon distance computation
(wrong detection of points inside the areal geometry)
-
Bug in flatten_iterator's assignment operator causing an access violation
-
Bug in Cartesian segment-segment intersection strategy when one segment
degenerates to a point and is collinear to the other non-degenerate segment
-
Bug in centroid(), non-deterministic result if calculated for e.g. a Polygon
with zero-area.
-
Bug in buffers for joins with a limited number of points
-
Bug in buffers for round joins with limited number of points around sharp
corners
-
Bug in buffers for joins with large buffer distances
-
Bug in buffers for round ends with an odd number of points
-
Bug in buffers for flat ends with large buffer distances
-
Bug in buffers for interior rings with large negative buffer distances
-
Bug in closing_iterator not working properly when the input range is empty
-
Bug in is_simple, not handling properly closed simple linestrings within
multilinestrings
-
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.
-
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.
-
Bugs related to the handling of Ranges, preventing compilation of Geometries
using non-Container Ranges in some algorithms (thanks to Samuel Debionne)
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
-
6443
Wrong degenerated hulls returned by convex_hull().
-
8402
Implicit conversion warnings
-
9354
Bug in winding strategy affecting within() and covered_by() for non-cartesian
coordinate systems
-
10177
Missing include
-
10345
Distance fails to compile for some coordinate types
-
10398
Wrong neighbour check in buffer, calculating turns
-
10421
Invalid Point-Box distance for spherical CS
-
10562
Invalid number of Points in the result of convex_hull() for open output
-
10615
Rtree constructor feature request
-
10643
Invalid point_on_surface() result for big coordinates
-
10647
Invalid result of disjoint() in some cases when polygon is inside inner
ring of other polygon
-
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
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
-
8310
Wrong results with overlapping polygons (fixed using point_on_surface for
disjoint)
-
8375
sym_difference of non-closed polygons returns closed polygon
-
8376
difference of non-closed polygons returns closed polygon
-
9081
Booleans create self-intersecting polygons from non-self-intersecting polygons
-
9245
Check for process errors in make_qbk.py
-
9563
(Sym)difference not successful, fixed by rescaling to robust type
-
9628
Wrong result of within() due to the winding strategy not working correctly
for nearly-horizontal segments
-
9828
boost::geometry::union_(...) creates redundant closing point
-
9871
Remove spike in polygon with only a spike
-
9941
Add support for touches(box, box)
-
9947
Missing info about WKT in documentation
-
9759
Invalid results of R-tree knn queries for non-cartesian coordinate systems
-
10019
Difference of Linestring and Box returns their intersection
-
10077
Wrong types in concept checks in boost/geometry/arithmetic/arithmetic.hpp
-
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
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
-
6958
Intersection generates self-intersection. Caused by spike, fixed
-
8364
Invalid input exception, caused by spikes in previous steps, fixed
-
8365
Invalid input exception, caused by spikes in previous steps, fixed
-
8969
boost::geometry::model::point single argument constructor should be explicit
-
8825
Patch adding member variable documentation to doxygen_xml2qbk
-
8652
Intersection fails for triangle-triangle intersection. Caused by spike,
fixed
-
9047
Boost files that include themselves (strategies/intersection.hpp), fixed
Internal changes
-
Adapted projected_point<> distance strategy, point-type in template
is replaced by calculation-type
-
Adapted transform strategies, they have points now as member-template,
and calculation-type as template. Similar to what was done for projected_point
distance
-
Spikes (could be generated in difference) in integer-based overlays are
now avoided during generation
-
Cleanup, removed old MSVC2005 project files
-
R*-tree balancing algorithm optimized
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
-
7462
degenerate union result for float, fixed
-
7465
wrong construtors access type in scale_transformer class, fixed
-
7802
cart_intersect.hpp unused parameter warnings, fixed
-
8254
faulty intersection, fixed
-
8393
polygon model doesn't adhere to stated Polygon concept rules, doc updated.
-
8403
silenced compiler warning C4127: conditional expression is constant
-
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)
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
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
-
7030
spherical distance, fixed (by patch of Karsten Ahnert)
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
-
6585
patch for alternative syntax multipoint, applied
-
6584
patch for bug in distance, applied
-
5730
same issue as 6584, fixed
-
6166
patch for missing transformation, applied
-
6696
invalid intersection output, was (by chance) already fixed in Trunk before
reported
Additional functionality
-
added algorithm "touches" (OGC SF compliant) for *polygon/*polygon
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
-
6019
convex_hull / area, fixed.
-
6021
convex_hull / append (multipoint), fixed.
-
6028
Documentation: closure, fixed.
-
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)
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
-
5726
Segment intersection algorithm still assumes 'first', 'second' members
-
5744
Mistake in fusion adapt example
-
5748
Needed to include <boost/foreach.hpp>
-
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
Original release