Buffer (Coverage)
Summary
Creates buffer polygons around specified input coverage features.
Illustration
Usage
-
Negative and positive distances can be used for buffer distance with the POLY option. It is possible to shrink some polygons and grow others in the same coverage when the buffer item contains positive and negative numbers.
-
The ROUND, FLAT, FULL, LEFT, and RIGHT options apply only to line data.
-
Small sliver polygons may be created by the Buffer tool. They can cause problems when coded as nonbuffer areas inside buffer zones. Remove them with Eliminate.
-
Features will not be buffered if their buffer distance is zero. If you do not want to buffer a feature in the input coverage, give it a buffer distance value of zero in a buffer item or of DIST in a buffer table.
-
When performing a buffer on a coverage that contains island polygons, all the polygons with a buffer distance greater than zero get buffered. However, since the island buffer is entirely within its surrounding polygon buffer, it is dissolved into the surrounding polygon during Buffer's dissolve phase and the island buffers will not be visible.
-
Nodes can be buffered on coverages with or without an NAT. If there is no NAT, the nodes in the AAT must be numbered (FNODE# and TNODE# must be greater than zero). Run Renumber Nodes if the node numbers are zero.
-
The LEFT and RIGHT options generate buffers at the left or right of a line. Caution must be exercised in interpreting the "left" or "right" of a line. A single line segment defines two half planes, cutting a rectangular buffer into two clearly defined left and right sections. When connecting line segments, points that are on the left side of one segment may be on the right side of another connecting segment. This ambiguity can be prevented by a concept of "not crossing over the line".
-
The LEFT and RIGHT options use the topological left and right of the line, so line topology must be present for the use of these options. To access the Line buffer styles, use Build on the input coverage with LINE and NODE.
-
The BUFFER function works in Euclidean space and uses a two-dimensional algorithm. A buffer will be the same width no matter what the coordinate system is. It will not reflect the curvature or the shape of the earth. For the best results, generate the buffer in a map projection that minimizes distortion in the area of interest.
-
For buffers around lines, the fuzzy tolerance for the output coverage may not be the same as the fuzzy tolerance for the input coverage. The output tolerance may be reset as a function of the buffer distance. This may happen for larger buffer distances and reflects the progressively courser approximation of a circle with a fixed number of straight line segments. If this effect is to be avoided, a buffer can be "grown" in a number of steps. First, run Buffer with the LINE option using a small buffer distance, then run a number of buffers on this using the POLY option until you achieve the desired resultant buffer distance. Fuzzy tolerance changes only for buffers around lines; it does not change for buffers around polygons.
-
The coordinate precision of the output coverage is determined by the current processing rule as set by the Precision for Derived Coverages environment setting. If the processing rule has not been established during the current session, then the processing rule will be HIGHEST. This means that Buffer will create an output coverage in the same precision as the input coverage.
-
On both single-precision and double-precision coverages, Buffer calculates a minimum tolerance based on the mathematical precision of the coverage (based on the width of the BND and the number of decimal places). If the calculated minimum tolerance is greater than the entered fuzzy tolerance, the calculated minimum tolerance is used. Learn more about how the default fuzzy tolerance is calculated
-
The projection file (PRJ) will be copied to the output coverage.
Syntax
Parameter | Explanation | Data Type |
in_cover |
The coverage containing features to be buffered. | Coverage |
out_cover |
The polygon buffer coverage to be created. | Coverage |
feature_type (Optional) |
The feature class to be buffered:
| String |
buffer_item (Optional) |
An item in the feature attribute table of input coverage whose value is used as the feature's buffer distance. If a buffer table is used, the buffer item functions as a lookup item in the buffer table. | String |
buffer_table (Optional) |
An INFO lookup table that lists a buffer distance for each buffer item. A buffer table can be specified only if the buffer item is specified. The buffer table contains at least two items:
| ArcInfo Table |
buffer_distance (Optional) |
The distance used to create buffer zones around input coverage features when buffer item and buffer table are not specified. The default buffer distance is 0.125 coverage units. This default buffer distance will be applied whenever a value for this parameter is not specified. The smallest buffer distance that can be computed is 0.00000005 coverage units. Specifying a buffer distance below this threshold will result in an empty output coverage. For polygon features, if a negative buffer distance is used, buffers will be generated on the insides of polygons. | Double |
fuzzy_tolerance (Optional) |
The minimum distance between coordinates in the out_cover. By default, the minimum fuzzy tolerance value from the in_cover is used. | Double |
buffer_shape (Optional) |
For lines, the shape of the buffer at the line endpoints.
| String |
buffer_side (Optional) |
For lines, the topological side on which the buffer may be generated.
| String |
Code Sample
The following stand-alone script demonstrates how to create a buffer around a road coverage.
# Name: Buffer_Example.py # Description: Creates a buffer around a road coverage. # Requirements: ArcInfo Workstation # Author: ESRI # Import system modules import arcpy from arcpy import env # Set environment settings env.workspace = "C:/data" # Set local variables inCover = "road" outCover = "C:/output/roadbuf" featureType = "LINE" bufferDistance = 200 bufferShape = "ROUND" bufferSide = "FULL" # Execute Buffer arcpy.Buffer_arc(inCover, outCover, featureType, "", "", bufferDistance, "", bufferShape, bufferSide)