¿Fusionar polígonos adyacentes y devolver todo (adyacente y no adyacente) como Multipolígono?


11

Tengo una base de datos postgres con límites administrativos y su geometría. Cada uno de esos límites tiene un número de identificación.

Lo que quiero lograr:

Primero quiero seleccionar todas las filas que comienzan con un código postal particular. Por ejemplo:

SELECT * FROM "post" WHERE "post"."ident" LIKE '101%'

Todas esas Geometrías adyacentes deben fusionarse y las que no lo son también deben devolverse.

He intentado esas declaraciones:

Este tengo de esta respuesta:

¿Unirse a muchos polígonos pequeños para formar polígonos más grandes usando PostGIS?

with t as (
select (st_dump(geom)).geom 
from "post"
where "post"."ident" LIKE '593%'
) select ST_UNION(geom) from t;

Pero esta declaración devuelve solo aquellos polígonos que son adyacentes pero otros no están incluidos

with t as (
select (st_dump(geom)).geom 
from "post"
where "post"."ident" LIKE '593%'
) select ((ST_Dump(ST_UNION(geom)))) from t;

Obtengo 2 filas, y parece que esto podría ser lo que quiero, pero no puedo obtener el resultado como ST_AsText.

¿Hay una declaración que devuelva todos los polígonos combinados donde sea necesario y lo devuelva idealmente como geoJSON o tal vez como texto?

Respuestas:


1

La respuesta de OP:

with t as (
select (st_dump(geom)).geom 
from "post"
where "post"."ident" LIKE '593%'
) select ST_AsGeoJSON((ST_Dump(ST_UNION(geom))).geom) from t;

Para que pueda acceder a las geometrías y transformarlas en geoJSON. Las geometrías adyacentes se fusionan y obtiene todas las demás geometrías que tampoco están incluidas en el polígono fusionado.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.