Weighted Spatial Join

6022
3
02-04-2011 01:36 PM
JillThornton
New Contributor
I'm trying to do a one-to-one spatial join between 2 polygons, but because there are multiple polygons in the source layer that are overlaying my target layer, it's assigning attributes to the target layer that are a low percentage of what is actually being covered.  For example, if 3 polygons are overlaying one, and those 3 polygons take up, respectively, 75%, 12%, and 13% of the one polygon, how can I get the final layer to take the attributes of the majority overlay....the attributes of the polygon that covers 75% of the land as opposed to the one that covers 12%?  I cannot figure out how to do this.....hope it even makes sense.  Thanks!  JT
0 Kudos
3 Replies
MitchKoyle
New Contributor
It makes perfect sense and I am trying to figure out how to do the same thing. Does anyone have any insight?
0 Kudos
BenRaymond1
New Contributor
Thanks whuber! I had the same type of problem: I had a polygon layer of Census Blocks I wanted to join to a polygon layer of Transportation Analysis Zones (TAZ).  Each unique Census Block needed to have only one TAZ number, but due to overlap some were being assigned to a TAZ number for an area of the census block that was barely in the TAZ, while it should be assigned to the TAZ which its greatest area is in.  While your solution worked perfectly for me I had a little trouble following your directions, so I reworked the instructions as follows:

1. Create a Union of the two layers
2. Add a new field to the Union layer called "Area" and use calculate geometry to calculate the field.
3. Use summarize for the field you want to retain (for me I want to retain Census Blocks) then use maximum from the summary statistics on the "Area" field.
4. Now simply join your output summary table field �??Maximum Area�?� to your Union Layer field �??Area�?�.
5. All the polygons with a "null" for �??Maximum Area�?� can be deleted (by editing).
6. Finally join your Union layer by the retained field (Census Blocks for me) to your original layer.

If there is a quicker & easier method, please post it. Thanks!
DavidWasserman
Occasional Contributor III

For Line Files I have found the split line at point workflow to be very good for this. For example when I need to weight a spatial join, I actually break my lines into equal length segments so that when they have statistics run on them they are "approximately" weighted to the length of the line.

I have seen similar workflows with polygons where a blank fishnet is created and then intersected with the polygon layer to break it up into many pieces. In this way, on average your statistics are weighted to the larger area polygons. You dissolve at the end of this process of course in both examples. I realize this thread is old, but this method just goes in a direction opposite of a field based method (and works for ALL the fields in the database). Let me know if this makes sense.

David

David Wasserman, AICP
0 Kudos