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="assign/assign_zero.html" title="assign_zero">
10 <link rel="next" href="buffer.html" title="buffer">
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="assign/assign_zero.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="buffer.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.append"></a><a class="link" href="append.html" title="append">append</a>
28 </h4></div></div></div>
30 <a class="indexterm" name="idp89240608"></a>
31 Appends one or more points to a linestring, ring, polygon, multi-geometry.
34 <a name="geometry.reference.algorithms.append.h0"></a>
35 <span class="phrase"><a name="geometry.reference.algorithms.append.synopsis"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.synopsis">Synopsis</a>
39 <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> <span class="keyword">typename</span> <span class="identifier">RangeOrPoint</span><span class="special">></span>
40 <span class="keyword">void</span> <span class="identifier">append</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="special">&</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">RangeOrPoint</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">range_or_point</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">ring_index</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">,</span>
41 <span class="keyword">int</span> <span class="identifier">multi_index</span> <span class="special">=</span> <span class="number">0</span><span class="special">)</span></pre>
45 <a name="geometry.reference.algorithms.append.h1"></a>
46 <span class="phrase"><a name="geometry.reference.algorithms.append.parameters"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.parameters">Parameters</a>
48 <div class="informaltable"><table class="table">
86 Any type fulfilling a Geometry Concept
96 A model of the specified concept
103 RangeOrPoint const &
108 Either a range or a point, fullfilling Boost.Range concept or
109 Boost.Geometry Point Concept
119 The point or range to add
138 The index of the ring in case of a polygon: exterior ring (-1,
139 the default) or interior ring index
158 The index of the geometry to which the points are appended
165 <a name="geometry.reference.algorithms.append.h2"></a>
166 <span class="phrase"><a name="geometry.reference.algorithms.append.header"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.header">Header</a>
172 <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>
178 <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">append</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
181 <a name="geometry.reference.algorithms.append.h3"></a>
182 <span class="phrase"><a name="geometry.reference.algorithms.append.conformance"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.conformance">Conformance</a>
185 The function append is not defined by OGC.
188 <a name="geometry.reference.algorithms.append.h4"></a>
189 <span class="phrase"><a name="geometry.reference.algorithms.append.supported_geometries"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.supported_geometries">Supported
192 <div class="informaltable"><table class="table">
221 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
226 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
238 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
243 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
255 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
260 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
272 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
277 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
289 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
294 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
306 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
311 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
323 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
328 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
340 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
345 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
357 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
362 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
369 <a name="geometry.reference.algorithms.append.h5"></a>
370 <span class="phrase"><a name="geometry.reference.algorithms.append.behavior"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.behavior">Behavior</a>
372 <div class="informaltable"><table class="table">
398 Compiles, but no action
410 Appends point or range to the end of the linestring
422 Appends point or range to the end of the ring (without explicitly
435 Appends point or range to the end of the polygon (without explicitly
436 closing it), either the exterior ring (the default) or specify
437 a zero-based index for one of the interior rings. In the last
438 case, the interior rings are not resized automatically, so ensure
439 that the zero-based index is smaller than the number of interior
452 Appends point or range to the end of the linestring with the
453 given multi index. The multi-linestring is not resized automatically,
454 so ensure that the multi index is smaller than then number of
455 linestring in the multi-linestring.
467 Appends point or range to the end of the polygon (without explicitly
468 closing it) with the given multi-index. The point or range is
469 appended at the end of the exterior ring (the default) or specify
470 a zero-based ring index for the interior rings. The multi-polygon
471 is not resized automatically, so ensure that the multi index
472 is smaller than then number of polygon in the multi-polygon.
473 The same applies for the interior rings of the polygon: the interior
474 rings are not resized automatically, so ensure that the zero-based
475 ring index is smaller than the number of interior rings of the
483 <a name="geometry.reference.algorithms.append.h6"></a>
484 <span class="phrase"><a name="geometry.reference.algorithms.append.complexity"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.complexity">Complexity</a>
490 <a name="geometry.reference.algorithms.append.h7"></a>
491 <span class="phrase"><a name="geometry.reference.algorithms.append.example"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.example">Example</a>
494 Shows usage of Boost.Geometry's append to append a point or a range to
499 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
501 <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>
502 <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>
503 <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>
505 <span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">assign</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> <a class="co" name="geometry.reference.algorithms.append.c0" href="append.html#geometry.reference.algorithms.append.c1"><img src="../../../../../../../doc/src/images/callouts/1.png" alt="1" border="0"></a>
507 <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>
509 <span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
510 <span class="special">{</span>
511 <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">assign</span><span class="special">::</span><span class="identifier">tuple_list_of</span><span class="special">;</span>
512 <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">make_tuple</span><span class="special">;</span>
513 <span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">append</span><span class="special">;</span>
515 <span class="keyword">typedef</span> <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">int</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span> <span class="special">></span> <span class="identifier">polygon</span><span class="special">;</span>
517 <span class="identifier">polygon</span> <span class="identifier">poly</span><span class="special">;</span>
519 <span class="comment">// Append a range</span>
520 <span class="identifier">append</span><span class="special">(</span><span class="identifier">poly</span><span class="special">,</span> <span class="identifier">tuple_list_of</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">)(</span><span class="number">0</span><span class="special">,</span> <span class="number">10</span><span class="special">)(</span><span class="number">11</span><span class="special">,</span> <span class="number">11</span><span class="special">)(</span><span class="number">10</span><span class="special">,</span> <span class="number">0</span><span class="special">));</span> <a class="co" name="geometry.reference.algorithms.append.c2" href="append.html#geometry.reference.algorithms.append.c3"><img src="../../../../../../../doc/src/images/callouts/2.png" alt="2" border="0"></a>
521 <span class="comment">// Append a point (in this case the closing point)</span>
522 <span class="identifier">append</span><span class="special">(</span><span class="identifier">poly</span><span class="special">,</span> <span class="identifier">make_tuple</span><span class="special">(</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">));</span>
524 <span class="comment">// Create an interior ring (append does not do this automatically)</span>
525 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">interior_rings</span><span class="special">(</span><span class="identifier">poly</span><span class="special">).</span><span class="identifier">resize</span><span class="special">(</span><span class="number">1</span><span class="special">);</span>
527 <span class="comment">// Append a range to the interior ring</span>
528 <span class="identifier">append</span><span class="special">(</span><span class="identifier">poly</span><span class="special">,</span> <span class="identifier">tuple_list_of</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">2</span><span class="special">)(</span><span class="number">2</span><span class="special">,</span> <span class="number">5</span><span class="special">)(</span><span class="number">6</span><span class="special">,</span> <span class="number">6</span><span class="special">)(</span><span class="number">5</span><span class="special">,</span> <span class="number">2</span><span class="special">),</span> <span class="number">0</span><span class="special">);</span> <a class="co" name="geometry.reference.algorithms.append.c4" href="append.html#geometry.reference.algorithms.append.c5"><img src="../../../../../../../doc/src/images/callouts/3.png" alt="3" border="0"></a>
529 <span class="comment">// Append a point to the first interior ring</span>
530 <span class="identifier">append</span><span class="special">(</span><span class="identifier">poly</span><span class="special">,</span> <span class="identifier">make_tuple</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">2</span><span class="special">),</span> <span class="number">0</span><span class="special">);</span>
532 <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">dsv</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>
534 <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
535 <span class="special">}</span>
539 <div class="calloutlist"><table border="0" summary="Callout list">
541 <td width="5%" valign="top" align="left"><p><a name="geometry.reference.algorithms.append.c1"></a><a href="#geometry.reference.algorithms.append.c0"><img src="../../../../../../../doc/src/images/callouts/1.png" alt="1" border="0"></a> </p></td>
542 <td valign="top" align="left"><p>
543 At the end to avoid conflicts with Boost.QVM
547 <td width="5%" valign="top" align="left"><p><a name="geometry.reference.algorithms.append.c3"></a><a href="#geometry.reference.algorithms.append.c2"><img src="../../../../../../../doc/src/images/callouts/2.png" alt="2" border="0"></a> </p></td>
548 <td valign="top" align="left"><p>
549 tuple_list_of delivers a range and can therefore be used in boost::geometry::append
553 <td width="5%" valign="top" align="left"><p><a name="geometry.reference.algorithms.append.c5"></a><a href="#geometry.reference.algorithms.append.c4"><img src="../../../../../../../doc/src/images/callouts/3.png" alt="3" border="0"></a> </p></td>
554 <td valign="top" align="left"><p>
555 The last parameter ring_index 0 denotes the first interior ring
562 <pre class="programlisting">(((0, 0), (0, 10), (11, 11), (10, 0), (0, 0)), ((2, 2), (2, 5), (6, 6), (5, 2), (2, 2)))
565 <a name="geometry.reference.algorithms.append.h8"></a>
566 <span class="phrase"><a name="geometry.reference.algorithms.append.see_also"></a></span><a class="link" href="append.html#geometry.reference.algorithms.append.see_also">See
569 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
570 <a class="link" href="assign/assign_points.html" title="assign_points">assign</a>
573 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
574 <td align="left"></td>
575 <td align="right"><div class="copyright-footer">Copyright © 2009-2017 Barend
576 Gehrels, Bruno Lalande, Mateusz Loskot, Adam Wulkiewicz, Oracle and/or its
578 Distributed under the Boost Software License, Version 1.0. (See accompanying
579 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>)
584 <div class="spirit-nav">
585 <a accesskey="p" href="assign/assign_zero.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="buffer.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>