Mam bazę danych Postgres z granicami administracyjnymi i ich geometrią. Każda z tych granic ma numer identyfikacyjny.
Co chcę osiągnąć:
Najpierw chcę wybrać wszystkie wiersze, które zaczynają się od określonego kodu pocztowego. Na przykład:
SELECT * FROM "post" WHERE "post"."ident" LIKE '101%'
Wszystkie sąsiednie geometrie powinny zostać połączone, a te, które nie są, również powinny zostać zwrócone.
Próbowałem tych oświadczeń:
Ten mam z tej odpowiedzi:
Łączenie wielu małych wielokątów w celu utworzenia większego wielokąta za pomocą PostGIS?
with t as (
select (st_dump(geom)).geom
from "post"
where "post"."ident" LIKE '593%'
) select ST_UNION(geom) from t;
Ale to zdanie zwraca tylko te wielokąty, które są sąsiadujące, ale inne nie są uwzględnione
with t as (
select (st_dump(geom)).geom
from "post"
where "post"."ident" LIKE '593%'
) select ((ST_Dump(ST_UNION(geom)))) from t;
Dostaję 2 wiersze i wydaje się, że to może być to, czego chcę, ale nie mogę uzyskać wyniku również jako ST_AsText.
Czy istnieje instrukcja, która zwraca wszystkie połączone wielokąty w razie potrzeby i zwraca je idealnie jako geoJSON, a może jako tekst?
źródło