นี่คือการติดตามต่อไปจากคำถามก่อนหน้านี้ คุณจะเห็นว่าฉันเป็นผู้ใช้ PostGIS ใหม่
ฉันได้ดูความถูกต้องของโทโพโลยีในข้อมูลของฉันและพบปัญหาเกี่ยวกับโทโพโลยีประมาณ 1,700 รายการในชุดข้อมูลแบบโพลีกอน (รูปหลายเหลี่ยม) เหล่านี้คือ "Ring Self_intersection" ทั้งหมด
การใช้ข้อมูลที่มีประโยชน์ในงานนำเสนอนี้โดย Paul Ramsay (หน้า 20) ฉันพยายามบัฟเฟอร์ข้อมูลของฉันตามนั้น:
UPDATE schema.data ตั้งค่า the_geom = buffer (the_geom, 0.0) WHERE isvalid (the_geom) = false และ isvalid (buffer (the_geom, 0.0)) = true;
แต่ฉันได้รับคำตอบ:
ข้อสังเกต: แหวนแยกตนเองที่หรือใกล้จุด (แก้ไข) ข้อผิดพลาด: แถวใหม่สำหรับความสัมพันธ์ "sgm_buffer" ละเมิดข้อ จำกัด การตรวจสอบ "enforce_geotype_the_geom"
ข้อผิดพลาด ********** **********
ข้อผิดพลาด: แถวใหม่สำหรับความสัมพันธ์ "sgm_buffer" ละเมิดข้อ จำกัด การตรวจสอบ "enforce_geotype_the_geom" สถานะ SQL: 23514
ฉันได้ลองเพียง:
อัพเดต csgn.sgm_buffer ตั้ง the_geom = บัฟเฟอร์ (the_geom, 0.0)
และรับ:
ข้อผิดพลาด: แถวใหม่สำหรับความสัมพันธ์ "sgm_buffer" ละเมิดข้อ จำกัด การตรวจสอบ "enforce_geotype_the_geom"
ข้อผิดพลาด ********** **********
ข้อผิดพลาด: แถวใหม่สำหรับความสัมพันธ์ "sgm_buffer" ละเมิดข้อ จำกัด การตรวจสอบ "enforce_geotype_the_geom" สถานะ SQL: 23514
ดังนั้นฉันคิดว่าเทคนิคบัฟเฟอร์นี้จะไม่ทำงานกับปัญหาของฉัน หรือฉันกำลังทำอะไรผิดพลาด?
จากนั้นนายแรมเซย์ก็ดำเนินการในเอกสารเดียวกันเพื่อแนะนำเทคนิคเพิ่มเติมในการจัดการรูปหลายเหลี่ยม "ตัวเลข 8" ฉันไม่เข้าใจวิธีการเขียนโค้ดนี้อย่างสมบูรณ์ (หรือสิ่งที่กำลังทำอยู่และจะช่วยฉันได้หรือไม่):
เลือก ST_BuildArea (ST_Union ('LINESTRING EMPTY', ST_ExteriorRing ('POLYGON ((... )))'
ดังนั้น .... ใครก็ได้ช่วยได้บ้าง นี่คือการพิสูจน์ฝันร้ายที่แท้จริงด้วยเวลาอัน จำกัด ของฉันและทักษะที่ จำกัด ใน PostGIS
ST_Multi()
เพื่อบังคับให้รูปหลายเหลี่ยมทั้งหมดเป็นMULTIPOLYGON
s (นี่คือสมมุติฐาน)