Select to view content in your preferred language

Joining multiple layers with overlap

291
3
Jump to solution
a month ago
hhauptman
New Contributor

I have three polygon layers in ArcGIS Pro (let’s call them A, B, and C). My goal is to:

  • Keep all features from Layer A in the final output.

  • Join attributes from Layers B and C only if they have an area of overlap with A.

  • Do not join features from B or C if they only touch the boundary of A (i.e., no actual area overlap).

  • For A features with no overlaps, I still want them included (can have nulls in the joined fields).

  • For any given polygon in Layer A there could be multiple Layer B overlaps (one to many) but that same Layer B polygon might also overlap with another polygon from A. 

I was thinking of using the Intersect tool to isolate actual overlapping areas and then doing a Spatial Join or Join Field afterward. When I tried and did a spot check it looks like things are being joined when there is no actual overlap... Am I doing something wrong? 

Tags (2)
0 Kudos
1 Solution

Accepted Solutions
DavidPike
MVP Notable Contributor

I would clear up your data first by removing any B and C features you don't need.  Select Layer By Location (Data Management)—ArcGIS Pro | Documentation - For B and C, select and remove features which have this relationship with A - 'Boundary touches'.  make copies of your data and delete records from those.  name them something logical to refer back to e.g. B_doesNotTouchAboundary

For the spatial joins and one-to-many - you're possibly going to have a whole load of records if you run the operation twice for B and C on A.  e.g. join 1 produces 10 'duplicate' features, join 2 then increases that to 100 (assuming 10 'duplicates' from each operation.

 

View solution in original post

3 Replies
DavidPike
MVP Notable Contributor

I would clear up your data first by removing any B and C features you don't need.  Select Layer By Location (Data Management)—ArcGIS Pro | Documentation - For B and C, select and remove features which have this relationship with A - 'Boundary touches'.  make copies of your data and delete records from those.  name them something logical to refer back to e.g. B_doesNotTouchAboundary

For the spatial joins and one-to-many - you're possibly going to have a whole load of records if you run the operation twice for B and C on A.  e.g. join 1 produces 10 'duplicate' features, join 2 then increases that to 100 (assuming 10 'duplicates' from each operation.

 

hhauptman
New Contributor

This worked well for a small dataset—thank you! However, I have so many boundaries that selecting them manually isn't practical.

0 Kudos
DavidPike
MVP Notable Contributor

What are you doing manually?

0 Kudos