Spatial Join to a polyon with multiple lines

200
4
Jump to solution
11-26-2020 04:34 AM
New Contributor III

Hi all!

I have polygons that contain multiple lines (Screenshot). How can I make a spatial join to the polygons so that it takes the attributes from the line that is longest in the polygon.

When I select the match option Intersect, it randomly choses a Line. I have also tried other options but so far I haven't found one that gives me the desired result.

 

Thank you in advance for your help!

 

Screenshot 2020-11-26 132437.jpg

Reply
0 Kudos
2 Solutions

Accepted Solutions
MVP Regular Contributor

You can add the attributes of all intersecting lines to your polygon in the field mapping options of the spatial join.

psb excellent article on it.

Spatial Join’s hidden trick or how to transfer attribute values in a One to Many relationship | Esri...

 

you could of course script it, but I'd just to the spatial join, appending all the SHAPE_LENGTH s to a delimited field which would look like - 123.45, 45.56, 789.9...

you could then create a new field then do a field calculation, something selecting the largest value from yourfield.split(",")

 

edit - just read that you want the longest line WITHIN the polygon, I'd guess you'd have to clip all the lines to all the polygons, then split the lines again by the boundaries of the polygons (run a polygon to line I think for the split) and then do the join.

View solution in original post

Reply
0 Kudos
MVP Regular Contributor

Sure, when you find the longest segment of a line within the polygon, it would have coincident geometry with the original line to match it back.

View solution in original post

Reply
0 Kudos
4 Replies
MVP Regular Contributor

You can add the attributes of all intersecting lines to your polygon in the field mapping options of the spatial join.

psb excellent article on it.

Spatial Join’s hidden trick or how to transfer attribute values in a One to Many relationship | Esri...

 

you could of course script it, but I'd just to the spatial join, appending all the SHAPE_LENGTH s to a delimited field which would look like - 123.45, 45.56, 789.9...

you could then create a new field then do a field calculation, something selecting the largest value from yourfield.split(",")

 

edit - just read that you want the longest line WITHIN the polygon, I'd guess you'd have to clip all the lines to all the polygons, then split the lines again by the boundaries of the polygons (run a polygon to line I think for the split) and then do the join.

View solution in original post

Reply
0 Kudos
New Contributor III

Thank you for your response!

I guess I expressed myself a bit wrong. The line does not necessarily have to be within the polygon as a whole. The join should simply select the line that interacts the longest with the polygon

Reply
0 Kudos
MVP Regular Contributor

Sure, when you find the longest segment of a line within the polygon, it would have coincident geometry with the original line to match it back.

View solution in original post

Reply
0 Kudos
New Contributor III

You're right. Then I'll try it the way you explained. Thank you very much!