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 SVGoutput, 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 variantaware (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
pointlinestring
(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 multigeometries ignored specified distance strategy.
Fixed

bugfix: difference for polygon/multi_polygon (reported 2011/10/24 on GGLlist)

bugfix: raise exception for calculation of distances of multigeometrie(s)
where one of them is empty

bugfix: multi DSV did not correctly use settings, fixed

bugfix: selfintersections 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 selfintersections 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 selfintersections is now not done automatically, this can blast
performance.

Besides that, checking selfintersections 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