How Buffer (Analysis) works
How buffers are created
The buffer routine traverses each of the input feature's vertices and creates buffer offsets. Output buffer features are created from those offsets.
Creating offsets around a line
Input line feature
Offsets created around the input line feature
Buffer derived from the offsets
Description of buffer distance
The buffer distance parameter can be entered as a fixed value or as a field containing numeric values.
Example 1: Fixed distance
The following shows the buffer of a line feature class using a distance of 20, an end type of FLAT, a side type of FULL, and a dissolve type of ALL.
Because the buffer distance is a constant, all features are buffered to the same width.
Example 2: Distance from field
This example illustrates the buffer of a line feature class using a numeric field with values of 10, 20, and 30 for distance, an end type of FLAT, a side type of FULL, and a dissolve type of ALL.
Because the buffer distances are dependent on the field values, various buffer widths can be applied in the same operation.
Euclidean and Geodesic buffering
An important feature of the Buffer tool is the ability to generate geodesic buffers. Geodesic buffers are those that account for the actual shape of the earth (an ellipsoid, or more properly, a geoid) in the calculation of the buffers; distances are measured between two points on a globe. Another kind of buffers, Euclidean buffers, measure distance in a two-dimensional Cartesian plane, where straight-line or Euclidean distances are calculated between two points on the plane. Euclidean buffers are the more common type of buffer, and work well when analyzing distances around features in a projected coordinate system which are concentrated in a relatively small area (like one UTM zone). Geodesic buffers provide more accurate buffer offsets for features that are more dispersed (cover multiple UTM zones, large regions, or even the whole globe).
There are times when performing a Euclidean buffer will produce results that are not technically correct. The major danger in performing a Euclidean buffer is that when features are stored in a projected coordinate system, there are areas in the projection where distances, areas, and the shape of features are distorted; this is a fact of using projected coordinate systems. For example, if using a State Plane or UTM projected coordinate system, features are more accurate near the origin of the projection (the center of the state, or the UTM zone), but become more distorted when moving away from the origin. In cases where a dataset is not concentrated in a small area, or when a buffer distance is used which is large enough to create offsets outside of that small area, Euclidean buffers will be incorrect. Similarly, if a World projected coordinate system is used, distortion is often minimal in one area, but significant in another (for the Mercator World projection, distortion is minimal near the equator but significant near the poles). For a dataset that has features in both low and high distortion areas, Euclidean buffers will be more accurate in the low distortion areas and less accurate in the high distortion areas; geodesic buffers will be accurate in all areas.
Although geodesic buffers will always be more accurate than Euclidean buffers, there is a trade-off, in that generating geodesic buffers will take more time than generating Euclidean buffers. This difference in performance occurs because Euclidean buffers are generated using a very simple two-dimensional distance formula, whereas the geodesic buffer calculation is quite complex.
The geodesic buffer algorithm is used when the buffer input is in a geographic coordinate system (unprojected) and you specify a Buffer Distance in linear units (meters, feet, and so forth, as opposed to angular units such as degrees).
Geodesic Buffering example
The goal of this example is to compare 1,000 kilometer geodesic and Euclidean buffers of a number of select world cities. Geodesic buffers were generated by buffering a point feature class with a geographic coordinate system, and Euclidean buffers were generated by buffering a point feature class with a projected coordinate system (in both the projected and unprojected datasets the points represent the same cities).
When working with a dataset in one of the common projected coordinate systems for the whole world, such as Mercator, projection distortion may be minimal near the equator, but significant near the poles. This means that for a Mercator projected dataset, distance measurements and buffer offsets should be quite accurate near the equator and less accurate away from the equator.
The graphic on the left shows the input point locations. The equator and prime meridian are shown for reference. Both graphics are displayed in the Mercator (World) projection.
In the graphic on the right, the points near to the equator have geodesic and Euclidean buffers that are coincident. For points near to the equator, the Mercator projection does a good job of producing accurate distance measurements. However, the buffers of points far from the equator show considerably more distance distortion, as their Euclidean buffers are much smaller than the geodesic buffers; this occurs with the Mercator projection because at the poles areas are stretched (land masses close to the poles, such as Greenland and Antarctica have enormous areas in comparison with the land masses close to the equator). All 1,000 kilometer Euclidean buffers are the same size since the Euclidean buffer routine assumes that map distances are the same everywhere in the projection (1,000 kilometers in Brazil is the same as 1,000 kilometers in central Russia); this is not true since away from the equator the projection's distances become more and more distorted. With any type of analysis of distance on a global scale geodesic buffers should be used as they will be accurate in all areas while Euclidean buffers will not be accurate in high distortion areas.
Displaying geodesic and Euclidean buffers on a globe will reveal that the geodesic buffers truly are more accurate.
These are the same 1,000 kilometers Euclidean and geodesic buffers that were created for the example above. When displayed on a globe, each of the Euclidean buffers is a different size despite the fact that the same buffer distance was used for each (note the buffer in Alaska appears considerably smaller than the buffer in Brazil). This is a result of the buffers being created with the false assumption that all of the map distances were the same from one location to another. Contrarily, each of the geodesic buffers is a correct uniform size when displayed on the globe; these geodesic buffers are correct because they were not influenced by distortion from a projected coordinate system.
Additional information about geodesic buffering
The vertices of input polyline and polygon features are assumed to be connected with geodesic lines (a geodesic line is the shortest path between two points on an ellipsoid). If the intended path between vertices is not meant to follow a geodesic, you first need to explicitly densify the inputs. Geometries can be densified using the Densify tool.
The path followed by the output buffer is generally not a geodesic curve. The maximum allowable deviation of the computed buffer curve from a theoretical buffer curve is equal to 10 meters. The method used to compute this offset curve is called tracés parallèles. For detailed information about this method, see:
- Murphy B., Collier P., Mitchell D. and Hirst W. (1999) - "Maritime Boundary Generation from Straight Baselines Defined as Geodesics". Proceedings of the International Conference on Technical Aspects of Maritime Boundary Delineation and Delimitation. Monaco, 9–10 September, 1999.
The BUFF_DIST field
The values in the BUFF_DIST field of the output feature class is in the linear unit of the Input Features' coordinate system. For example, if a 50 meter buffer distance is specified in the tool, but the input dataset has a coordinate system that uses feet as the linear unit, 50 meters will be converted to feet in the output BUFF_DIST field. There are two exceptions to this:
- If the Input Features have a geographic coordinate system and the buffer distance is specified in a linear unit, such as kilometers or miles, the values in the BUFF_DIST field will be in meters.
- If the spatial reference of the Input Features is Unknown, no conversion is applied, so the value in the BUFF_DIST field is exactly the value entered.
The following table summarizes scenarios when BUFF_DIST unit conversion is and is not performed.
Input Features Coordinate System |
Buffer Distance Units |
Unit Conversion |
---|---|---|
Geographic |
Angular or linear |
Converted to meters |
Projected |
Angular |
Converted to input coordinate system unit |
Projected |
Linear |
Converted to input coordinate system unit |
Geographic or Projected |
Unknown |
Assumed to be input coordinate system unit |
Unknown |
Angular or Linear |
No conversion |
BUFF_DIST value units are always those of the Output Coordinate System environment when it is set.