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?

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.