geos_390_docs/classgeos_1_1operation_1_1b...

776 lines
40 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>GEOS: geos::operation::buffer::BufferOp Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">GEOS
&#160;<span id="projectnumber">3.9.1dev</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacegeos.html">geos</a></li><li class="navelem"><a class="el" href="namespacegeos_1_1operation.html">operation</a></li><li class="navelem"><a class="el" href="namespacegeos_1_1operation_1_1buffer.html">buffer</a></li><li class="navelem"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html">BufferOp</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-static-methods">Static Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#pri-static-attribs">Static Private Attributes</a> &#124;
<a href="classgeos_1_1operation_1_1buffer_1_1BufferOp-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::operation::buffer::BufferOp Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Computes the buffer of a geometry, for both positive and negative buffer distances.
<a href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="BufferOp_8h_source.html">BufferOp.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for geos::operation::buffer::BufferOp:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="classgeos_1_1operation_1_1buffer_1_1BufferOp__coll__graph.svg" width="100%" height="539"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a6d215754e05eb9d04b9687db5f9b4637"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#a6d215754e05eb9d04b9687db5f9b4637a3dab8f3b3b9c9d389597710b380bbd50">CAP_ROUND</a> = BufferParameters::CAP_ROUND,
<a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#a6d215754e05eb9d04b9687db5f9b4637a49120ca8a988672bd4e07c410e60298d">CAP_BUTT</a> = BufferParameters::CAP_FLAT,
<a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#a6d215754e05eb9d04b9687db5f9b4637a8757a3afe464e96cf13526aba63530fa">CAP_SQUARE</a> = BufferParameters::CAP_SQUARE
}</td></tr>
<tr class="separator:a6d215754e05eb9d04b9687db5f9b4637"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ace333176e7988e78d32941397df0c4ec"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#ace333176e7988e78d32941397df0c4ec">BufferOp</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *g)</td></tr>
<tr class="memdesc:ace333176e7988e78d32941397df0c4ec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a buffer computation for the given geometry. <a href="#ace333176e7988e78d32941397df0c4ec">More...</a><br /></td></tr>
<tr class="separator:ace333176e7988e78d32941397df0c4ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac57e331af7062eac25d7e563af0d234a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#ac57e331af7062eac25d7e563af0d234a">BufferOp</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *g, const <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferParameters.html">BufferParameters</a> &amp;params)</td></tr>
<tr class="memdesc:ac57e331af7062eac25d7e563af0d234a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes a buffer computation for the given geometry with the given set of parameters. <a href="#ac57e331af7062eac25d7e563af0d234a">More...</a><br /></td></tr>
<tr class="separator:ac57e331af7062eac25d7e563af0d234a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa566f0c9ba6aabc903adb9898a196961"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#aa566f0c9ba6aabc903adb9898a196961">setEndCapStyle</a> (int nEndCapStyle)</td></tr>
<tr class="memdesc:aa566f0c9ba6aabc903adb9898a196961"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specifies the end cap style of the generated buffer. <a href="#aa566f0c9ba6aabc903adb9898a196961">More...</a><br /></td></tr>
<tr class="separator:aa566f0c9ba6aabc903adb9898a196961"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15d1764170db5d95abe50cff8fef747f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#a15d1764170db5d95abe50cff8fef747f">setQuadrantSegments</a> (int nQuadrantSegments)</td></tr>
<tr class="memdesc:a15d1764170db5d95abe50cff8fef747f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the number of segments used to approximate a angle fillet. <a href="#a15d1764170db5d95abe50cff8fef747f">More...</a><br /></td></tr>
<tr class="separator:a15d1764170db5d95abe50cff8fef747f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa8c47fc49faef0cafeb3865d8785f31"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#aaa8c47fc49faef0cafeb3865d8785f31">setSingleSided</a> (bool isSingleSided)</td></tr>
<tr class="memdesc:aaa8c47fc49faef0cafeb3865d8785f31"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets whether the computed buffer should be single-sided. <a href="#aaa8c47fc49faef0cafeb3865d8785f31">More...</a><br /></td></tr>
<tr class="separator:aaa8c47fc49faef0cafeb3865d8785f31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a286d0414ffe12a075f64e791b7c5d7fe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#a286d0414ffe12a075f64e791b7c5d7fe">getResultGeometry</a> (double nDistance)</td></tr>
<tr class="memdesc:a286d0414ffe12a075f64e791b7c5d7fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the buffer computed for a geometry for a given buffer distance. <a href="#a286d0414ffe12a075f64e791b7c5d7fe">More...</a><br /></td></tr>
<tr class="separator:a286d0414ffe12a075f64e791b7c5d7fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:ae3bd35a1c9e1f8ce49500cc44f06a5b3"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#ae3bd35a1c9e1f8ce49500cc44f06a5b3">bufferOp</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *g, double <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#aeacaa52189923c808e21bbc32881c382">distance</a>, int quadrantSegments=<a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferParameters.html#ab0a64ab1030d5dc576449dbf9ecde9e8">BufferParameters::DEFAULT_QUADRANT_SEGMENTS</a>, int endCapStyle=<a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferParameters.html#a4712bec3a5a2bb5c28ab43b3fe327950a2115b456f33264168ae298f31cd10e84">BufferParameters::CAP_ROUND</a>)</td></tr>
<tr class="memdesc:ae3bd35a1c9e1f8ce49500cc44f06a5b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the buffer for a geometry for a given buffer distance and accuracy of approximation. <a href="#ae3bd35a1c9e1f8ce49500cc44f06a5b3">More...</a><br /></td></tr>
<tr class="separator:ae3bd35a1c9e1f8ce49500cc44f06a5b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:ac58a35e30d5db537e85394715835370d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#ac58a35e30d5db537e85394715835370d">computeGeometry</a> ()</td></tr>
<tr class="separator:ac58a35e30d5db537e85394715835370d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04c29e8d2182ed5bbd6cf6a8f8d1c823"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#a04c29e8d2182ed5bbd6cf6a8f8d1c823">bufferOriginalPrecision</a> ()</td></tr>
<tr class="separator:a04c29e8d2182ed5bbd6cf6a8f8d1c823"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6353891d4ad6b0d341119bb98cc8fd9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#aa6353891d4ad6b0d341119bb98cc8fd9">bufferReducedPrecision</a> (int precisionDigits)</td></tr>
<tr class="separator:aa6353891d4ad6b0d341119bb98cc8fd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b591bb45d7d6e7738bec333979c7478"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#a8b591bb45d7d6e7738bec333979c7478">bufferReducedPrecision</a> ()</td></tr>
<tr class="separator:a8b591bb45d7d6e7738bec333979c7478"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5f001413a90f586855a5eeaf4a461f7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#aa5f001413a90f586855a5eeaf4a461f7">bufferFixedPrecision</a> (const <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a> &amp;fixedPM)</td></tr>
<tr class="separator:aa5f001413a90f586855a5eeaf4a461f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-methods"></a>
Static Private Member Functions</h2></td></tr>
<tr class="memitem:a5c3f28d454c9fbb52b4bee9b9ae6fa44"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#a5c3f28d454c9fbb52b4bee9b9ae6fa44">precisionScaleFactor</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *g, double <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#aeacaa52189923c808e21bbc32881c382">distance</a>, int maxPrecisionDigits)</td></tr>
<tr class="separator:a5c3f28d454c9fbb52b4bee9b9ae6fa44"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a13afb6ac65de32598898a4eb2d363bfa"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#a13afb6ac65de32598898a4eb2d363bfa">argGeom</a></td></tr>
<tr class="separator:a13afb6ac65de32598898a4eb2d363bfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a375d9d723af333f158cdf7379c92b6e3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1util_1_1TopologyException.html">util::TopologyException</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#a375d9d723af333f158cdf7379c92b6e3">saveException</a></td></tr>
<tr class="separator:a375d9d723af333f158cdf7379c92b6e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeacaa52189923c808e21bbc32881c382"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#aeacaa52189923c808e21bbc32881c382">distance</a></td></tr>
<tr class="separator:aeacaa52189923c808e21bbc32881c382"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7afe0aa1cff653493fc5fc41e8e23efc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferParameters.html">BufferParameters</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#a7afe0aa1cff653493fc5fc41e8e23efc">bufParams</a></td></tr>
<tr class="separator:a7afe0aa1cff653493fc5fc41e8e23efc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e02abf972b1184ae38305502f853ab9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#a9e02abf972b1184ae38305502f853ab9">resultGeometry</a></td></tr>
<tr class="separator:a9e02abf972b1184ae38305502f853ab9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-attribs"></a>
Static Private Attributes</h2></td></tr>
<tr class="memitem:a9e683b76f647a2db75ae084db085a621"><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferOp.html#a9e683b76f647a2db75ae084db085a621">MAX_PRECISION_DIGITS</a> = 12</td></tr>
<tr class="memdesc:a9e683b76f647a2db75ae084db085a621"><td class="mdescLeft">&#160;</td><td class="mdescRight">A number of digits of precision which leaves some computational "headroom" for floating point operations. <a href="#a9e683b76f647a2db75ae084db085a621">More...</a><br /></td></tr>
<tr class="separator:a9e683b76f647a2db75ae084db085a621"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Computes the buffer of a geometry, for both positive and negative buffer distances. </p>
<p>In GIS, the positive (or negative) buffer of a geometry is defined as the Minkowski sum (or difference) of the geometry with a circle with radius equal to the absolute value of the buffer distance. In the CAD/CAM world buffers are known as <em>offset curves</em>. In morphological analysis the operation of positive and negative buffering is referred to as <em>erosion</em> and <em>dilation</em>.</p>
<p>The buffer operation always returns a polygonal result. The negative or zero-distance buffer of lines and points is always an empty Polygon.</p>
<p>Since true buffer curves may contain circular arcs, computed buffer polygons can only be approximations to the true geometry. The user can control the accuracy of the curve approximation by specifying the number of linear segments with which to approximate a curve.</p>
<p>The end cap style of a linear buffer may be specified. The following end cap styles are supported:</p><ul>
<li>CAP_ROUND - the usual round end caps</li>
<li>CAP_BUTT - end caps are truncated flat at the line ends</li>
<li>CAP_SQUARE - end caps are squared off at the buffer distance beyond the line ends </li>
</ul>
<p>Definition at line <a class="el" href="BufferOp_8h_source.html#l00078">78</a> of file <a class="el" href="BufferOp_8h_source.html">BufferOp.h</a>.</p>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a class="anchor" id="a6d215754e05eb9d04b9687db5f9b4637"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">anonymous enum</td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a6d215754e05eb9d04b9687db5f9b4637a3dab8f3b3b9c9d389597710b380bbd50"></a>CAP_ROUND&#160;</td><td class="fielddoc">
<p>Specifies a round line buffer end cap style. </p><dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000005">Deprecated:</a></b></dt><dd>use <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferParameters.html" title="Contains the parameters which describe how a buffer should be constructed. ">BufferParameters</a> </dd></dl>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a6d215754e05eb9d04b9687db5f9b4637a49120ca8a988672bd4e07c410e60298d"></a>CAP_BUTT&#160;</td><td class="fielddoc">
<p>Specifies a butt (or flat) line buffer end cap style. </p><dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000006">Deprecated:</a></b></dt><dd>use <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferParameters.html" title="Contains the parameters which describe how a buffer should be constructed. ">BufferParameters</a> </dd></dl>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a6d215754e05eb9d04b9687db5f9b4637a8757a3afe464e96cf13526aba63530fa"></a>CAP_SQUARE&#160;</td><td class="fielddoc">
<p>Specifies a square line buffer end cap style. </p><dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000007">Deprecated:</a></b></dt><dd>use <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferParameters.html" title="Contains the parameters which describe how a buffer should be constructed. ">BufferParameters</a> </dd></dl>
</td></tr>
</table>
<p>Definition at line <a class="el" href="BufferOp_8h_source.html#l00134">134</a> of file <a class="el" href="BufferOp_8h_source.html">BufferOp.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ace333176e7988e78d32941397df0c4ec"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::operation::buffer::BufferOp::BufferOp </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</td>
<td class="paramname"><em>g</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Initializes a buffer computation for the given geometry. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">g</td><td>the geometry to buffer </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="BufferOp_8h_source.html#l00171">171</a> of file <a class="el" href="BufferOp_8h_source.html">BufferOp.h</a>.</p>
</div>
</div>
<a class="anchor" id="ac57e331af7062eac25d7e563af0d234a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::operation::buffer::BufferOp::BufferOp </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</td>
<td class="paramname"><em>g</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferParameters.html">BufferParameters</a> &amp;&#160;</td>
<td class="paramname"><em>params</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Initializes a buffer computation for the given geometry with the given set of parameters. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">g</td><td>the geometry to buffer </td></tr>
<tr><td class="paramname">params</td><td>the buffer parameters to use. This class will copy it to private memory. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="BufferOp_8h_source.html#l00187">187</a> of file <a class="el" href="BufferOp_8h_source.html">BufferOp.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="aa5f001413a90f586855a5eeaf4a461f7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::operation::buffer::BufferOp::bufferFixedPrecision </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a> &amp;&#160;</td>
<td class="paramname"><em>fixedPM</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ae3bd35a1c9e1f8ce49500cc44f06a5b3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a>* geos::operation::buffer::BufferOp::bufferOp </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</td>
<td class="paramname"><em>g</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>distance</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>quadrantSegments</em> = <code><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferParameters.html#ab0a64ab1030d5dc576449dbf9ecde9e8">BufferParameters::DEFAULT_QUADRANT_SEGMENTS</a></code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>endCapStyle</em> = <code><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferParameters.html#a4712bec3a5a2bb5c28ab43b3fe327950a2115b456f33264168ae298f31cd10e84">BufferParameters::CAP_ROUND</a></code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes the buffer for a geometry for a given buffer distance and accuracy of approximation. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">g</td><td>the geometry to buffer </td></tr>
<tr><td class="paramname">distance</td><td>the buffer distance </td></tr>
<tr><td class="paramname">quadrantSegments</td><td>the number of segments used to approximate a quarter circle </td></tr>
<tr><td class="paramname">endCapStyle</td><td>line buffer end cap style (default: <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferParameters.html#a4712bec3a5a2bb5c28ab43b3fe327950a2115b456f33264168ae298f31cd10e84" title="Specifies a round line buffer end cap style. ">BufferParameters::CAP_ROUND</a>) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the buffer of the input geometry </dd></dl>
</div>
</div>
<a class="anchor" id="a04c29e8d2182ed5bbd6cf6a8f8d1c823"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::operation::buffer::BufferOp::bufferOriginalPrecision </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="aa6353891d4ad6b0d341119bb98cc8fd9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::operation::buffer::BufferOp::bufferReducedPrecision </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>precisionDigits</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a8b591bb45d7d6e7738bec333979c7478"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::operation::buffer::BufferOp::bufferReducedPrecision </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ac58a35e30d5db537e85394715835370d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::operation::buffer::BufferOp::computeGeometry </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a286d0414ffe12a075f64e791b7c5d7fe"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a>* geos::operation::buffer::BufferOp::getResultGeometry </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>nDistance</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the buffer computed for a geometry for a given buffer distance. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">nDistance</td><td>the buffer distance </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the buffer of the input geometry </dd></dl>
</div>
</div>
<a class="anchor" id="a5c3f28d454c9fbb52b4bee9b9ae6fa44"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static double geos::operation::buffer::BufferOp::precisionScaleFactor </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</td>
<td class="paramname"><em>g</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>distance</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>maxPrecisionDigits</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Compute a reasonable scale factor to limit the precision of a given combination of Geometry and buffer distance. The scale factor is based on a heuristic.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">g</td><td>the Geometry being buffered</td></tr>
<tr><td class="paramname">distance</td><td>the buffer distance</td></tr>
<tr><td class="paramname">maxPrecisionDigits</td><td>the mzx # of digits that should be allowed by the precision determined by the computed scale factor</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a scale factor that allows a reasonable amount of precision for the buffer computation </dd></dl>
</div>
</div>
<a class="anchor" id="aa566f0c9ba6aabc903adb9898a196961"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::operation::buffer::BufferOp::setEndCapStyle </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nEndCapStyle</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Specifies the end cap style of the generated buffer. </p>
<p>The styles supported are CAP_ROUND, CAP_BUTT, and CAP_SQUARE. The default is CAP_ROUND.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">nEndCapStyle</td><td>the end cap style to specify </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="BufferOp_8h_source.html#l00253">253</a> of file <a class="el" href="BufferOp_8h_source.html">BufferOp.h</a>.</p>
</div>
</div>
<a class="anchor" id="a15d1764170db5d95abe50cff8fef747f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::operation::buffer::BufferOp::setQuadrantSegments </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>nQuadrantSegments</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the number of segments used to approximate a angle fillet. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">nQuadrantSegments</td><td>the number of segments in a fillet for a quadrant </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="BufferOp_8h_source.html#l00247">247</a> of file <a class="el" href="BufferOp_8h_source.html">BufferOp.h</a>.</p>
</div>
</div>
<a class="anchor" id="aaa8c47fc49faef0cafeb3865d8785f31"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::operation::buffer::BufferOp::setSingleSided </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>isSingleSided</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets whether the computed buffer should be single-sided. </p>
<p>A single-sided buffer is constructed on only one side of each input line.</p>
<p>The side used is determined by the sign of the buffer distance:</p><ul>
<li>a positive distance indicates the left-hand side</li>
<li>a negative distance indicates the right-hand side</li>
</ul>
<p>The single-sided buffer of point geometries is the same as the regular buffer.</p>
<p>The End Cap Style for single-sided buffers is always ignored, and forced to the equivalent of <code>CAP_FLAT</code>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">isSingleSided</td><td><code>true</code> if a single-sided buffer should be constructed </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="BufferOp_8h_source.html#l00259">259</a> of file <a class="el" href="BufferOp_8h_source.html">BufferOp.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a13afb6ac65de32598898a4eb2d363bfa"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a>* geos::operation::buffer::BufferOp::argGeom</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="BufferOp_8h_source.html#l00110">110</a> of file <a class="el" href="BufferOp_8h_source.html">BufferOp.h</a>.</p>
</div>
</div>
<a class="anchor" id="a7afe0aa1cff653493fc5fc41e8e23efc"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferParameters.html">BufferParameters</a> geos::operation::buffer::BufferOp::bufParams</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="BufferOp_8h_source.html#l00118">118</a> of file <a class="el" href="BufferOp_8h_source.html">BufferOp.h</a>.</p>
</div>
</div>
<a class="anchor" id="aeacaa52189923c808e21bbc32881c382"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double geos::operation::buffer::BufferOp::distance</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="BufferOp_8h_source.html#l00114">114</a> of file <a class="el" href="BufferOp_8h_source.html">BufferOp.h</a>.</p>
</div>
</div>
<a class="anchor" id="a9e683b76f647a2db75ae084db085a621"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const int geos::operation::buffer::BufferOp::MAX_PRECISION_DIGITS = 12</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>A number of digits of precision which leaves some computational "headroom" for floating point operations. </p>
<p>This value should be less than the decimal precision of double-precision values (16). </p>
<p>Definition at line <a class="el" href="BufferOp_8h_source.html#l00089">89</a> of file <a class="el" href="BufferOp_8h_source.html">BufferOp.h</a>.</p>
</div>
</div>
<a class="anchor" id="a9e02abf972b1184ae38305502f853ab9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a>* geos::operation::buffer::BufferOp::resultGeometry</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="BufferOp_8h_source.html#l00120">120</a> of file <a class="el" href="BufferOp_8h_source.html">BufferOp.h</a>.</p>
</div>
</div>
<a class="anchor" id="a375d9d723af333f158cdf7379c92b6e3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1util_1_1TopologyException.html">util::TopologyException</a> geos::operation::buffer::BufferOp::saveException</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="BufferOp_8h_source.html#l00112">112</a> of file <a class="el" href="BufferOp_8h_source.html">BufferOp.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="BufferOp_8h_source.html">BufferOp.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>