How to: intersect a line feature with a polygon feature of overlapping polygons?

600
6
07-25-2013 12:43 PM
Highlighted
by Anonymous User
Not applicable
Original User: phigamma

Hi,

I have run into a problem trying to intersect a line feature with a polygon feature that contains overlapping polygons (which are deliberate and need to be maintained). The process takes extremely long and the output contains multiples of the line segments within each polygon (200 and more in some cases resulting in e.g. 10,154,395 network segments for 30,333 buffer polygons).

Here is what I am trying to achieve (I have the problem only with the bold part):

  • create buffers around individual adjacent land use parcels (the parcels are contiguous, the buffers thus overlap)

  • intersect the buffers with a road network to obtain a feature class that contains the parts of the network that are exactly within each buffer polygon (like a clip from the network for each individual buffer polygon, i.e. different segments might be assigned to several buffers, at least in part)

  • calculate the length of each of these network segments

  • use these lengths to calcuate emissions created on each network segment

  • sum these emissions for each buffer polygon



I include a couple of jpegs of (a) just the buffers and the network (where one visible network link generally contains two coincident lines, one for each direction of travel) and (b) the same with the original parcels also included.

[ATTACH=CONFIG]26226[/ATTACH]

[ATTACH=CONFIG]26227[/ATTACH]

Any helpful hints greatly appreciated!

Thanks,

P.G.
Reply
0 Kudos
6 Replies
Highlighted
by Anonymous User
Not applicable
Original User: TKONG

I don't see any problem in your data processing. You need to know how to summarize the field to get your result in your insected line feature class table.
Reply
0 Kudos
Highlighted
New Contributor
I don't see any problem in your data processing. You need to know how to summarize the field to get your result in your insected line feature class table.


Thank you. I can do the summary statistics but the problem is in the output from the intersect operation. There should not be as many line segements (in 100s of cases they are identical) assigned to each of the buffer polygons as there are. This must be a result of the overlap of the polygons, as it works fine when I use the layer with the contiguous, i.e. non-overlapping land use parcels. In the latter case I get for example 6 line segments if three network links intersect with the parcel (3*2 spatially coincident lines for each travel direction of each link; these are from the model network, hence they have exactly the same location; in the real world, these wold be seperate lanes).
Reply
0 Kudos
Highlighted
by Anonymous User
Not applicable
Original User: rfairhur24

Thank you. I can do the summary statistics but the problem is in the output from the intersect operation. There should not be as many line segements (in 100s of cases they are identical) assigned to each of the buffer polygons as there are. This must be a result of the overlap of the polygons, as it works fine when I use the layer with the contiguous, i.e. non-overlapping land use parcels. In the latter case I get for example 6 line segments if three network links intersect with the parcel (3*2 spatially coincident lines for each travel direction of each link; these are from the model network, hence they have exactly the same location; in the real world, these wold be seperate lanes).


This is exactly what intersect does with overlapping polygons, it creates 100s of slivers and duplicates.  In essence to get each parcel clean you would have to iterate the set that overlaps one at a time against the clean road network.  Time to process would be even longer, but results would be better at least as long as one parcel is not supposed to interact with any other parcel.  A sample of a clean input parcel buffer against a clean network example would be useful showing what you really want the end product to be for that set of buffers.  I.e. solve the problem as though only one property existed so I can see what you really expect to end up with.  So assuming the non-overlapping case looks good to you, show that.
Reply
0 Kudos
Highlighted
Occasional Contributor II
Thank you. I can do the summary statistics but the problem is in the output from the intersect operation. There should not be as many line segements (in 100s of cases they are identical) assigned to each of the buffer polygons as there are. This must be a result of the overlap of the polygons, as it works fine when I use the layer with the contiguous, i.e. non-overlapping land use parcels. In the latter case I get for example 6 line segments if three network links intersect with the parcel (3*2 spatially coincident lines for each travel direction of each link; these are from the model network, hence they have exactly the same location; in the real world, these wold be seperate lanes).


If the street street traffic emissions affect both side parcels, that the buffered parcels are overlapped is correct and fit to your puepose; you need to calculate the emissions distribution weight for each parcel (in other word they share that emissions).
If you only want assign this seg emissions for one parcel, you need to clean overlapped parcels or using another way to select one seg from overlapping lines.

Another thoughts:
1.Clean up the polygon layer first, to eliminate/clean up the gaps between adjcent parcels, overlapped parcel portions, sliver parcels.
2.Buffering the parcel (lot) outlines (one direction) instead of buffering the parcel polygons.
3. You can buffer street network lines instead of buffering parcels (one or two of line directions buffering), then convert the buffered polygons to lines, intersect those lines to parcel polygons.
4.Join the street network attribute data to the parcel layer by using address field, then convert parcel polygons to outlines, select that line closest to the street as target line for this parcel.
Reply
0 Kudos
Highlighted
by Anonymous User
Not applicable
Original User: phigamma

This is exactly what intersect does with overlapping polygons, it creates 100s of slivers and duplicates. In essence to get each parcel clean you would have to iterate the set that overlaps one at a time against the clean road network. Time to process would be even longer, but results would be better at least as long as one parcel is not supposed to interact with any other parcel. A sample of a clean input parcel buffer against a clean network example would be useful showing what you really want the end product to be for that set of buffers. I.e. solve the problem as though only one property existed so I can see what you really expect to end up with. So assuming the non-overlapping case looks good to you, show that.


NOTE: Having thought through the last post by TKONG, I might need to adjust my approach. I leave this post in here for now but I will need to get back to you about whether I still think this is how I should approach this problem. Apologies for being dense (a little, perhaps) and thank you!

original reply:

I attach a zip file with the following shapes, hoping this is what you meant by clean versions, Richard.


  1. BufferSingle (polygon): a single buffer (identified in OBJECTID field)

  2. Buffer_Network_intersect_right (line): This is what happens if I intersect shape 1 with the full version of shape 5 and what I would want to get out for the other polygons, too (depending on how many network links actually cross them, of course): two records for each link segment, one for each direction of travel. This may differ somewhat in case where I have highways with multiple lanes, but the principles should be the same. (Field FID_SacogN identifies each individual link (or part thereof) from the original network, OBJECTID is from the Buffer polygon)

  3. Buffer_network_intersect_wrong (line): This is what happened when I intersected the original overlapping polygon layer (not included here) with the full version of network shape 5, too many versions of the same link segment.

  4. BufferSelection (polygon): These are several overlapping buffers including the individual one from shape 1, in case you want to try anything on them.

  5. Network_selection (line): This is a part of the original network crossing the buffers in shape 4 (and some links around that). (Field FID_SacogN identifies the original network links)


I have deleted all fields in these shapes that are irrelevant to my interesect problem (like emission loads etc.) to keep things simple.

If you have any suggestions, I would be very grateful!
Reply
0 Kudos
Highlighted
New Contributor
If the street street traffic emissions affect both side parcels, that the buffered parcels are overlapped is correct and fit to your puepose; you need to calculate the emissions distribution weight for each parcel (in other word they share that emissions).
If you only want assign this seg emissions for one parcel, you need to clean overlapped parcels or using another way to select one seg from overlapping lines.

Another thoughts:
1.Clean up the polygon layer first, to eliminate/clean up the gaps between adjcent parcels, overlapped parcel portions, sliver parcels.
2.Buffering the parcel (lot) outlines (one direction) instead of buffering the parcel polygons.
3. You can buffer street network lines instead of buffering parcels (one or two of line directions buffering), then convert the buffered polygons to lines, intersect those lines to parcel polygons.
4.Join the street network attribute data to the parcel layer by using address field, then convert parcel polygons to outlines, select that line closest to the street as target line for this parcel.


Thank you! I won't have time to go through this today but will have a go tomorrow. And in fact, you might have alerted me to a logical error in what I was trying to do (assigning the emissions from the same link multiple times). I might have to convert them to a load per area first and then weight that to the size of my parcels. I'll get back to you.
Reply
0 Kudos