PostGIS에서 Polygon을 Multipolygon으로 변환 / 유형 변환하는 방법은 무엇입니까?


30

다각형을 다중 다각형 유형으로 유형 변환하는 방법이 있습니까?

예를 들어 점에 ST_Buffer ()를 사용하여 원을 만들었습니다. 해당 함수의 반환 유형은 다각형 유형입니다. 문제는 형상 열에 다중 다각형 유형으로 제한하는 것입니다. 따라서 간단한 다각형을 삽입 할 수 없습니다.

ST_MPolyFromText () 함수를 사용했지만 평소와 같이 null을 반환하고 ST_Dump ()가 올바른 출력을 제공하지 않습니다.

제약 조건은 다음과 같습니다.

CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) = 'MULTIPOLYGON'::text OR geom IS NULL),

다중 다각형 제약 조건을 추가해야하는 이유가 있습니까? 구속 조건을 다각형으로 변경하는 것은 어떻습니까?
underdark

이것은 gis.stackexchange.com/questions/14198/…의 어린이 질문이 아닙니까 ?
unicoletti

그러나 독립형 질문으로 해석 될 수도 있습니다.
underdark

예, 이것은 어린이 질문이지만 문제는 shapefile을 다각형 레이어를 포함하는 postgis로 가져올 때 자동으로 multipolygon의 형상을 생성하는 것입니다. 그런 다음 데이터 유형을 다중 다각형에서 다각형으로 변환하는 것은 약간 지루합니다. 클라이언트가 수행하기 때문입니다. 따라서 postgis에 의해 생성 된 해당 열의 열에 출력을 저장해야합니다.
Vicky

추신 : multi-to-poly에서 역을 수행하려면을 사용하십시오 st_geometryn(geom, 1).
Peter Krauss

답변:


55

ST_Multi- 도형을 MULTI * 도형으로 반환합니다. 형상이 이미 MULTI *이면 변경되지 않은 상태로 반환됩니다.

예:

SELECT ST_AsText(ST_Multi(ST_GeomFromText('POLYGON((743238 2967416,743238 2967450,
        743265 2967450,743265.625 2967416,743238 2967416))')));
        st_astext
        --------------------------------------------------------------------------------------------------
        MULTIPOLYGON(((743238 2967416,743238 2967450,743265 2967450,743265.625 2967416,
        743238 2967416)))
        (1 row)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.