Select to view content in your preferred language

Make Non-Overlapping Buffer Rings that only is affected by Source Point

731
1
09-07-2022 12:20 PM
Labels (1)
ElysiaFuller-Thomson
New Contributor

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. 

ElysiaFullerThomson_1-1662578368565.png

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:

ElysiaFullerThomson_0-1662578342135.png

 

Any ideas? 

 

0 Kudos
1 Reply
JohannesLindner
MVP Alum

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])

JohannesLindner_1-1662624194254.png

 


Have a great day!
Johannes