Dissolve (merge geometries)
configuration-examples Dissolve
Dissolving is the process of merging detailed polygon geometries in larger polygon geometries by removing interior segments.
In the GeoDMS this can also be done based on a relational attribute to make polygons for each entry of the domain-unit of this relational attribute.
example
container dissolve { unit<float32> meter := baseunit('meter', float32); unit<fpoint> point_rd_base; unit<fpoint> point_rd := range(point_rd_base, point(300000[meter],0[meter]), point(625000[meter],280000[meter])); unit<uint32> municipality : StorageName = "%SourceDataDir%/CBS/2017/gem_2017.shp" , StorageType = "gdal.vect" , StorageReadOnly = "True" { attribute<point_rd> geometry (polygon); attribute<string> name; attribute<string> regionname; attribute<region> region_rel := rlookup(regionname, region /values); } unit<uint32> region := unique(municipality/regionname) { attribute<point_rd> geometry (polygon) := partitioned_union_polygon(ipolygon(municipality/geometry), municipality/region_rel)[point_rd]; } }
explanation
The example presents two domains: municipality and region. A relation is configured (region_rel) relating the municipality domain unit to the region domain.
The actual dissolving is done in the bold line. The partitioned_union_polygon is used to dissolve the geometries of a municipality for a region. The ipolygon conversion function is used as these vector functions only work on integer coordinates. The casting back to [point_rd] at the end of the expression is used to convert the integer coordinates back to the point_rd values-unit.