인접한 다각형을 병합하고 (인접하거나 인접하지 않은) 모두를 다중 다각형으로 반환 하시겠습니까?


11

관리 경계와 해당 지오메트리가있는 postgres 데이터베이스가 있습니다. 각 경계에는 식별 번호가 있습니다.

내가 달성하고 싶은 것 :

먼저 특정 우편 번호로 시작하는 모든 행을 선택하고 싶습니다. 예를 들면 다음과 같습니다.

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

인접한 모든 지오메트리를 병합해야하며 그렇지 않은 지오메트리도 반환해야합니다.

나는 그 진술을 시도했다.

이 답변에서 내가 가지고있는 것 :

PostGIS를 사용하여 많은 작은 다각형을 결합하여 더 큰 다각형을 형성 하시겠습니까?

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

그러나이 문장은 인접한 폴리곤 만 반환하지만 다른 폴리곤은 포함되지 않습니다

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

나는 2 행을 얻었고 이것이 내가 원하는 것일 수 있지만 ST_AsText라는 결과를 얻을 수는 없습니다.

필요한 경우 병합 된 모든 다각형을 반환하고 geoJSON 또는 텍스트로 이상적으로 반환하는 문이 있습니까?

답변:


1

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;

따라서 Geometry에 액세스하여 GeoJSON으로 변환 할 수 있습니다. 인접한 형상이 병합되고 병합 된 다각형에 포함되지 않은 다른 모든 형상도 얻을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.