...one of the most highly
regarded and expertly designed C++ library projects in the
world.

— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards

**Breaking changes**

**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**

**Additional functionality**

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

**Documentation**

**Internal changes**

**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**

**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**

**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