3

I'm not an ArcGis pro, so I need help on this one, and I have tried searching for answers.

I am using ArcMap 10.2.2. I don't know how to use python.

I have 6km and 12km buffers around the sites that I'm interested in. I want to be able to clip the 6km buffer from the 12km buffer so that I get a new layer that has buffers that are only from 6km to 12km. I have tried using the clip tool, but instead of cutting out the 6km buffer from the 12km buffer, it seems to only be able to cut away the 12km area surrounding the 6km buffer (see picture). The buffers are all in the same layer by the way.

I then tried using the the erase tool. I erased the 6km buffer from the 12km buffer, which works, but then anywhere there was buffer overlap, the erase tool has cut out areas of overlap and I want the new (6-12km) buffers to remain complete doughnuts (see picture).

How can I clip or erase the 6km buffer from the 12km buffer without cutting out overlap too? Picture:Clipped 6km from 1km, but clips away 12km rather than 6km erase tool erased 6km buffer from 12km buffer, but has also erased overlap of buffers - I still want buffers in tact after erase.

4

As you only have 2 buffer distances, you could do this in 2 easy manual steps (if you had more buffer distances I would recommend using the code from Polygeo).

Step 1: Use the "Buffer" tool to create a 6 km buffer around all your points. Make sure you set Dissolve to "None"

Step 2: Use the "Multiple Ring Buffer" tool to create a 6km buffer around the buffers you created in step 1. Make sure to set Dissolve to "None" and tick the "Outside Polygons Only" box.

The data you have created in step 2 will be the buffers showing only the 6-12km range.

3

To do this I think that you will need to use ArcPy with:

  • a Search Cursor to read the geometries of your points one at a time
  • buffer each point geometry twice (6km and 12km) and then use the 6km buffer to erase (using difference) from the 12km buffer to create an annulus polygon.
  • an Insert Cursor to write a new polygon feature class for your annulus polygons.

With arcpy.da, even if you have thousands of points, I think this should run quite quickly.

I thought the proof of concept code to do this would be easy so I have gone ahead and written it. I used 30 and 60 metres for my test buffers.

import arcpy

pointFC = r"C:\Temp\test.gdb\PointFC"
annulusFC = r"C:\Temp\test.gdb\AnnulusFC"

if arcpy.Exists(annulusFC):
    arcpy.Delete_management(annulusFC)
arcpy.CreateFeatureclass_management(r"C:\Temp\test.gdb",
                                    "AnnulusFC","POLYGON",pointFC,
                                    "DISABLED","DISABLED",pointFC)


iCursor = arcpy.da.InsertCursor(annulusFC,["SHAPE@"])

with arcpy.da.SearchCursor(pointFC,["SHAPE@"]) as sCursor:
    for pnt in sCursor:
        pntGeom = pnt[0]
        smallBufGeom = pntGeom.buffer(30)
        largeBufGeom = pntGeom.buffer(60)
        annulusGeom = largeBufGeom.difference(smallBufGeom)
        iCursor.insertRow([annulusGeom])

del iCursor

The input and output feature classes for three test points draw up as below:

enter image description here

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.