ฉันได้รับสำเนาหนังสือสุดยอด 'Python Geospatial Development' โดย Erik Westra ( ลิงก์ Amazon ) และฉันกำลังทำงานอยู่ ปัจจุบันสอนให้ฉันโหลดข้อมูลชายฝั่ง GSHHS จากรูปร่างไฟล์ลงในฐานข้อมูล PostGIS เพื่อเตรียมสร้างแอปพลิเคชันเว็บเชิงพื้นที่
ปัญหาของฉันคือ: เมื่อฉันพยายามนำเข้าข้อมูล GSHHS ไปยัง PostGIS นั้นจะถูกปฏิเสธเนื่องจากรูปหลายเหลี่ยมชายฝั่งไม่ได้รับการพิจารณาว่า 'ถูกต้อง' โดยเฉพาะฉันได้รับข้อความแสดงข้อผิดพลาดที่อธิบายถึงรูปหลายเหลี่ยม (แต่ไม่ทั้งหมด) ของแนวชายฝั่งว่าเป็น 'วงไม่ปิด'
ฉันเข้าใจว่าข้อผิดพลาดนี้พยายามบอกฉันว่าจุดแรกและจุดสุดท้ายของรูปหลายเหลี่ยมนั้นไม่เหมือนกัน อย่างไรก็ตามสิ่งนี้ไม่เป็นความจริง ฉันได้ตรวจสอบการเป็นตัวแทนของ WKT ของรูปหลายเหลี่ยมหลายอันและถูกต้องแล้ว แน่นอนพวกเขาเริ่มต้นและสิ้นสุดด้วยการประสานงานเดียวกัน
รูปหลายเหลี่ยมจะถูกแยกออกจาก shapefiles โดยใช้ไลบรารี OGR และส่งออกแต่ละรูปหลายเหลี่ยมไปยัง WKT ฉันลองสร้างรูปหลายเหลี่ยมใหม่ผ่าน Shapely และทดลองกับ WKB แต่ก็ไม่มีประโยชน์ ฉันได้รับสามารถที่จะโหลดข้อมูลเดียวกันใน PostGIS เป็นตาราง MULTIPOLYGON โดยใช้รถตักดิน shp2pgsql
ฉันสงสัยว่ามีใครบางคนที่นั่นหรือไม่:
(a) อาจใช้หนังสือเล่มเดียวกันติดอยู่ที่ปัญหาเดียวกันและมีคำตอบสำหรับฉันหรือไม่
(b) พบปัญหาที่คล้ายกันและพบวิธีแก้ปัญหาหรือไม่
(c) ไม่ปฏิบัติตามนั้นมีคำแนะนำ 'แนวปฏิบัติที่ดีที่สุด' บางประการเพื่อรับรองความถูกต้องของรูปทรงเรขาคณิตก่อนที่จะโหลดลงใน PostGIS
อัปเดต: เพื่อนร่วมงานแนะนำว่าปัญหา 'วงไม่ปิด' อาจเป็นอาการของปัญหาอื่น เป็นไปได้ว่าการกำหนดค่า PostGIS / PostgreSQL ของฉันมีข้อ จำกัด ด้านขนาด (เมื่อมีการทำธุรกรรมแทรก, ได้รับแพ็คเก็ต, สตริงข้อความ ฯลฯ )
ในขณะที่ฉันใช้รูปหลายเหลี่ยม WKT ที่ยาวมาก PostGIS อาจตัดมันเร็วเกินไปที่จะทำให้รูปหลายเหลี่ยมแต่ละอันเสร็จสมบูรณ์ ฉันจะทดสอบในวันพรุ่งนี้ แต่ฟังดูน่าจะเป็น การแทรกเส้นขอบประเทศของฉันยอมรับเฉพาะบางระเบียนเท่านั้นไม่ใช่อื่น ๆ จากความทรงจำรูปทรงที่ยอมรับนั้นมีไว้สำหรับประเทศเกาะเล็ก ๆ อย่างแอนติกา (และอาจเป็นตัวแทน WKT สั้น ๆ )
ดังนั้นนี่อาจเป็นเธรดผู้ดูแลระบบฐานข้อมูล PostGIS มากกว่าเป็นเธรดเรขาคณิตที่ไม่ถูกต้อง