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.
3 Answers 3
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– hpy2011年04月20日 22:59:34 +00:00Commented Apr 20, 2011 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.
-
-
and again - help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Buffer/…Hairy– Hairy2011年04月20日 07:54:53 +00:00Commented Apr 20, 2011 at 7:54
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={
0:'geometry'
})
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
Explore related questions
See similar questions with these tags.