TLDR: Can you join together GeoJSON features that have a common property, such that the final polygon is a combination of the smaller features?
I’m building a web application that requires me to modify some existing GeoJSON by removing lines between counties, essentially creating larger polygons out of smaller ones. Here’s what the GeoJSON looks like:
{
"type": "FeatureCollection",
"features": [
{
"type": "feature",
"geometry": {
"type": "MultiPolygon",
"coordinates": [[[[ ..some coordinates ]]]],
},
"properties": {
"joiner": 1,
"PUMA": "Alameda County"
}
},
{
"type": "feature",
"geometry": {
"type": "MultiPolygon",
"coordinates": [[[[ ..some coordinates ]]]],
},
"properties": {
"joiner": 2,
"PUMA": "San Jose County"
}
},
{
"type": "feature",
"geometry": {
"type": "MultiPolygon",
"coordinates": [[[[ ..some coordinates ]]]],
},
"properties": {
"joiner": 1,
"PUMA": "Fremont West"
}
},
]
}
In this dummy example, I’d like to join together Alameda County and Fremont West, because they both contain the “joiner” property of 1 (they are next to each other, this is a given). Visually speaking, this would mean that certain adjacent polygons on the map would be joined into a single polygon.
This is what the data currently looks like when projected using MapboxGL:
The final projection would join together adjacent polygons with a common property and remove the dividing lines, creating larger ones:
Advertisement
Answer
You can use Turf’s “dissolve” method, which does exactly this:
var dissolved = turf.dissolve(features, {propertyName: 'joiner'});
Documentation: http://turfjs.org/docs/#dissolve