วิธีการแปลง / typecast จาก Polygon เป็น Multipolygon ใน PostGIS?


30

มีวิธีใดที่จะพิมพ์ typecast Polygons เป็น Multipolygon หรือไม่

ตัวอย่างเช่นฉันสร้างวงกลมโดยใช้ ST_Buffer () ในจุดหนึ่ง ชนิดส่งคืนของฟังก์ชันนั้นเป็นชนิดรูปหลายเหลี่ยม ปัญหาคือว่าในคอลัมน์รูปทรงเรขาคณิตมีข้อ จำกัด ที่ จำกัด ประเภท Multipolygon ดังนั้นฉันไม่สามารถแทรกรูปหลายเหลี่ยมอย่างง่ายได้

ฉันใช้ ST_MPolyFromText () ฟังก์ชั่น แต่ตามปกติมันจะกลับมาเป็นโมฆะสำหรับที่และ 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 ซึ่งมีชั้นรูปหลายเหลี่ยมจากนั้นจะสร้างรูปทรงเรขาคณิตของรูปหลายเหลี่ยมโดยอัตโนมัติ แล้วมันก็น่าเบื่อนิดหน่อยที่จะแปลงประเภทข้อมูลจากมัลติโพลิกอนเป็นโพลิกอน .. เพราะมันจะทำโดยไคลเอนต์ ดังนั้นเพียงแค่มีการบันทึกออกเป็น colummn ชนิดที่สร้างขึ้นโดย PostGIS ที่ ..
วิกกี้

PS: 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.