Boost.Geometry doc updates and fixes. Including a new section Conformance instead of notes/tips defining that in previous version

[SVN r76993]
This commit is contained in:
Barend Gehrels 2012-02-12 15:04:44 +00:00
parent 2bcbf859d0
commit 495597f8b9
38 changed files with 208 additions and 60 deletions

View File

@ -16,7 +16,7 @@
[concept Linestring..linestring]
A linestring is ['a Curve with linear interpolation between Points].
([@http://portal.opengeospatial.org/files/?artifact_id=25355 opengeospatial]).
(__ogc_sf__).
[heading Concept Definition]

View File

@ -16,7 +16,7 @@
[concept Polygon..polygon]
A polygon is ['A polygon is a planar surface defined by one exterior boundary and zero or more interior boundaries]
([@http://portal.opengeospatial.org/files/?artifact_id=25355 opengeospatial]).
(__ogc_sf__).
So the definition of a Boost.Geometry polygon differs a bit from e.g. Wiki, where a polygon does not have holes. A
polygon of Boost.Geometry is a polygon with or without holes.

View File

@ -1,3 +1,4 @@
[/NOTE: adapted manually, multi-linestring/multi-polygon do compile but not run!]
[heading Supported geometries]
[table
[[ ][Point][Range]]
@ -8,6 +9,6 @@
[[Ring][ [$img/ok.png] ][ [$img/ok.png] ]]
[[Polygon][ [$img/ok.png] ][ [$img/ok.png] ]]
[[MultiPoint][ [$img/ok.png] ][ [$img/ok.png] ]]
[[MultiLinestring][ [$img/ok.png] ][ [$img/ok.png] ]]
[[MultiPolygon][ [$img/ok.png] ][ [$img/ok.png] ]]
[[MultiLinestring][ [$img/nyi.png] ][ [$img/nyi.png] ]]
[[MultiPolygon][ [$img/nyi.png] ][ [$img/nyi.png] ]]
]

View File

@ -12,7 +12,6 @@
[library Geometry
[quickbook 1.5]
[version 1.49]
[authors [Gehrels, Barend], [Lalande, Bruno], [Loskot, Mateusz]]
[copyright 2009-2012 Barend Gehrels, Bruno Lalande, Mateusz Loskot]
[purpose Documentation of Boost.Geometry library]
@ -61,10 +60,6 @@
[template qbk_ret[what] Returns [what]]
[template qbk_out[what] GeometryOut is a [what]]
[template concept[name type] The [name] Concept describes the requirements for a [type] type.
All algorithms in Boost.Geometry will check any geometry arguments against the concept requirements.]
[def __boost__ Boost]
[def __boost_geometry__ Boost.Geometry]
[def __boost_array__ Boost.Array]
@ -78,6 +73,28 @@ All algorithms in Boost.Geometry will check any geometry arguments against the c
[def __ttmath__ [@http://www.ttmath.org/ ttmath]]
[def __ogc__ [@http://www.opengeospatial.org OGC]]
[def __ogc_sf__ [@http://www.opengeospatial.org/standards/sfa OGC Simple Feature Specification]]
[/Templates]
[template concept[name type]
The [name] Concept describes the requirements for a [type] type.
All algorithms in Boost.Geometry will check any geometry arguments against the concept requirements.
]
[template heading_conformance_no_ogc[function]
[heading Conformance]
The function [function] is not defined by OGC.
]
[template heading_conformance_ogc[function ogc_function]
[heading Conformance]
The function [function] implements function [ogc_function] from the __ogc_sf__.
]
[template conformance_std[function std_function]
The function [function] conforms to the [std_function] of the C++ std-library.
]
[heading Contributions]
Boost.Geometry contains contributions by:

View File

@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Chapter&#160;1.&#160;Geometry 1.0</title>
<title>Chapter&#160;1.&#160;Geometry</title>
<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="index.html" title="Chapter&#160;1.&#160;Geometry 1.0">
<link rel="home" href="index.html" title="Chapter&#160;1.&#160;Geometry">
<link rel="next" href="geometry/introduction.html" title="Introduction">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@ -21,7 +21,7 @@
<div class="chapter">
<div class="titlepage"><div>
<div><h2 class="title">
<a name="geometry"></a>Chapter&#160;1.&#160;Geometry 1.0</h2></div>
<a name="geometry"></a>Chapter&#160;1.&#160;Geometry</h2></div>
<div><div class="author"><h3 class="author">
<span class="firstname">Barend</span> <span class="surname">Gehrels</span>
</h3></div></div>
@ -31,9 +31,9 @@
<div><div class="author"><h3 class="author">
<span class="firstname">Mateusz</span> <span class="surname">Loskot</span>
</h3></div></div>
<div><p class="copyright">Copyright &#169; 2012 Barend Gehrels, Bruno Lalande, Mateusz Loskot</p></div>
<div><p class="copyright">Copyright &#169; 2009 -2012 Barend Gehrels, Bruno Lalande, Mateusz Loskot</p></div>
<div><div class="legalnotice">
<a name="id666441"></a><p>
<a name="id857080"></a><p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@ -43,37 +43,38 @@
<p><b>Table of Contents</b></p>
<dl>
<dt><span class="section"><a href="geometry/introduction.html">Introduction</a></span></dt>
<dt><span class="section"><a href="geometry/quickstart.html">Quick Start</a></span></dt>
<dt><span class="section"><a href="geometry/design.html">Design Rationale</a></span></dt>
<dt><span class="section"><a href="geometry/quickstart.html"> Quick Start</a></span></dt>
<dt><span class="section"><a href="geometry/design.html"> Design Rationale</a></span></dt>
<dt><span class="section"><a href="geometry/compilation.html">Compilation</a></span></dt>
<dt><span class="section"><a href="geometry/indexes.html">Indexes</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="geometry/indexes/matrix.html">Reference matrix</a></span></dt>
<dt><span class="section"><a href="geometry/indexes/matrix.html"> Reference matrix</a></span></dt>
<dt><span class="section"><a href="geometry/indexes/alphabetical_index.html">Alphabetical Index</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="geometry/reference.html">Reference</a></span></dt>
<dt><span class="section"><a href="geometry/reference.html"> Reference</a></span></dt>
<dd><dl>
<dt><span class="section"><a href="geometry/reference/access.html">Access Functions</a></span></dt>
<dt><span class="section"><a href="geometry/reference/adapted.html">Adapted models</a></span></dt>
<dt><span class="section"><a href="geometry/reference/algorithms.html">Algorithms</a></span></dt>
<dt><span class="section"><a href="geometry/reference/arithmetic.html">Arithmetic</a></span></dt>
<dt><span class="section"><a href="geometry/reference/concepts.html">Concepts</a></span></dt>
<dt><span class="section"><a href="geometry/reference/constants.html">Constants</a></span></dt>
<dt><span class="section"><a href="geometry/reference/cs.html">Coordinate Systems</a></span></dt>
<dt><span class="section"><a href="geometry/reference/core.html">Core Metafunctions</a></span></dt>
<dt><span class="section"><a href="geometry/reference/enumerations.html">Enumerations</a></span></dt>
<dt><span class="section"><a href="geometry/reference/exceptions.html">Exceptions</a></span></dt>
<dt><span class="section"><a href="geometry/reference/iterators.html">Iterators</a></span></dt>
<dt><span class="section"><a href="geometry/reference/models.html">Models</a></span></dt>
<dt><span class="section"><a href="geometry/reference/strategies.html">Strategies</a></span></dt>
<dt><span class="section"><a href="geometry/reference/views.html">Views</a></span></dt>
<dt><span class="section"><a href="geometry/reference/access.html"> Access Functions</a></span></dt>
<dt><span class="section"><a href="geometry/reference/adapted.html"> Adapted models</a></span></dt>
<dt><span class="section"><a href="geometry/reference/algorithms.html"> Algorithms</a></span></dt>
<dt><span class="section"><a href="geometry/reference/arithmetic.html"> Arithmetic</a></span></dt>
<dt><span class="section"><a href="geometry/reference/concepts.html"> Concepts</a></span></dt>
<dt><span class="section"><a href="geometry/reference/constants.html"> Constants</a></span></dt>
<dt><span class="section"><a href="geometry/reference/cs.html"> Coordinate Systems</a></span></dt>
<dt><span class="section"><a href="geometry/reference/core.html"> Core Metafunctions</a></span></dt>
<dt><span class="section"><a href="geometry/reference/enumerations.html"> Enumerations</a></span></dt>
<dt><span class="section"><a href="geometry/reference/exceptions.html"> Exceptions</a></span></dt>
<dt><span class="section"><a href="geometry/reference/iterators.html"> Iterators</a></span></dt>
<dt><span class="section"><a href="geometry/reference/models.html"> Models</a></span></dt>
<dt><span class="section"><a href="geometry/reference/strategies.html"> Strategies</a></span></dt>
<dt><span class="section"><a href="geometry/reference/views.html"> Views</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="geometry/aboutdoc.html">About this documentation</a></span></dt>
<dt><span class="section"><a href="geometry/release_notes.html"> Release Notes</a></span></dt>
<dt><span class="section"><a href="geometry/aboutdoc.html"> About this documentation</a></span></dt>
<dt><span class="section"><a href="geometry/acknowledgments.html">Acknowledgments</a></span></dt>
</dl>
</div>
<a name="geometry.contributions"></a><h3>
<a name="geometry.contributions-heading"></a>
<a name="id857099"></a>
<a class="link" href="index.html#geometry.contributions">Contributions</a>
</h3>
<p>
@ -87,24 +88,24 @@
Alfredo Correa (adaption of Boost.Array)
</li>
<li class="listitem">
Adam Wulkiewicz (spatial indexes) <sup>[<a name="id697753" href="#ftn.id697753" class="footnote">1</a>]</sup>
Adam Wulkiewicz (spatial indexes) <sup>[<a name="id857137" href="#ftn.id857137" class="footnote">1</a>]</sup>
</li>
<li class="listitem">
Federico Fern&#225;ndez (spatial indexes) <sup>[<a name="id697767" href="#ftn.id697767" class="footnote">2</a>]</sup>
Federico Fern&#225;ndez (spatial indexes) <sup>[<a name="id857151" href="#ftn.id857151" class="footnote">2</a>]</sup>
</li>
</ul></div>
<div class="footnotes">
<br><hr width="100" align="left">
<div class="footnote"><p><sup>[<a name="ftn.id697753" href="#id697753" class="para">1</a>] </sup>
<div class="footnote"><p><sup>[<a name="ftn.id857137" href="#id857137" class="para">1</a>] </sup>
Currently an extension
</p></div>
<div class="footnote"><p><sup>[<a name="ftn.id697767" href="#id697767" class="para">2</a>] </sup>
<div class="footnote"><p><sup>[<a name="ftn.id857151" href="#id857151" class="para">2</a>] </sup>
Currently an extension
</p></div>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"><p><small>Last revised: January 13, 2012 at 11:52:50 GMT</small></p></td>
<td align="left"><p><small>Last revised: February 12, 2012 at 15:01:29 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>

View File

@ -38,10 +38,9 @@ The library follows existing conventions:
* conventions from boost
* conventions from the std library
* conventions and names from one of the __ogc__ standards on geometry and, more
specificly, from the
[@http://portal.opengeospatial.org/files/?artifact_id=25355 Simple Feature Specification]
specificly, from the __ogc_sf__
The library was released with Boost 1.47.0 and from that point on it is
The library was first released with Boost 1.47.0 and from that point on it is
officially part of the Boost C++ Libraries.
Latest stable version of the source code is included in the

Binary file not shown.

View File

@ -10,6 +10,12 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ append]
[heading_conformance_no_ogc __this_function__]
[include generated/append_status.qbk]
[heading Behavior]
[table
[[Case] [Behavior] ]

View File

@ -10,6 +10,10 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ area]
[heading_conformance_ogc __this_function__..Area]
[heading Behavior]
[table
[[Case] [Behavior] ]

View File

@ -10,6 +10,13 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ buffer]
[heading_conformance_ogc __this_function__..Buffer]
[note The current implemetation only enlarges a box, which is not defined by OGC.
A next version of the library will contain a more complete implementation
]
[heading Behavior]
[table
[[Case] [Behavior] ]

View File

@ -10,6 +10,10 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ centroid]
[heading_conformance_ogc __this_function__..Centroid]
[heading Behavior]
[table
[[Case] [Behavior] ]

View File

@ -11,6 +11,10 @@
=============================================================================/]
[def __is_cleared__ is cleared]
[def __this_function__ clear]
[heading_conformance_no_ogc __this_function__]
[conformance_std __this_function__..__this_function__() method]
[include generated/clear_status.qbk]

View File

@ -10,6 +10,10 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ comparable_distance]
[heading_conformance_no_ogc __this_function__]
[heading Behaviour]
There is no (not yet) version with a strategy.

View File

@ -10,9 +10,9 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[note convert is not defined within OGC or ISO]
[note convert is modelled as source -> target
(where assign is modelled as target := source)]
[def __this_function__ convert]
[heading_conformance_no_ogc __this_function__]
[include generated/convert_status.qbk]
[note In this status matrix above: columns are source types
@ -29,4 +29,5 @@ Linear
[heading See also]
* [link geometry.reference.algorithms.assign.assign assign]
[note convert is modelled as source -> target
(where assign is modelled as target := source)]

View File

@ -10,6 +10,10 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ convex_hull]
[heading_conformance_ogc __this_function__..ConvexHull()]
[include generated/convex_hull_status.qbk]
[heading Complexity]

View File

@ -11,6 +11,11 @@
=============================================================================/]
[def __corrected__ is corrected]
[def __this_function__ correct]
[heading_conformance_no_ogc __this_function__]
[include generated/correct_status.qbk]
[heading Behavior]
[table
@ -22,8 +27,6 @@
[[__other__][__does_nothing__]]
]
[tip Correct is not defined within OGC or ISO]
[heading Complexity]
Linear

View File

@ -10,17 +10,20 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ covered_by]
[heading_conformance_no_ogc __this_function__]
[note Both PostGIS and Oracle contain an algorithm with the same name and the
same functionality.
See the [@http://www.postgis.org/docs/ST_CoveredBy.html PostGIS documentation].
]
[include generated/covered_by_status.qbk]
[note In this status matrix above: columns are types of first parameter
and rows are types of second parameter. So a point can be checked to be
covered by a polygon, but not vice versa.
]
[note convert is not defined within OGC or ISO. However, both PostGIS
and Oracle contain an algorithm with the same name and the same functionality.
See the [@http://www.postgis.org/docs/ST_CoveredBy.html PostGIS documentation].
]
[heading Complexity]
Linear

View File

@ -8,6 +8,10 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ difference]
[heading_conformance_ogc __this_function__..Difference]
[include reference/algorithms/difference_behavior.qbk]
[include reference/algorithms/geometry_rules.qbk]

View File

@ -10,6 +10,10 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ distance]
[heading_conformance_ogc __this_function__..Distance]
[include generated/distance_status.qbk]
[heading Complexity]

View File

@ -10,6 +10,10 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ equals]
[heading_conformance_ogc __this_function__..Equals]
[include generated/equals_status.qbk]
[heading Complexity]

View File

@ -10,8 +10,12 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ expand]
[def __apply_expand__ Box is expanded to include the specified]
[heading_conformance_no_ogc __this_function__]
[heading Behavior]
[table
[[Case] [Behavior] ]
@ -20,7 +24,6 @@
[[__box__ / __other__][__nyiversion__]]
]
[tip Expand is not defined within OGC or ISO]
[note To use expand with another geometry type then specified, use expand(make_envelope<box_type>(geometry)]
[heading Complexity]

View File

@ -10,6 +10,10 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ intersection]
[heading_conformance_ogc __this_function__..Intersection]
[heading Behavior]
[table
[[Case] [Behavior] ]

View File

@ -10,6 +10,11 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ intersects]
[heading_conformance_ogc __this_function__..Intersects]
[note The one argument version is added for __boost_geometry__]
[heading Examples]
[intersects_linestring]
[intersects_linestring_output]

View File

@ -10,6 +10,10 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ length]
[heading_conformance_ogc __this_function__..Length]
[heading Behavior]
[table
[[Case] [Behavior] ]

View File

@ -10,6 +10,10 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ num_geometries]
[heading_conformance_ogc __this_function__..NumGeometries]
[heading Behavior]
[table
[[Case] [Behavior] ]

View File

@ -10,6 +10,11 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ num_interior_ring]
[heading_conformance_ogc __this_function__..NumInteriorRing]
[note __boost_geometry__ adds an "s"]
[heading Behavior]
[table
[[Case] [Behavior] ]

View File

@ -10,6 +10,12 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ num_points]
[heading_conformance_ogc __this_function__..NumPoints]
[note __this_function__ can be called for any geometry and not just linestrings
(as the standard describes)]
[heading Behavior]
[table
[[Case] [Behavior] ]

View File

@ -10,6 +10,14 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ perimeter]
[heading_conformance_no_ogc __this_function__]
[note PostGIS contains an algorithm with the same name and the
same functionality.
See the [@http://www.postgis.org/docs/ST_Perimeter.html PostGIS documentation].
]
[heading Behavior]
[table
[[Case] [Behavior] ]

View File

@ -10,6 +10,10 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ reverse]
[heading_conformance_no_ogc __this_function__]
[conformance_std __this_function__..std::__this_function__ function]
[heading Behavior]
[table
@ -27,8 +31,6 @@
[note The reverse of a (multi)polygon or ring might make a valid geometry invalid because the (counter)clockwise orientation reverses.]
[tip Conforms to std::reverse functionality. It is not defined within OGC or ISO]
[heading Complexity]
Linear

View File

@ -10,6 +10,23 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ simplify]
[heading_conformance_no_ogc __this_function__]
[note PostGIS contains an algorithm with the same name and the
same functionality.
See the [@http://www.postgis.org/docs/ST_Simplify.html PostGIS documentation].
]
[note SQL Server contains an algorithm Reduce() with the same functionality.
See the [@http://msdn.microsoft.com/en-us/library/bb933814.aspx MSDN documentation].
]
[heading Behavior]
Simplification is done using [@http://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm Douglas-Peucker] (if the default strategy is used).
[note Geometries might become invalid by using simplify. The simplification
process might create self-intersections.
]
[heading Examples]
[simplify]
[simplify_output]

View File

@ -10,6 +10,10 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ sym_difference]
[heading_conformance_ogc __this_function__..SymDifference]
[include reference/algorithms/difference_behavior.qbk]
[include reference/algorithms/geometry_rules.qbk]

View File

@ -10,6 +10,10 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ transform]
[heading_conformance_no_ogc __this_function__]
[heading Behavior]
[table
[[Case] [Behavior] ]

View File

@ -10,6 +10,11 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ union]
[heading_conformance_ogc __this_function__..Union]
[note __boost_geometry__ adds an underscore to avoid using the `union` keyword]
[heading Behavior]
[table
[[Case] [Behavior] ]

View File

@ -11,6 +11,10 @@
=============================================================================/]
[def __applies_unique__ Removes all consecutive duplicate points]
[def __this_function__ unique]
[heading_conformance_no_ogc __this_function__]
[conformance_std __this_function__..std::__this_function__ function]
[heading Behavior]
[table
@ -26,8 +30,6 @@
[[__multi_polygon__][__applies_unique__ in all contained polygons (all rings)]]
]
[tip Conforms to std::unique functionality. It is not defined within OGC or ISO]
[heading Complexity]
Linear

View File

@ -10,6 +10,11 @@
http://www.boost.org/LICENSE_1_0.txt)
=============================================================================/]
[def __this_function__ within]
[heading_conformance_ogc __this_function__..Within]
[note OGC defines within as completely within and not on the border. See the notes for within / on the border]
[include generated/within_status.qbk]
[note In this status matrix above: columns are types of first parameter
and rows are types of second parameter. So a point can be checked to be

View File

@ -32,14 +32,14 @@ int main()
// Append a range
append(poly, tuple_list_of(0, 0)(0, 10)(11, 11)(10, 0)); /*< tuple_list_of delivers a range and can therefore be used in boost::geometry::append >*/
// Append a point (in this case the closing point
// Append a point (in this case the closing point)
append(poly, make_tuple(0, 0));
// Create an interior ring (append does not do this automatically)
boost::geometry::interior_rings(poly).resize(1);
// Append a range to the interior ring
append(poly, tuple_list_of(2, 2)(2, 5)(6, 6)(5, 2), 0);
append(poly, tuple_list_of(2, 2)(2, 5)(6, 6)(5, 2), 0); /*< The last parameter ring_index 0 denotes the first interior ring >*/
// Append a point to the first interior ring
append(poly, make_tuple(2, 2), 0);