3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
5 <link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="../../../index.html" title="Chapter 1. Geometry">
8 <link rel="up" href="../algorithms.html" title="Algorithms">
9 <link rel="prev" href="union_/union__3.html" title="union_">
10 <link rel="next" href="within.html" title="within">
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table cellpadding="2" width="100%"><tr>
14 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
15 <td align="center"><a href="../../../../../../../index.html">Home</a></td>
16 <td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
17 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19 <td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
22 <div class="spirit-nav">
23 <a accesskey="p" href="union_/union__3.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="within.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
26 <div class="titlepage"><div><div><h4 class="title">
27 <a name="geometry.reference.algorithms.unique"></a><a class="link" href="unique.html" title="unique">unique</a>
28 </h4></div></div></div>
30 <a class="indexterm" name="idm46186989896224"></a>
31 Calculates the minimal set of a geometry.
34 <a name="geometry.reference.algorithms.unique.h0"></a>
35 <span class="phrase"><a name="geometry.reference.algorithms.unique.description"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.description">Description</a>
38 The free function unique calculates the minimal set (where duplicate consecutive
39 points are removed) of a geometry.
42 <a name="geometry.reference.algorithms.unique.h1"></a>
43 <span class="phrase"><a name="geometry.reference.algorithms.unique.synopsis"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.synopsis">Synopsis</a>
47 <pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">></span>
48 <span class="keyword">void</span> <span class="identifier">unique</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="special">&</span> <span class="identifier">geometry</span><span class="special">)</span></pre>
52 <a name="geometry.reference.algorithms.unique.h2"></a>
53 <span class="phrase"><a name="geometry.reference.algorithms.unique.parameters"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.parameters">Parameters</a>
55 <div class="informaltable"><table class="table">
92 Any type fulfilling a Geometry Concept
102 A model of the specified concept which will be made unique
108 <a name="geometry.reference.algorithms.unique.h3"></a>
109 <span class="phrase"><a name="geometry.reference.algorithms.unique.header"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.header">Header</a>
115 <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
121 <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">algorithms</span><span class="special">/</span><span class="identifier">unique</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
124 <a name="geometry.reference.algorithms.unique.h4"></a>
125 <span class="phrase"><a name="geometry.reference.algorithms.unique.conformance"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.conformance">Conformance</a>
128 The function unique is not defined by OGC.
131 The function unique conforms to the std::unique function of the C++ std-library.
134 <a name="geometry.reference.algorithms.unique.h5"></a>
135 <span class="phrase"><a name="geometry.reference.algorithms.unique.behavior"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.behavior">Behavior</a>
137 <div class="informaltable"><table class="table">
163 Nothing happens, geometry is unchanged
175 Nothing happens, geometry is unchanged
187 Nothing happens, geometry is unchanged
199 Removes all consecutive duplicate points
211 Removes all consecutive duplicate points
223 Removes all consecutive duplicate points in all rings
235 Nothing happens, geometry is unchanged. Even if two equal points
236 happen to be stored consecutively, they are kept
248 Removes all consecutive duplicate points in all contained linestrings
260 Removes all consecutive duplicate points in all contained polygons
268 <a name="geometry.reference.algorithms.unique.h6"></a>
269 <span class="phrase"><a name="geometry.reference.algorithms.unique.complexity"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.complexity">Complexity</a>
275 <a name="geometry.reference.algorithms.unique.h7"></a>
276 <span class="phrase"><a name="geometry.reference.algorithms.unique.example"></a></span><a class="link" href="unique.html#geometry.reference.algorithms.unique.example">Example</a>
279 Shows how to make a so-called minimal set of a polygon by removing duplicate
284 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
286 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
287 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">polygon</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
288 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">geometry</span><span class="special">/</span><span class="identifier">geometries</span><span class="special">/</span><span class="identifier">adapted</span><span class="special">/</span><span class="identifier">boost_tuple</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
290 <span class="identifier">BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS</span><span class="special">(</span><span class="identifier">cs</span><span class="special">::</span><span class="identifier">cartesian</span><span class="special">)</span>
292 <span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
293 <span class="special">{</span>
294 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special"><</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">double</span><span class="special">></span> <span class="special">></span> <span class="identifier">poly</span><span class="special">;</span>
295 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"POLYGON((0 0,0 0,0 5,5 5,5 5,5 5,5 0,5 0,0 0,0 0,0 0,0 0))"</span><span class="special">,</span> <span class="identifier">poly</span><span class="special">);</span>
296 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">unique</span><span class="special">(</span><span class="identifier">poly</span><span class="special">);</span>
297 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">wkt</span><span class="special">(</span><span class="identifier">poly</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
299 <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
300 <span class="special">}</span>
307 <pre class="programlisting">POLYGON((0 0,0 5,5 5,5 0,0 0))
310 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
311 <td align="left"></td>
312 <td align="right"><div class="copyright-footer">Copyright © 2009-2019 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam
313 Wulkiewicz, Oracle and/or its affiliates<p>
314 Distributed under the Boost Software License, Version 1.0. (See accompanying
315 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>)
320 <div class="spirit-nav">
321 <a accesskey="p" href="union_/union__3.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../algorithms.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="within.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>