1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 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 1. 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="idm45635707992000"></a> 32Calculates 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"><</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">></span> 52<span class="identifier">area_result</span><span class="special"><</span><span class="identifier">Geometry</span><span class="special">,</span> <span class="identifier">Strategy</span><span class="special">>::</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">&</span> <span class="identifier">geometry</span><span class="special">,</span> <span class="identifier">Strategy</span> <span class="keyword">const</span> <span class="special">&</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 & 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 & 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"><</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> 151 </p> 152<p> 153 Or 154 </p> 155<p> 156 <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">area</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></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.available_strategies"></a></span><a class="link" href="area_2_with_strategy.html#geometry.reference.algorithms.area.area_2_with_strategy.available_strategies">Available 418 Strategies</a> 419 </h6> 420<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "> 421<li class="listitem"> 422 <a class="link" href="../../strategies/strategy_area_cartesian.html" title="strategy::area::cartesian">Cartesian</a> 423 </li> 424<li class="listitem"> 425 <a class="link" href="../../strategies/strategy_area_spherical.html" title="strategy::area::spherical">Spherical</a> 426 </li> 427<li class="listitem"> 428 <a class="link" href="../../strategies/strategy_area_geographic.html" title="strategy::area::geographic">Geographic</a> 429 </li> 430</ul></div> 431<h6> 432<a name="geometry.reference.algorithms.area.area_2_with_strategy.h10"></a> 433 <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> 434 </h6> 435<p> 436 Calculate the area of a polygon 437 </p> 438<p> 439</p> 440<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span> 441 442<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> 443<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> 444<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> 445 446<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> 447 448<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> 449<span class="special">{</span> 450 <span class="comment">// Create spherical polygon</span> 451 <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"><</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"><</span><span class="keyword">double</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"><</span><span class="identifier">bg</span><span class="special">::</span><span class="identifier">degree</span><span class="special">></span> <span class="special">></span> <span class="special">></span> <span class="identifier">sph_poly</span><span class="special">;</span> 452 <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 1,1 0,0 0))"</span><span class="special">,</span> <span class="identifier">sph_poly</span><span class="special">);</span> 453 454 <span class="comment">// Create spherical strategy with mean Earth radius in meters</span> 455 <span class="identifier">bg</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">area</span><span class="special">::</span><span class="identifier">spherical</span><span class="special"><></span> <span class="identifier">sph_strategy</span><span class="special">(</span><span class="number">6371008.8</span><span class="special">);</span> 456 457 <span class="comment">// Calculate the area of a spherical polygon</span> 458 <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">sph_poly</span><span class="special">,</span> <span class="identifier">sph_strategy</span><span class="special">);</span> 459 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Area: "</span> <span class="special"><<</span> <span class="identifier">area</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> 460 461 <span class="comment">// Create geographic polygon</span> 462 <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"><</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"><</span><span class="keyword">double</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">geographic</span><span class="special"><</span><span class="identifier">bg</span><span class="special">::</span><span class="identifier">degree</span><span class="special">></span> <span class="special">></span> <span class="special">></span> <span class="identifier">geo_poly</span><span class="special">;</span> 463 <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 1,1 0,0 0))"</span><span class="special">,</span> <span class="identifier">geo_poly</span><span class="special">);</span> 464 465 <span class="comment">// Create geographic strategy with WGS84 spheroid</span> 466 <span class="identifier">bg</span><span class="special">::</span><span class="identifier">srs</span><span class="special">::</span><span class="identifier">spheroid</span><span class="special"><</span><span class="keyword">double</span><span class="special">></span> <span class="identifier">spheroid</span><span class="special">(</span><span class="number">6378137.0</span><span class="special">,</span> <span class="number">6356752.3142451793</span><span class="special">);</span> 467 <span class="identifier">bg</span><span class="special">::</span><span class="identifier">strategy</span><span class="special">::</span><span class="identifier">area</span><span class="special">::</span><span class="identifier">geographic</span><span class="special"><></span> <span class="identifier">geo_strategy</span><span class="special">(</span><span class="identifier">spheroid</span><span class="special">);</span> 468 469 <span class="comment">// Calculate the area of a geographic polygon</span> 470 <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">geo_poly</span><span class="special">,</span> <span class="identifier">geo_strategy</span><span class="special">);</span> 471 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="string">"Area: "</span> <span class="special"><<</span> <span class="identifier">area</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> 472 473 <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span> 474<span class="special">}</span> 475</pre> 476<p> 477 </p> 478<div class="calloutlist"><table border="0" summary="Callout list"><tr> 479<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> 480<td valign="top" align="left"><p> 481 Convenient namespace alias 482 </p></td> 483</tr></table></div> 484<p> 485 Output: 486 </p> 487<pre class="programlisting">Area: 6.18249e+09 488Area: 6.15479e+09 489</pre> 490</div> 491<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 492<td align="left"></td> 493<td align="right"><div class="copyright-footer">Copyright © 2009-2019 Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam 494 Wulkiewicz, Oracle and/or its affiliates<p> 495 Distributed under the Boost Software License, Version 1.0. (See accompanying 496 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>) 497 </p> 498</div></td> 499</tr></table> 500<hr> 501<div class="spirit-nav"> 502<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> 503</div> 504</body> 505</html> 506