Fusionner les polygones adjacents et retourner tous (adjacents et non adjacents) en tant que multipolygone?


11

J'ai une base de données postgres avec les limites administratives et leur géométrie. Chacune de ces frontières a un numéro d'identification.

Ce que je veux réaliser:

Je veux d'abord sélectionner toutes les lignes qui commencent par un code postal particulier. Par exemple:

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

Toutes les géométries adjacentes doivent être fusionnées et celles qui ne le sont pas doivent également être retournées.

J'ai essayé ces déclarations:

Celui que j'ai de cette réponse:

Joindre de nombreux petits polygones pour former un plus grand polygone à l'aide de PostGIS?

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

Mais cette déclaration renvoie uniquement les polygones qui sont adjacents mais d'autres ne sont pas inclus

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

J'obtiens 2 lignes, et il semble que cela pourrait être ce que je veux, mais je ne peux pas obtenir le résultat sous la forme ST_AsText.

Existe-t-il une déclaration qui renvoie tous les polygones fusionnés si nécessaire et les renvoie idéalement sous la forme geoJSON ou peut-être sous forme de texte?

Réponses:


1

Réponse de l'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;

Vous pouvez donc accéder aux géométries et les transformer en geoJSON. Les géométries adjacentes sont fusionnées et vous obtenez toutes les autres géométries qui ne sont pas non plus incluses dans le polygone fusionné.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.