Buffer (Analysis)
Summary
Creates buffer polygons around input features to a specified distance.
Illustration
![]() |
Usage
-
If buffering a projected feature class that has features covering a large region, or you are using a very large buffer distance, distortions in the projection can cause inaccurate buffers to be produced. You can completely avoid distortion when buffering by using a feature class that has a geographic coordinate system and specifying a Buffer Distance in linear units (meters, feet, and so forth, as opposed to angular units such as degrees). When this combination of inputs is used, the tool will generate true geodesic buffers that accurately represent distances on Earth's surface. Geodesic buffers may appear unusual on a flat map, but when displayed on a globe these buffers will look correct (you can use the ArcGlobe or ArcGIS Explorer applications to view geographic data on a three-dimensional globe). For more information, see How Buffer works.
Note:
You can change the coordinate system of a feature class using the Project tool, or you can set the Output Coordinate System geoprocessing environment before executing the Buffer tool, and this coordinate system will be used in creating buffers.
Improve the accuracy of buffers created with projected inputs by using a projection that minimizes distance distortion, such as an Equidistant Conic or an Azimuthal Equidistant projection, and is geographically appropriate for your input.
When buffering features in a projected coordinate system with output to a geodatabase feature class, the geometries created will often contain circular arc segments, especially when buffering points. If these buffers that contain circular arcs are re-projected to a different coordinate system, the location and size of the original buffers will be transformed, but the shape of the buffers will not change, causing the re-projected buffers to no longer accurately represent the area covered by the original buffer. If you wish to re-project buffers containing circular arcs, first use the Densify tool to convert circular arc segments to straight lines, then re-project the buffers.
-
The output feature class will have a field, BUFF_DIST, that contains the buffer distance used to buffer each feature, in the linear unit of the input features' coordinate system. If a Dissolve Type of ALL or LIST is used, the output will not have this field.
-
When buffering polygon features, negative buffer distances can be used to create buffers inside the polygon features. Using a negative buffer distance will reduce the polygons' boundaries by the distance specified.
Caution:
If the negative buffer distance is large enough to collapse the polygon to nothing, a null geometry will be generated. A warning message will be given, and any null geometry features will not be written to the output feature class.
-
If a field from the Input Features is used to obtain buffer distances, the field's values can be either a number (5) or a number with a valid linear unit (5 Kilometers). If a field value is simply a number, it is assumed that the distance is in the linear unit of the Input Features' spatial reference (unless the Input Features are in a geographic coordinate system, in which case, the value is assumed to be in meters). If the linear unit specified in the field values is invalid or not recognized, the linear unit of the input features' spatial reference will be used by default.
-
The Dissolve Field(s) parameter Add Field button is used only in ModelBuilder. In ModelBuilder, where the preceding tool has not been run or its derived data does not exist, the Dissolve Field(s) parameter may not be populated with field names. The Add Field button allows expected fields to be added to the Dissolve Field(s) list in order to complete the Buffer tool dialog box.
![License License](rsrc/license.png)
Side Type (line_side) options LEFT, RIGHT, and OUTSIDE_ONLY and the End Type (line_end_type) option FLAT are only available with an Advanced license.
Syntax
Parameter | Explanation | Data Type |
in_features |
The input point, line, or polygon features to be buffered. | Feature Layer |
out_feature_class |
The feature class containing the output buffers. | Feature Class |
buffer_distance_or_field |
The distance around the input features that will be buffered. Distances can be provided as either a value representing a linear distance or as a field from the input features that contains the distance to buffer each feature. If linear units are not specified or are entered as Unknown, the linear unit of the input features' spatial reference is used. When specifying a distance in scripting, if the desired linear unit has two words, like Decimal Degrees, combine the two words into one (for example, '20 DecimalDegrees'). | Linear unit ;Field |
line_side (Optional) |
The side(s) of the input features that will be buffered.
![]() This optional parameter is not available with a Basic or Standard license. | String |
line_end_type (Optional) |
The shape of the buffer at the end of line input features. This parameter is not valid for polygon input features.
![]() This optional parameter is not available with a Basic or Standard license. | String |
dissolve_option (Optional) |
Specifies the dissolve to be performed to remove buffer overlap.
| String |
dissolve_field [dissolve_field,...] (Optional) |
The list of field(s) from the input features on which to dissolve the output buffers. Any buffers sharing attribute values in the listed fields (carried over from the input features) are dissolved. | Field |
Code Sample
The following Python window script demonstrates how to use the Buffer tool.
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.Buffer_analysis("roads", "C:/output/majorrdsBuffered", "100 Feet", "FULL", "ROUND", "LIST", "Distance")
Find areas of suitable vegetation that exclude areas heavily impacted by major roads:
# Name: Buffer.py
# Description: Find areas of suitable vegetation which exclude areas heavily impacted by major roads
# import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data/Habitat_Analysis.gdb"
# Select suitable vegetation patches from all vegetation
veg = "vegtype"
suitableVeg = "C:/output/Output.gdb/suitable_vegetation"
whereClause = "HABITAT = 1"
arcpy.Select_analysis(veg, suitableVeg, whereClause)
# Buffer areas of impact around major roads
roads = "majorrds"
roadsBuffer = "C:/output/Output.gdb/buffer_output"
distanceField = "Distance"
sideType = "FULL"
endType = "ROUND"
dissolveType = "LIST"
dissolveField = "Distance"
arcpy.Buffer_analysis(roads, roadsBuffer, distanceField, sideType, endType, dissolveType, dissolveField)
# Erase areas of impact around major roads from the suitable vegetation patches
eraseOutput = "C:/output/Output.gdb/suitable_vegetation_minus_roads"
xyTol = "1 Meters"
arcpy.Erase_analysis(suitableVeg, roadsBuffer, eraseOutput, xyTol)