I have connected a series of points into a line in ArcMap 10 with the Points to Line tool in the ArcToolbox.

The line is, of course, in its own layer, and I added a 5-meter buffer around the line. It appears that this buffer is in the layer/feature class as the original line.

Is there a way for me to turn this buffer into an independent polygon, in its own layer?

Once I achieve that, I would like to be able to slice the polygon (buffer) into pieces.


You have to create a polygon feature class and add it to the map. Start Editing and set the polygon layer as the target layer (9.3) (or select it the polygon feature template in version 10). Select the line you wish to create the buffer from and run the buffer tool. You can then cut the polygon with the Editor tools. Is this what you are trying to do?

  • And it works! I had to go into Editor mode for the newly created polygon layer, but have the polyline selected for the buffer to work out. Thank you so much!
    – hpy
    Apr 20 '11 at 22:59

Using Buffer_analysis in ArcGIS 10, allows you to define the output featureclass of the buffer objects, so in the Python window, simply use code like this:

arcpy.Buffer_analysis("LineFtrs", "buffer_output", "5 meters", "FULL", "ROUND")

Where LineFtrs is the obj to buffer.

This can also be done to a selection.


Slightly derpy approach using python:

import geopandas as gpd
import shapely

def func_get_buffer_from_LineString(lines_list,m_list,crs_from,crs_to):
takes LineString and returns a dataframe with buffers around LineString
lines_list -> list of lines where each list-item is a shapely.geometry.linestring.LineString 
m_list -> list of buffer radii
crs_from -> this will almost always be 4326
crs_to -> CRS value for projecting to meters, value is 3857 for Gujranwala
    lines_df = pd.DataFrame(lines_list).reset_index()
    lines_df = lines_df.rename(columns={
    lines_gpd = gpd.GeoDataFrame(lines_df,geometry='geometry')
    lines_gpd.crs = crs_from
    for m in m_list:
        buffered= lines_gpd.to_crs(epsg=crs_to).buffer(m).to_crs(epsg=crs_from)
        col_name = 'buffered_{m}'.format(m=m)
        lines_gpd[col_name] = buffered

    return lines_gpd

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.