Select to view content in your preferred language

problems with DISSOLVE function when aggregating NEIGHBOUR POLYGONS

7050
14
Jump to solution
09-18-2013 01:01 PM
by Anonymous User
Not applicable
Original User: ElenaLZ

Hello everyone,

I have problems with the dissolve function.

I have a shapefile with multiple polygons, some are together and some are not. I want to use the dissolve function to create a new polygon shapefile where all adjacent polygons are aggregated into bigger polygons.

When I use the dissolve function it doesn't dissolve those polygons that only share a point with their neighbours.

A portion of my shapefile before the dissolve:
[ATTACH=CONFIG]27560[/ATTACH]

and after the dissolve
[ATTACH=CONFIG]27561[/ATTACH]

I think that the dissolve function doesn't understand that these polygons are also neighbours and, so, it creates two different polygons. Is there a way I can tell the dissolve function that those polygons are also neighbours?

Any help will be much appreciated.

Thank you.
0 Kudos
14 Replies
by Anonymous User
Not applicable
Original User: rfairhur24

Here is a screenshot showing the buffer output as compared to the final output.  Just to prove that the final multipart polygon only has each part touching at a point but has the parts joined together in the same way that the buffer overlap joined the polygons.

Although in this particular case all of the polygons shared the same attributes and therefore dissolved together as long as they touched at a point or along a boundary, I could have done this with a larger set of features and used a case field that would have limited the dissolve to polygons that shared the same case attributes as well as touched at a point or along a boundary line.  The model I have constructed would complete much faster than an Iterator used with the Aggregate Polygons tool (by a factor of about 10 times faster) and it would not be as likely to crash ArcMap.
0 Kudos
by Anonymous User
Not applicable
Original User: ElenaLZ

Hi,

Your methodology seems to work rfairhur24 but I have few questions about it and I would really appreciate your help !!

1. You said: "Make the Buffer tool do a dissolve on the attribute you will ultimately use in the Dissolve at the end." What does it mean? In your example, which was the attribute ?? Was it the Shape Area ?? All polygons had different areas ... so how did it perform the dissolve function ??
The problem I have is that I don't want to create a dissolve field since I have a shapefile with more than 120000 polygons and it will take me a looooong time to do that. I would like to find a way the program dissolve all neighbour polygons.

2. What did you mean by "Select all features that match on your dissolve attribute from the case field(s)" ??

I tried several times different things but it doesn't work with my data.

Thank you for you time and help !!
0 Kudos
ElenaLopez
Deactivated User
Hi everyone,

I have found the solution, and here are the steps I have followed:

0. Original Data: a shapefile with polygons (data.shp)

1. Create a BUFFER of small distance (name of the new shapefile: data_buffer.shp)
2. DISSOLVE the new shapefile (unchecked create multipart features) (name of the new shapefile: data_buffer_dissolve.shp)
3. Use the INTERSECT tool: intersect data.shp + data_buffer_dissolve.shp (name of the new shapefile: data_buffer_dissolve_intersect.shp)
4. DISSOLVE data_buffer_dissolve_intersect.shp. The dissolve field is the FID of data_buffer_dissolve.shp and this time you do checked create multipart features. Name of the final shapefile (data_def.shp)

Thanks rfairhur24 for suggesting using buffers to solve the problems !!
0 Kudos
by Anonymous User
Not applicable
Original User: rfairhur24

Hi everyone,

I have found the solution, and here are the steps I have followed:

0. Original Data: a shapefile with polygons (data.shp)

1. Create a BUFFER of small distance (name of the new shapefile: data_buffer.shp)
2. DISSOLVE the new shapefile (unchecked create multipart features) (name of the new shapefile: data_buffer_dissolve.shp)
3. Use the INTERSECT tool: intersect data.shp + data_buffer_dissolve.shp (name of the new shapefile: data_buffer_dissolve_intersect.shp)
4. DISSOLVE data_buffer_dissolve_intersect.shp. The dissolve field is the FID of data_buffer_dissolve.shp and this time you do checked create multipart features. Name of the final shapefile (data_def.shp)

Thanks rfairhur24 for suggesting using buffers to solve the problems !!


In essence this is the same as what I suggested.  If you have only one grouping (i.e., there are no fields involved in step 1 to separate different buffers that are side by side), then you are correct that this is all you should need.

However, if you have many different groups of parcels close together based on an attribute field of the original parcels that will form separate groupings, the buffer could interact with more than one parcel attribute group and the FID of the buffer could be larger than what you want.  So if a grouping attribute is involved I would add a step to select only the records where the case fields that grouped the buffers in step 1 matched the same group field from the intersecting parcels in step 3 before doing step 4.  Spatial Join or Intersect basically do the same thing in either case.  I just prefer Spatial Join because there are no sliver polygons to deal with.
0 Kudos
RichardFairhurst
MVP Honored Contributor
Hi, 

Your methodology seems to work   rfairhur24 but I have few questions about it and I would really appreciate your help !! 

1. You said: "Make the Buffer tool do a dissolve on the attribute you will ultimately use in the Dissolve at the end." What does it mean? In your example, which was the attribute ?? Was it the Shape Area ?? All polygons had different areas ... so how did it perform the dissolve function ??  
The problem I have is that I don't want to create a dissolve field since I have a shapefile with more than 120000 polygons and it will take me a looooong time to do that. I would like to find a way the program dissolve all neighbour polygons.  

2. What did you mean by "Select all features that match on your dissolve attribute from the case field(s)" ?? 

I tried several times different things but it doesn't work with my data.  

Thank you for you time and help !!


My Dissolve field was SUBDIV_NAME, but to keep my example simple it did not play a real role, since there was only one subdivision. However, in reality if I ran the tool I would process the 50,000 subdivision values through the process in my 3/4 million parcels. Most of the subdivisions would be right next to each other and I would not want them to bleed together even by the smallest buffer distance, so I added a step to keep the bleeding from occuring. In any case, I think you found that the time spent on dissolving 120000 polygons was less than you thought, and even if it took time, it got the job done.
0 Kudos