Mesclar polígonos adjacentes e retornar todos (adjacentes e não adjacentes) como Multipolígono?

11

Eu tenho um banco de dados postgres com limites administrativos e sua geometria. Cada um desses limites tem um número de identificação.

O que eu quero alcançar:

Primeiro, quero selecionar todas as linhas que começam com um código postal específico. Por exemplo:

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

Todas as geometrias adjacentes devem ser mescladas e as que não são também devem ser retornadas.

Eu tentei essas declarações:

Este aqui tenho desta resposta:

Juntando muitos polígonos pequenos para formar polígonos maiores usando o PostGIS?

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

Mas essa declaração retorna apenas os polígonos adjacentes, mas outros não estão incluídos

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

Recebo 2 linhas e parece que isso pode ser o que eu quero, mas não consigo obter o resultado também ST_AsText.

Existe uma declaração que retorna todos os polígonos mesclados quando necessário e o retorna idealmente como geoJSON ou talvez como texto?

Nighthawk
fonte

Respostas:

1

Resposta do 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;

Assim, você pode acessar geometrias e transformá-lo em geoJSON. Geometrias adjacentes são mescladas e você obtém todas as outras geometrias que também não estão incluídas no polígono mesclado.

Kadir Şahbaz
fonte