logo_web1.jpg (5049 bytes)
HOME ET Solution Center index HOME

Create non-overlapping Polyline buffers with attributes

In this article we presented an approach for creating non-overlapping buffers (one polygon per original feature) that will carry the attributes of the original features. The procedure will work if the input dataset represents points. Here we are trying to propose a method to achieve the same goal if the input features are polylines.

Input polyline dataset


Source dataset  - We have a topologically correct (node at each intersection) street dataset that we want to buffer.  We want however the buffer polygons to carry the Street names and some other attributes available in the input.


Standard Buffer applied



The standard "Buffer" tool (if Dissolve Type = "NONE" is used) will give us a polygon per original feature. Each polygon will carry the attributes of the original feature. The problem however is that the buffer polygons will overlap each other at all intersection no matter whether "round" or "flat" buffer option is used.

Standard buffer with dissolve "ALL" used.


STEP 1: If we use the standard "Buffer" tool with Dissolve Type = "ALL", we will get non overlapping buffers, but the original attributes cannot be attached to the buffers because there will be many to one relationship (many streets will be represented by a single polygon).

After having created the buffer, there are two major problems that we need to solve:

  1. We need to partition the global buffer polygon in a way that each street segment is represented by a single polygon.
  2. We need to attach the attributes from the original streets to the individual polygons polygons.
Exported Regular Nodes


Regular Nodes Buffered


Polylines Erased with Buffers representing Regular Nodes

erased nodes

The partitioning the space can be solved in the same way as for the points. If however the source dataset is polyline there are a couple of complications:

  1. If the street dataset is topologically correct, then in the intersections each polyline that participates will have a node. This means that there will be several (depending on how many street segments connect) data points at each intersection.  The best way to solve the problem is to eliminate these data points

We can achieve this in a 3 step process:

  • STEP 2: Use the Export Nodes function to get  the regular nodes (where 3 or more streets intersect) of the street dataset.
  • STEP 3: Buffer the nodes with a very small buffer distance (at least smaller than the buffer distance used)
  • STEP 4: Use the Erase function to remove the parts of the polylines that are inside the buffer created above.

  2. Since in some case the distance between the adjacent vertices in a polyline might be much longer than the buffer distance, we need to introduce some new vertices.

STEP 5: Use the Densify function with a tolerance smaller or equal to the buffer distance. If different buffer distances are used for the different polylines, the smallest buffer distance must be used.

Thiessen Polygons



Thiessen detail 

STEP 6: Use the Build Thiessen Polygons function to partition the space.  Use the Attach attribute option because we'll need the attributes of the original polylines.

The function will create a polygon around each vertex

As can be seen from the detailed picture on the left, the space in the proximity of the nodes is partitioned as desired.

After Intersect
STEP 7: Now we need just the parts of the Thiessen polygons that overlaps the Buffer created in STEP 1. We can use the standard Intersect tool to get this. Use the "ALL" attributes option because we'll need the attributes.
After Dissolve
Result - Detail
Result Detail
STEP 8: Use Dissolve to merge the Thiessen polygons pertaining to a single street together.
A model of the entire process.

See ET GeoWizards User Guide for more information

For any comments and enquiries contact: webmaster@ian-ko.com
Esri and all Esri products mentioned are trademarks of Environmental Systems Research Institute, Inc.
Copyright: Ianko Tchoukanski