I am trying to create a 400 m to 800 m outer ring around many points that exist in the same shapefile.
When I try the multiple ring buffer tool with non-overlapping or the buffer tool followed by an erase, the other adjacent points interfere with the ring cutting off some of the area I would like.
What I would like to see is perfectly intact rings, even if two points are withing 400 m of each other, so that all the rings would like this:
Any ideas?
There's probably a way to do it with tools, but you can easily do this with a Python script:
in_features = "TestPoints"
inner = 400
outer = 800
out_dir = "memory"
out_name = "ring_buffer"
# create the output fc
sr = arcpy.Describe(in_features).spatialReference
out_feature = arcpy.management.MakeFeatureclass(out_dir, out_name, "POLYGON", spatial_reference=sr)
arcpy.management.AddField(out_feature, "Orig_FID", "LONG")
with arcpy.da.InsertCursor(out_feature, ["SHAPE@", "Orig_FID"]) as i_cursor:
with arcpy.da.SearchCursor(in_features, ["SHAPE@", "OID@"]) as s_cursor:
for shp, oid in s_cursor:
# create inner and outer buffers
b_inner = shp.buffer(inner)
b_outer = shp.buffer(outer)
# get the geometric difference -> the ring
ring_shp = b_outer.difference(b_inner)
# write the ring into the output fc
i_cursor.insertRow([ring_shp, oid])