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
-
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
-
10615
Rtree constructor feature request
-
10643
Invalid point_on_surface() result for big coordinates
-
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
-
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
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