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