Uso de “dissolve” con POSTGIS
Uno de los problemas que tuve al manejar los datos geométricos del INE fue que la capa de municipios constaba de geometría de tipo POLYGON. Lo que necesitaba conseguir era agrupar esa geometría simple y convertirla en MULTIPOLYGON. Eso me dio la idea para el siguiente consejo práctico.
Para ello una simple ojeada a la documentación de POSTGIS y encontré la función que necesitaba, st_union. Esta función nos une la geometría en función de un atributo seleccionado.
Voy a mostrar un ejemplo sencillo, pero muy pedagógico. En este ejemplo partimos de tres polígonos simples, su geometría es de tipo POLYGON y quiero unirlos por un atributo común, en su caso el código.
Vemos en la imagen anterior los 3 polígonos, dos de los cuales tienen el mismo atributo (campo código).
La SQL quedaría de la siguiente manera:
select st_union(geometria) from poligonos group by codigo;
El problema viene con el resultado de esa consulta, y es la heterogeneidad del tipo de geometría:
Para que eso no ocurra, añadimos la función st_multi, y conseguimos una homogeneidad del tipo de geometría, convirtiendo todas las geometrías en MULTIPOLYGON:
select st_multi(st_union(geometria)) from poligonos group by codigo;
En caso de que los polígonos sean adyacentes, pasaría a ser un único polígono, es decir, elimina la frontera entre ambos.
Ahora comprobamos que al usar st_union, simplemente nos ha creado un polígono a partir de un atributo común, manteniendo la geometría de tipo POLYGON y en este caso ya no hace falta usar st_multi.


No comments yet.