1

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

3
  • 1
    Explore modelbuilder and using iterators to automate this task
    – Hornbydd
    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.
    – Vince
    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.
    – Amadeus
    Feb 14, 2021 at 14:56

1 Answer 1

0

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.