merging/dissovling overlapping polygons in one layer into a single polygon

24440
8
07-08-2013 11:16 AM
Highlighted
New Contributor
Hello,

I have question regarding polygons created through a buffer operation. I created a buffer feature from a road network centreline file, which consists of multiple sections. Around intersections and highway ramps for example, this resulted in a multitude of overlapping polygons (one for each element/link in the network). Now I would like to dissolve/merge those overlapping polygons into one so that each interesection for example is assigned a single buffer area while I want to maintain those polygons along single stretches of road as discrete features. I include an image below which hopefully explains what I am trying to say.

I have tried feature to polygon and intersecting the layer with itsef as well as a few other options but so far I have only succeeded in either creating one continuous buffer polygon for the entire network or generating a multitude of individual polygons for each area of overlap. I know that in editing mode I could select and merge specific polygons by hand but my network has over 23,000 links and checking them all for overlaps and editing those by hand seems, well, inefficient. I also thought about creating a topology but the only fixes available for overlapping polygons also seem to be to a) either delete areas of overlap, b) assign them to one of the participating polygons or c) turn them into new polygons (back to the multitudes). I am not worried about summing or maintaining attributes of the buffer polygons other than their location.

I could probably implement a python script that does exactly what I need but would not be able to fiddle around with one to adapt it myself.

Any helpul hints would be greatly appreciated!!

Thanks,

P.G.

[ATTACH=CONFIG]25803[/ATTACH]
Tags (2)
0 Kudos
8 Replies
Highlighted
New Contributor II
Just use the geo-processing tool "Merge", and selecting the layer containing the buffer polygons as the input.  A simpler way is to merge them when created, using the buffer tool.
0 Kudos
Highlighted
New Contributor
Just use the geo-processing tool "Merge", and selecting the layer containing the buffer polygons as the input.  A simpler way is to merge them when created, using the buffer tool.


Thank you. I tried that but I still end up with the same amount of polygons, which still overlap. And in the "Buffer" tool, the dissolve options only allow me to either create one single buffer polygon for the entire network (ALL option) or to dissolve by shared attribute values (LIST option), for which I do not have the right field to define just those polygons that overlap.
0 Kudos
Highlighted
Occasional Contributor III
Use the geoprocessing tool Dissolve and make sure the check box for "Create multipart features" is off.
0 Kudos
Highlighted
MVP Honored Contributor
I would first dissolve on the Road Name field of each segment buffer to create continuous buffers by roadway.  Then I would use the Intersect tool of the Dissolved layer by itself (only one layer).  This should leave the intersection polygons.  Dissolve them with no attributes and do not create multi-part features.

Now Spatial Join the original street lines to these polygons with the polygons as the target outputs and the lines as the Join outputs.  Use the One-To-One option and set up a merge rule on Road Names to create a Join list with a comma delimiter.  Now you have the polygons with their road names.  To get more attributes Spatial Join the lines to the polygons, potentially dissolving the lines on common attributes first (or not).  Give it a try.

If you have the license you could create a copy of the buffers and erace these intersection polygons.  That is the single street buffers.  Merge this with the interection polygons and move some attributes to a single field set using the field calculator.  Should basic get you where you want to go.
0 Kudos
Highlighted
New Contributor
Richard,

thank you for this detailed response.

I have tried to run through your methodology but have ended up with slivers for example where the roads form bends. Also, when I dissolve the result of the first intersection operation, for some reason, not all the polygons in the junction areas are dissolved together. Again, this may be a function of the geometry, i.e. where junctions are not completely perpendicular, the polygons might not actually touch and thus not be 'recognised' as belonging together.

I think with a different dataset, your suggestions could work, though, so I will definetely keep them in mind for future reference. For my current project I have decided to approach the problem somewhat differently, as my dataset is too large to correct all 'errors' by hand.

Thanks again.
0 Kudos
Highlighted
MVP Honored Contributor
Richard,

thank you for this detailed response.

I have tried to run through your methodology but have ended up with slivers for example where the roads form bends. Also, when I dissolve the result of the first intersection operation, for some reason, not all the polygons in the junction areas are dissolved together. Again, this may be a function of the geometry, i.e. where junctions are not completely perpendicular, the polygons might not actually touch and thus not be 'recognised' as belonging together.

I think with a different dataset, your suggestions could work, though, so I will definetely keep them in mind for future reference. For my current project I have decided to approach the problem somewhat differently, as my dataset is too large to correct all 'errors' by hand.

Thanks again.


I would say that looking at your original lines that you needed to first dissolve the roads into continuous lines, then perform the buffer.  That would smooth out the bends without slivers.  I also noticed the parallel lines for freeways and offramps.  I would handle them in a separate process.

If you come up with something better for your data, share it.  You are not the only person to face this kind of need with a road network.
0 Kudos
Highlighted
New Contributor
I would say that looking at your original lines that you needed to first dissolve the roads into continuous lines, then perform the buffer.  That would smooth out the bends without slivers.  I also noticed the parallel lines for freeways and offramps.  I would handle them in a separate process.

If you come up with something better for your data, share it.  You are not the only person to face this kind of need with a road network.


Thanks for the reminder. As far as dissolving the original lines goes, my problem/task is to maintain the individual segments of even the same roads as I am using traffic loads on the network to calculate emission loads for each segment. And the traffic and thus the emissions vary on different segments of even the same road (the data comes from a travel demand model).

And my "work around" entails doing something completely different than my original plan as I came to the conclusion that I would not be able to solve the buffer/overlapping polygons problem. It has turned into a fairly lengthy process and I am not sure it would be much use to anyone unless they try to do more or less exactly what I am doing. I am happy to post it, though - just in case. By way of explanation: I am working with two network features. One is the centre line of the real world road network, the second is the simplified (and not always spatially coincident) network from a travel demand model, which contains the traffic loads for the road segments. I am interested in the emissions that are created within a certain distance of inhabited land parcels (i.e. ultimately the emission loads affecting people living in those parcels)


  • selected links from real network that are within 300m of inhabited parcels: CandidateNetwork1

  • selected all of these that are "intersecting" with model network with a search distance of 300m (this is to try and bring the data from the model network together with the real network in some way): CandidateNetwork2

  • deleted all links from CandidateNetwork2, that do not have an equivalent in the model network from which traffic/emissions data could be transferred

  • created 300m buffers around  CandidateNetwork2

  • clipped the layer of inhabited parcels by CandidateNetwork2 (getting all inhabited parcels or parts thereof that are within the buffer distance of the real network)

  • buffered the parcels by 300m

  • intersected the clipped parcel layer as well as the buffer layer with the model network (thereby getting as close as I saw possible to correctly assigning traffic/emission loads from the model network to parcels that in reality are within the chosen distance of the real network) - on this last step, I ran into big problems with the buffer polygon/network intersect step, though - described in another post in this forum


That's it for the work around (once I have worked out the intersect problem). Maybe it is of use to someone.
0 Kudos
Highlighted
MVP Honored Contributor
Thanks for the reminder. As far as dissolving the original lines goes, my problem/task is to maintain the individual segments of even the same roads as I am using traffic loads on the network to calculate emission loads for each segment. And the traffic and thus the emissions vary on different segments of even the same road (the data comes from a travel demand model).

And my "work around" entails doing something completely different than my original plan as I came to the conclusion that I would not be able to solve the buffer/overlapping polygons problem. It has turned into a fairly lengthy process and I am not sure it would be much use to anyone unless they try to do more or less exactly what I am doing. I am happy to post it, though - just in case. By way of explanation: I am working with two network features. One is the centre line of the real world road network, the second is the simplified (and not always spatially coincident) network from a travel demand model, which contains the traffic loads for the road segments. I am interested in the emissions that are created within a certain distance of inhabited land parcels (i.e. ultimately the emission loads affecting people living in those parcels)


  • selected links from real network that are within 300m of inhabited parcels: CandidateNetwork1

  • selected all of these that are "intersecting" with model network with a search distance of 300m (this is to try and bring the data from the model network together with the real network in some way): CandidateNetwork2

  • deleted all links from CandidateNetwork2, that do not have an equivalent in the model network from which traffic/emissions data could be transferred

  • created 300m buffers around  CandidateNetwork2

  • clipped the layer of inhabited parcels by CandidateNetwork2 (getting all inhabited parcels or parts thereof that are within the buffer distance of the real network)

  • buffered the parcels by 300m

  • intersected the clipped parcel layer as well as the buffer layer with the model network (thereby getting as close as I saw possible to correctly assigning traffic/emission loads from the model network to parcels that in reality are within the chosen distance of the real network) - on this last step, I ran into big problems with the buffer polygon/network intersect step, though - described in another post in this forum


That's it for the work around (once I have worked out the intersect problem). Maybe it is of use to someone.


Dissolving the original lines is just a derivative dataset from your original lines, not a replacement.  In any case, slivers will always be an issue, with such a segmented approach, but given your objectives there may be no way of avoiding them completely.  I would not have guessed that your original question involved anything like the process you have come up with, so it is always best to set out where you aim to go and constraints like you did in your last post.
0 Kudos