Dissolve boundaries

1508
1
12-20-2020 03:38 PM
Labels (1)
DanPatterson
MVP Esteemed Contributor
0 1 1,508

 

Dissolve

 

It exists already.

 Dissolve (Data Management tools) 

So why another one? 

Simple.  You need an attribute to dissolve on.

You are doing your aggregation of shapes based on a common attribute, so it is grouping things based on commonalities.

The work around, is to fill a column with a common attribute, then away you go.

As part of my work on the Geo array that I use for my Free Tools project, I began to explore how dissolve actually works.  Sadly, it isn't as simple as I thought and reading the academic papers or tearing apart code left me feeling a bit lost.  I admit, reading my code after a few days away leaves me feeling the same.

In short:

  • find common segments in your polygons
    • which means find the adjacent polygons, then
      • for each one find the common segment(s)
        • remembering that the edges of common segments will go in the opposite direction
          • and you have the floating point comparison thing
            • (I know I have forgot something... check my code 😐)
  • remove the common segments and rejoin the remaining segments
    • don't get me started... there are no examples of this in useful pseudo-code and
      • yeah, yeah, the plane sweep thingy, why does it take multiple classes to define one it is all just an array
        • don't forget the case where a polygon can join other polygons at multiple points
          • don't forget to keep those around that aren't done yet
  • are you keeping inner rings? (aka, holes)
  • what about multipart shapes? split them? keep them if they are disjoint?
  • what about meeting at a point?
    • I know, I know, two points sharing the same coordinates form a degenerate line, but there is no through access... my suggestion, dump'em until they learn to be more open.

So some examples:

Laughing person ... before and after dissolve

dissolve00.pngdissolve01.png

Note the shapes aren't in order which makes it a challenge.  You can do a lexicographic sort of the left-most coordinate to speed up the identification of adjoining shapes.

Bird on Dog ... before and after dissolve

dissolve03.pngdissolve02.png

This example shows two groupings of geometry.  I chose the dump the holes option.

The Dissolve Boundaries tool

dissolve_tool.png

References

numpy geometry 

arcpro_npg ... npg ... (n)um(p)y (g)eometry the code

Github version

Dissolve ... in geonumeracy 

GitHub Pages

Dissolve ... GitHub pages 

geonumeracy... a compendium of geometry learnings

geonumeracy... on GitHub Pages 

 

Try taking down a few boundaries yourself... either in life or geometry 😁 .

1 Comment
About the Author
Retired Geomatics Instructor (also DanPatterson_Retired). Currently working on geometry projects (various) as they relate to GIS and spatial analysis. I use NumPy, python and kin and interface with ArcGIS Pro.
Labels