Working with geometry using numpy, and other musings.
Maintained by Dan-Patterson
It exists already.
Dissolve (Data Management tools)
So why another one?
Simple. You need an attribute to dissolve on. This one doesn't.
Usually, you are doing the 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
remove the common segments and rejoin the remaining segments
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
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.
This example shows two groupings of geometry. I chose the dump the holes option.
Bird on Dog ... before and after dissolve
The Dissolve Boundaries tool
References
arcpro_npg ... npg ... (n)um(p)y (g)eometry the code
Try taking down a few boundaries yourself... either in life or geometry .