2

I have two shapefiles, one with some 100 buffers and one with polygons of which I want to calculate the areas within the buffer overlap areas, but with regards to the adjacent buffers. E.g. the area sum of the polygons within the overlap between 2 and 4, 3 and 2 etc.

So far, I have calculated the overlap zones by using the intersections tool and then intersect those areas again with the polygon shapefile. Summing up manually is a very tedious job, but I cannot get my head around how to achieve this automatically with ArcMap.

Edit: I maintained all the original attributes of both shapefiles (centroid, unique ID etc.) Each buffer has an unique ID, which has been transfered to the clusters as well. I have duplicates within the intersection shapefile depending on the number of buffers which intersect. Same applies to the polygons whose areas I want to calculate.

Example image

PolyGeo
65.5k29 gold badges115 silver badges350 bronze badges
asked Feb 13, 2021 at 13:22
3
  • 1
    Explore modelbuilder and using iterators to automate this task Commented Feb 13, 2021 at 17:30
  • 1
    Nothing is "automatic" -- you still need to choose the right processing tools in the right order. What is unclear is whether you preserved information about the component parts that make up the original circles, or whether you need to rebuild the component information dynamically. The former makes simple summary statistics possible; the latter requires some clever coding. In between is an Add-in tool to make a partial manual and partial code solution. Even knowing the original centers and buffer distance make this a much easier task. Please Edit the Question to provide more information. Commented Feb 13, 2021 at 17:54
  • This can be done in ArcPy 1. extract if a polygon has intersection with others and record unique ids (OBJECT_ID or FID) (e.g., 1-3, 1-2) 2. Create a selection query, select those pairs and create a shapefile for each pair. Find the intersected area, record the area for the pair and delete the shapefile. Commented Feb 14, 2021 at 14:56

1 Answer 1

1

Approach below is using arcpy Geometry methods and tested on shapefile as a storage.

  1. Run Polygon neighbours tool with "Include both sides of neighbor relationship" unchecked.
  2. Transfer buffer centroids to above table, and create XY events from it
  3. Buffer resulting points using any distance: Their table should look like this:

enter image description here enter image description here

Run following field calculator on field Shape of layer OUTPUT:

G = arcpy.Geometry()
aDict = arcpy.management.CopyFeatures("BUFFERS",G)
def IsectPairs(fromN,toN):
 A = aDict[fromN]
 B = aDict[toN]
 U = A.union(B)
 SD = A.symmetricDifference (B)
 D = U.difference (SD)
 return D
#---------------------
IsectPairs( !src_FID!, !nbr_FID! )

OUTPUT:

enter image description here

In theory

D = A.intersect(B,2)

is equivalent of these 3:

 U = A.union(B)
 SD = A.symmetricDifference (B)
 D = U.difference (SD)

But intersect method on polygons does not work in ArvGIS 10.8. It didn't work in all previous versions either. It works in 30+ yo ArcView 3.

1yo UPDATE:

My fault, my apologies to ESRI, because per documentation it should be 4 (!) instead of 2:

D = A.intersect(B,4)

So this is correct expression:

G = arcpy.Geometry()
aDict = arcpy.management.CopyFeatures("BUFFERS",G)
def IsectPairs(fromN,toN):
 A = aDict[fromN]
 B = aDict[toN]
 D = A.intersect(B,4)
 return D
#---------------------
IsectPairs( !src_FID!, !nbr_FID! )
Hornbydd
44.9k5 gold badges43 silver badges84 bronze badges
answered Feb 14, 2021 at 20:30

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.