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="clear.html" title="clear">
10 <link rel="next" href="convex_hull.html" title="convex_hull">
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="clear.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="convex_hull.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.convert"></a><a class="link" href="convert.html" title="convert">convert</a>
28 </h4></div></div></div>
30 <a class="indexterm" name="idp91072672"></a>
31 Converts one geometry to another geometry.
34 <a name="geometry.reference.algorithms.convert.h0"></a>
35 <span class="phrase"><a name="geometry.reference.algorithms.convert.description"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.description">Description</a>
38 The convert algorithm converts one geometry, e.g. a BOX, to another geometry,
39 e.g. a RING. This only works if it is possible and applicable. If the point-order
40 is different, or the closure is different between two geometry types, it
41 will be converted correctly by explicitly reversing the points or closing
42 or opening the polygon rings.
45 <a name="geometry.reference.algorithms.convert.h1"></a>
46 <span class="phrase"><a name="geometry.reference.algorithms.convert.synopsis"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.synopsis">Synopsis</a>
50 <pre class="programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Geometry1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Geometry2</span><span class="special">></span>
51 <span class="keyword">void</span> <span class="identifier">convert</span><span class="special">(</span><span class="identifier">Geometry1</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">geometry1</span><span class="special">,</span> <span class="identifier">Geometry2</span> <span class="special">&</span> <span class="identifier">geometry2</span><span class="special">)</span></pre>
55 <a name="geometry.reference.algorithms.convert.h2"></a>
56 <span class="phrase"><a name="geometry.reference.algorithms.convert.parameters"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.parameters">Parameters</a>
58 <div class="informaltable"><table class="table">
96 Any type fulfilling a Geometry Concept
106 A model of the specified concept (source)
118 Any type fulfilling a Geometry Concept
128 A model of the specified concept (target)
135 <a name="geometry.reference.algorithms.convert.h3"></a>
136 <span class="phrase"><a name="geometry.reference.algorithms.convert.header"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.header">Header</a>
142 <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>
148 <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">convert</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
151 <a name="geometry.reference.algorithms.convert.h4"></a>
152 <span class="phrase"><a name="geometry.reference.algorithms.convert.conformance"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.conformance">Conformance</a>
155 The function convert is not defined by OGC.
158 <a name="geometry.reference.algorithms.convert.h5"></a>
159 <span class="phrase"><a name="geometry.reference.algorithms.convert.supported_geometries"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.supported_geometries">Supported
162 <div class="informaltable"><table class="table">
233 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
238 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
243 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
248 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
253 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
258 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
263 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
268 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
273 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
285 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
290 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
295 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
300 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
305 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
310 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
315 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
320 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
325 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
337 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
342 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
347 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
352 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
357 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
362 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
367 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
372 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
377 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
389 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
394 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
399 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
404 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
409 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
414 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
419 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
424 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
429 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
441 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
446 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
451 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
456 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
461 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
466 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
471 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
476 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
481 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
493 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
498 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
503 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
508 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
513 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
518 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
523 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
528 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
533 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
545 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
550 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
555 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
560 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
565 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
570 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
575 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
580 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
585 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
597 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
602 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
607 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
612 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
617 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
622 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
627 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
632 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
637 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
649 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
654 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
659 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
664 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
669 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
674 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
679 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
684 <span class="inlinemediaobject"><img src="../../../img/nyi.png" alt="nyi"></span>
689 <span class="inlinemediaobject"><img src="../../../img/ok.png" alt="ok"></span>
695 <div class="note"><table border="0" summary="Note">
697 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
698 <th align="left">Note</th>
700 <tr><td align="left" valign="top"><p>
701 In this status matrix above: columns are source types and rows are target
702 types. So a box can be converted to a ring, polygon or multi-polygon,
707 <a name="geometry.reference.algorithms.convert.h6"></a>
708 <span class="phrase"><a name="geometry.reference.algorithms.convert.complexity"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.complexity">Complexity</a>
714 <a name="geometry.reference.algorithms.convert.h7"></a>
715 <span class="phrase"><a name="geometry.reference.algorithms.convert.example"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.example">Example</a>
718 Shows how to convert a geometry into another geometry
722 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
724 <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>
725 <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">box</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
726 <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">point_xy</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
727 <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>
728 <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>
730 <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>
732 <span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
733 <span class="special">{</span>
734 <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">d2</span><span class="special">::</span><span class="identifier">point_xy</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">point</span><span class="special">;</span>
735 <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">box</span><span class="special"><</span><span class="identifier">point</span><span class="special">></span> <span class="identifier">box</span><span class="special">;</span>
736 <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">point</span><span class="special">></span> <span class="identifier">polygon</span><span class="special">;</span>
738 <span class="identifier">point</span> <span class="identifier">p1</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
739 <span class="identifier">box</span> <span class="identifier">bx</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">make</span><span class="special"><</span><span class="identifier">box</span><span class="special">>(</span><span class="number">1</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="number">2</span><span class="special">);</span>
741 <span class="comment">// Assign a box to a polygon (conversion box->poly)</span>
742 <span class="identifier">polygon</span> <span class="identifier">poly</span><span class="special">;</span>
743 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">convert</span><span class="special">(</span><span class="identifier">bx</span><span class="special">,</span> <span class="identifier">poly</span><span class="special">);</span>
745 <span class="comment">// Convert a point to another point type (conversion of point-type)</span>
746 <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="identifier">p2</span><span class="special">;</span>
747 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">::</span><span class="identifier">convert</span><span class="special">(</span><span class="identifier">p1</span><span class="special">,</span> <span class="identifier">p2</span><span class="special">);</span> <span class="comment">// source -> target</span>
749 <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">dsv</span><span class="special">;</span>
750 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span>
751 <span class="special"><<</span> <span class="string">"box: "</span> <span class="special"><<</span> <span class="identifier">dsv</span><span class="special">(</span><span class="identifier">bx</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span>
752 <span class="special"><<</span> <span class="string">"polygon: "</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>
753 <span class="special"><<</span> <span class="string">"point: "</span> <span class="special"><<</span> <span class="identifier">dsv</span><span class="special">(</span><span class="identifier">p1</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span>
754 <span class="special"><<</span> <span class="string">"point tuples: "</span> <span class="special"><<</span> <span class="identifier">dsv</span><span class="special">(</span><span class="identifier">p2</span><span class="special">)</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span>
755 <span class="special">;</span>
757 <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
758 <span class="special">}</span>
765 <pre class="programlisting">box: ((1, 1), (2, 2))
766 polygon: (((1, 1), (1, 2), (2, 2), (2, 1), (1, 1)))
771 <a name="geometry.reference.algorithms.convert.h8"></a>
772 <span class="phrase"><a name="geometry.reference.algorithms.convert.see_also"></a></span><a class="link" href="convert.html#geometry.reference.algorithms.convert.see_also">See
775 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
776 <a class="link" href="assign/assign.html" title="assign">assign</a>
778 <div class="note"><table border="0" summary="Note">
780 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
781 <th align="left">Note</th>
783 <tr><td align="left" valign="top"><p>
784 convert is modelled as source -> target (where assign is modelled
789 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
790 <td align="left"></td>
791 <td align="right"><div class="copyright-footer">Copyright © 2009-2017 Barend
792 Gehrels, Bruno Lalande, Mateusz Loskot, Adam Wulkiewicz, Oracle and/or its
794 Distributed under the Boost Software License, Version 1.0. (See accompanying
795 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>)
800 <div class="spirit-nav">
801 <a accesskey="p" href="clear.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="convex_hull.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>