Imported Upstream version 1.64.0
[platform/upstream/boost.git] / libs / geometry / doc / html / geometry / reference / algorithms / area / area_2_with_strategy.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>area (with strategy)</title>
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&#160;1.&#160;Geometry">
8 <link rel="up" href="../area.html" title="area">
9 <link rel="prev" href="area_1.html" title="area">
10 <link rel="next" href="../assign.html" title="assign">
11 </head>
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>
20 </tr></table>
21 <hr>
22 <div class="spirit-nav">
23 <a accesskey="p" href="area_1.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../area.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="../assign.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
24 </div>
25 <div class="section">
26 <div class="titlepage"><div><div><h5 class="title">
27 <a name="geometry.reference.algorithms.area.area_2_with_strategy"></a><a class="link" href="area_2_with_strategy.html" title="area (with strategy)">area
28           (with strategy)</a>
29 </h5></div></div></div>
30 <p>
31             <a class="indexterm" name="idp87958352"></a>
32 Calculates the area of a geometry using the specified strategy.
33           </p>
34 <h6>
35 <a name="geometry.reference.algorithms.area.area_2_with_strategy.h0"></a>
36             <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.description"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.description">Description</a>
37           </h6>
38 <p>
39             The free function area calculates the area of a geometry using the specified
40             strategy. Reasons to specify a strategy include: use another coordinate
41             system for calculations; construct the strategy beforehand (e.g. with
42             the radius of the Earth); select a strategy when there are more than
43             one available for a calculation.
44           </p>
45 <h6>
46 <a name="geometry.reference.algorithms.area.area_2_with_strategy.h1"></a>
47             <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.synopsis"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.synopsis">Synopsis</a>
48           </h6>
49 <p>
50 </p>
51 <pre class="programlisting"><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Geometry</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Strategy</span><span class="special">&gt;</span>
52 <span class="identifier">Strategy</span><span class="special">::</span><span class="identifier">return_type</span> <span class="identifier">area</span><span class="special">(</span><span class="identifier">Geometry</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">Strategy</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">strategy</span><span class="special">)</span></pre>
53 <p>
54           </p>
55 <h6>
56 <a name="geometry.reference.algorithms.area.area_2_with_strategy.h2"></a>
57             <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.parameters"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.parameters">Parameters</a>
58           </h6>
59 <div class="informaltable"><table class="table">
60 <colgroup>
61 <col>
62 <col>
63 <col>
64 <col>
65 </colgroup>
66 <thead><tr>
67 <th>
68                     <p>
69                       Type
70                     </p>
71                   </th>
72 <th>
73                     <p>
74                       Concept
75                     </p>
76                   </th>
77 <th>
78                     <p>
79                       Name
80                     </p>
81                   </th>
82 <th>
83                     <p>
84                       Description
85                     </p>
86                   </th>
87 </tr></thead>
88 <tbody>
89 <tr>
90 <td>
91                     <p>
92                       Geometry const &amp;
93                     </p>
94                   </td>
95 <td>
96                     <p>
97                       Any type fulfilling a Geometry Concept
98                     </p>
99                   </td>
100 <td>
101                     <p>
102                       geometry
103                     </p>
104                   </td>
105 <td>
106                     <p>
107                       A model of the specified concept
108                     </p>
109                   </td>
110 </tr>
111 <tr>
112 <td>
113                     <p>
114                       Strategy const &amp;
115                     </p>
116                   </td>
117 <td>
118                     <p>
119                       Any type fulfilling a Area Strategy Concept
120                     </p>
121                   </td>
122 <td>
123                     <p>
124                       strategy
125                     </p>
126                   </td>
127 <td>
128                     <p>
129                       The strategy which will be used for area calculations
130                     </p>
131                   </td>
132 </tr>
133 </tbody>
134 </table></div>
135 <h6>
136 <a name="geometry.reference.algorithms.area.area_2_with_strategy.h3"></a>
137             <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.returns"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.returns">Returns</a>
138           </h6>
139 <p>
140             The calculated area
141           </p>
142 <h6>
143 <a name="geometry.reference.algorithms.area.area_2_with_strategy.h4"></a>
144             <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.header"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.header">Header</a>
145           </h6>
146 <p>
147             Either
148           </p>
149 <p>
150             <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</span></code>
151           </p>
152 <p>
153             Or
154           </p>
155 <p>
156             <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</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">area</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
157           </p>
158 <h6>
159 <a name="geometry.reference.algorithms.area.area_2_with_strategy.h5"></a>
160             <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.conformance"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.conformance">Conformance</a>
161           </h6>
162 <p>
163             The function area implements function Area from the <a href="http://www.opengeospatial.org/standards/sfa" target="_top">OGC
164             Simple Feature Specification</a>.
165           </p>
166 <h6>
167 <a name="geometry.reference.algorithms.area.area_2_with_strategy.h6"></a>
168             <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.behavior"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.behavior">Behavior</a>
169           </h6>
170 <div class="informaltable"><table class="table">
171 <colgroup>
172 <col>
173 <col>
174 </colgroup>
175 <thead><tr>
176 <th>
177                     <p>
178                       Case
179                     </p>
180                   </th>
181 <th>
182                     <p>
183                       Behavior
184                     </p>
185                   </th>
186 </tr></thead>
187 <tbody>
188 <tr>
189 <td>
190                     <p>
191                       pointlike (e.g. point)
192                     </p>
193                   </td>
194 <td>
195                     <p>
196                       Returns 0
197                     </p>
198                   </td>
199 </tr>
200 <tr>
201 <td>
202                     <p>
203                       linear (e.g. linestring)
204                     </p>
205                   </td>
206 <td>
207                     <p>
208                       Returns 0
209                     </p>
210                   </td>
211 </tr>
212 <tr>
213 <td>
214                     <p>
215                       areal (e.g. polygon)
216                     </p>
217                   </td>
218 <td>
219                     <p>
220                       Returns the area
221                     </p>
222                   </td>
223 </tr>
224 <tr>
225 <td>
226                     <p>
227                       Cartesian
228                     </p>
229                   </td>
230 <td>
231                     <p>
232                       Returns the area in the same units as the input coordinates
233                     </p>
234                   </td>
235 </tr>
236 <tr>
237 <td>
238                     <p>
239                       Spherical
240                     </p>
241                   </td>
242 <td>
243                     <p>
244                       Returns the area on a unit sphere (or another sphere, if specified
245                       as such in the constructor of the strategy)
246                     </p>
247                   </td>
248 </tr>
249 <tr>
250 <td>
251                     <p>
252                       Reversed polygon (coordinates not according their orientiation)
253                     </p>
254                   </td>
255 <td>
256                     <p>
257                       Returns the negative area
258                     </p>
259                   </td>
260 </tr>
261 </tbody>
262 </table></div>
263 <h6>
264 <a name="geometry.reference.algorithms.area.area_2_with_strategy.h7"></a>
265             <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.supported_geometries"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.supported_geometries">Supported
266             geometries</a>
267           </h6>
268 <div class="informaltable"><table class="table">
269 <colgroup>
270 <col>
271 <col>
272 </colgroup>
273 <thead><tr>
274 <th>
275                     <p>
276                       Geometry
277                     </p>
278                   </th>
279 <th>
280                     <p>
281                       Status
282                     </p>
283                   </th>
284 </tr></thead>
285 <tbody>
286 <tr>
287 <td>
288                     <p>
289                       Point
290                     </p>
291                   </td>
292 <td>
293                     <p>
294                       <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
295                     </p>
296                   </td>
297 </tr>
298 <tr>
299 <td>
300                     <p>
301                       Segment
302                     </p>
303                   </td>
304 <td>
305                     <p>
306                       <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
307                     </p>
308                   </td>
309 </tr>
310 <tr>
311 <td>
312                     <p>
313                       Box
314                     </p>
315                   </td>
316 <td>
317                     <p>
318                       <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
319                     </p>
320                   </td>
321 </tr>
322 <tr>
323 <td>
324                     <p>
325                       Linestring
326                     </p>
327                   </td>
328 <td>
329                     <p>
330                       <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
331                     </p>
332                   </td>
333 </tr>
334 <tr>
335 <td>
336                     <p>
337                       Ring
338                     </p>
339                   </td>
340 <td>
341                     <p>
342                       <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
343                     </p>
344                   </td>
345 </tr>
346 <tr>
347 <td>
348                     <p>
349                       Polygon
350                     </p>
351                   </td>
352 <td>
353                     <p>
354                       <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
355                     </p>
356                   </td>
357 </tr>
358 <tr>
359 <td>
360                     <p>
361                       MultiPoint
362                     </p>
363                   </td>
364 <td>
365                     <p>
366                       <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
367                     </p>
368                   </td>
369 </tr>
370 <tr>
371 <td>
372                     <p>
373                       MultiLinestring
374                     </p>
375                   </td>
376 <td>
377                     <p>
378                       <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
379                     </p>
380                   </td>
381 </tr>
382 <tr>
383 <td>
384                     <p>
385                       MultiPolygon
386                     </p>
387                   </td>
388 <td>
389                     <p>
390                       <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
391                     </p>
392                   </td>
393 </tr>
394 <tr>
395 <td>
396                     <p>
397                       Variant
398                     </p>
399                   </td>
400 <td>
401                     <p>
402                       <span class="inlinemediaobject"><img src="../../../../img/ok.png" alt="ok"></span>
403                     </p>
404                   </td>
405 </tr>
406 </tbody>
407 </table></div>
408 <h6>
409 <a name="geometry.reference.algorithms.area.area_2_with_strategy.h8"></a>
410             <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.complexity"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.complexity">Complexity</a>
411           </h6>
412 <p>
413             Linear
414           </p>
415 <h6>
416 <a name="geometry.reference.algorithms.area.area_2_with_strategy.h9"></a>
417             <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.example"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.example">Example</a>
418           </h6>
419 <p>
420             Calculate the area of a polygon
421           </p>
422 <p>
423 </p>
424 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
425
426 <span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</span>
427 <span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</span>
428 <span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</span>
429
430 <span class="keyword">namespace</span> <span class="identifier">bg</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">geometry</span><span class="special">;</span> <a class="co" name="geometry.reference.algorithms.area.area_2_with_strategy.c0" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.c1"><img src="../../../../../../../../doc/src/images/callouts/1.png" alt="1" border="0"></a>
431
432 <span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
433 <span class="special">{</span>
434     <span class="comment">// Calculate the area of a cartesian polygon</span>
435     <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">bg</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">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">poly</span><span class="special">;</span>
436     <span class="identifier">bg</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"POLYGON((0 0,0 7,4 2,2 0,0 0))"</span><span class="special">,</span> <span class="identifier">poly</span><span class="special">);</span>
437     <span class="keyword">double</span> <span class="identifier">area</span> <span class="special">=</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">area</span><span class="special">(</span><span class="identifier">poly</span><span class="special">);</span>
438     <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Area: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">area</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
439
440     <span class="comment">// Calculate the area of a spherical polygon (for latitude: 0 at equator)</span>
441     <span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">polygon</span><span class="special">&lt;</span><span class="identifier">bg</span><span class="special">::</span><span class="identifier">model</span><span class="special">::</span><span class="identifier">point</span><span class="special">&lt;</span><span class="keyword">float</span><span class="special">,</span> <span class="number">2</span><span class="special">,</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">cs</span><span class="special">::</span><span class="identifier">spherical_equatorial</span><span class="special">&lt;</span><span class="identifier">bg</span><span class="special">::</span><span class="identifier">degree</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">sph_poly</span><span class="special">;</span>
442     <span class="identifier">bg</span><span class="special">::</span><span class="identifier">read_wkt</span><span class="special">(</span><span class="string">"POLYGON((0 0,0 45,45 0,0 0))"</span><span class="special">,</span> <span class="identifier">sph_poly</span><span class="special">);</span>
443     <span class="identifier">area</span> <span class="special">=</span> <span class="identifier">bg</span><span class="special">::</span><span class="identifier">area</span><span class="special">(</span><span class="identifier">sph_poly</span><span class="special">);</span>
444     <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Area: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">area</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
445
446     <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
447 <span class="special">}</span>
448 </pre>
449 <p>
450           </p>
451 <div class="calloutlist"><table border="0" summary="Callout list"><tr>
452 <td width="5%" valign="top" align="left"><p><a name="geometry.reference.algorithms.area.area_2_with_strategy.c1"></a><a href="#geometry.reference.algorithms.area.area_2_with_strategy.c0"><img src="../../../../../../../../doc/src/images/callouts/1.png" alt="1" border="0"></a> </p></td>
453 <td valign="top" align="left"><p>
454                 Convenient namespace alias
455               </p></td>
456 </tr></table></div>
457 <p>
458             Output:
459           </p>
460 <pre class="programlisting">Area: 16
461 Area: 0.339837
462 </pre>
463 <h6>
464 <a name="geometry.reference.algorithms.area.area_2_with_strategy.h10"></a>
465             <span class="phrase"><a name="geometry.reference.algorithms.area.area_2_with_strategy.available_strategies"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.available_strategies">Available
466             Strategies</a>
467           </h6>
468 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
469 <li class="listitem">
470                 <a class="link" href="../../strategies/strategy_area_surveyor.html" title="strategy::area::surveyor">Surveyor
471                 (cartesian)</a>
472               </li>
473 <li class="listitem">
474                 <a class="link" href="../../strategies/strategy_area_spherical.html" title="strategy::area::spherical">Spherical</a>
475               </li>
476 </ul></div>
477 </div>
478 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
479 <td align="left"></td>
480 <td align="right"><div class="copyright-footer">Copyright &#169; 2009-2017 Barend
481       Gehrels, Bruno Lalande, Mateusz Loskot, Adam Wulkiewicz, Oracle and/or its
482       affiliates<p>
483         Distributed under the Boost Software License, Version 1.0. (See accompanying
484         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>)
485       </p>
486 </div></td>
487 </tr></table>
488 <hr>
489 <div class="spirit-nav">
490 <a accesskey="p" href="area_1.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../area.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="../assign.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
491 </div>
492 </body>
493 </html>