แก้ไขข้อผิดพลาดทางเรขาคณิตใน QGIS?


31

ฉันกำลังทำงานกับข้อมูลการเป็นเจ้าของในระดับเขตของสหรัฐอเมริกา ฉันมีหนึ่งรูปร่างไฟล์ต่อเขตที่มีหลายพันห่อภาษี ฉันต้องละลายรูปหลายเหลี่ยมที่แทนพัสดุที่เป็นของบุคคลเดียวกัน เมื่อ Shapefile ไม่สะอาดเครื่องมือ "ละลาย" ใน QGIS ดูเหมือนจะไม่ทำงาน แต่จะหยุดทำงาน ฉันต้องแก้ไขปัญหาความถูกต้องตามรูปทรงเรขาคณิตก่อนโดยใช้เครื่องมือ "ตรวจสอบความถูกต้องทางเรขาคณิต" อย่างไรก็ตามฉันมีข้อผิดพลาดหลายร้อยครั้ง ใช้เวลาในการแก้ไขด้วยตนเอง มีกลยุทธ์อื่นใดที่สามารถช่วยฉันได้บ้างไหม?

ฉันใช้ QGIS 2.4.0


2
คุณลองนำเข้าไฟล์ในหญ้าแล้วใช้ v.clean หรือไม่ มันอาจจะแก้ไขข้อผิดพลาดของคุณได้มาก
Sergio

คำตอบ:


20

ลองเรียกใช้บัฟเฟอร์ที่บอบบางบนรูปหลายเหลี่ยม การตั้งค่า -0.001 ถ้า CRS ของคุณเป็น UTM น่าจะลองดู เวกเตอร์ | BUFFER


4
ฉันลองใช้วิธีการแก้ปัญหา "บัฟเฟอร์" ครั้งแรกที่แนะนำโดย BillW มันแก้ไขปัญหาของฉัน 97% ซึ่งเพียงพอสำหรับฉันแล้ว ฉันสามารถทำงานให้เสร็จด้วยตนเอง การใช้บัฟเฟอร์ขนาดเล็กบนรูปหลายเหลี่ยมจะไม่สร้างปัญหาให้ฉันตามถนนที่ฉันเชื่อ แต่ฉันสามารถเห็นบางกรณีที่การใช้ ST_MakeValid หรือลอง v.clean อาจดีขึ้นและแม่นยำยิ่งขึ้น
Bap

18

เมื่อฉันมีชั้นมีข้อผิดพลาดที่ผมทำงานได้ตามปกติมันผ่านฟังก์ชั่น GRASS v.cleanในการประมวลผลของกล่องเครื่องมือ แม้ว่าฉันจะไม่เคยคิดออกว่าเครื่องมือไหนดีที่สุดในกรณีนี้ แต่โดยปกติฉันเลือกฟังก์ชั่นbpolตรงนั้น

แม้อาจจะมีความสำคัญมากขึ้นก็คือการตั้งค่าพารามิเตอร์ขั้นสูงสำหรับความอดทนแน็ปและพื้นที่นาที ขึ้นอยู่กับเลเยอร์ฉันมักจะเลือก 0.1 ถึง 2 เมตรสำหรับการหักมุมและอีก 10 ตารางเมตรสำหรับพื้นที่ขั้นต่ำ

snapping เช่นจัดเรียงขอบเขตซึ่งหมายถึงเป็นเส้นแบ่งที่ใช้ร่วมกัน แต่มีออฟเซ็ตเล็ก ๆ พื้นที่ขั้นต่ำกำจัดเศษเล็ก ๆ จากจุดตัดเป็นต้น

เมื่อใช้ร่วมกับ bpol สิ่งนี้จะแก้ไขข้อผิดพลาดทั้งหมดโดยไม่ต้องเปลี่ยนโทโพโลยีมากเกินไป


11

คุณสามารถใช้ ST_MakeValid โดยตรงใน QGIS เพิ่มปลั๊กอิน lwgeom ที่เพิ่มผู้ให้บริการ lwgeom เพื่อประมวลผลกล่องเครื่องมือ => คุณสามารถใช้ MakeValid โดยตรงบนชั้นที่โหลดของคุณโดยไม่ต้องแปลงใน postigs / spatialite Postgis / spatialite ใช้ liblwgeom เดียวกันเพื่อทำ ST_MakeValid

คุณต้องติดตั้ง liblwgeom และกำหนดค่าผู้ให้บริการประมวลผลให้ชี้ไปที่มัน

ผู้ให้บริการ lwgeom สามารถพบได้ในช่วงทดลอง: https://plugins.qgis.org/plugins/processinglwgeomprovider/


3
ฉันเพิ่งเปิดตัวผู้ให้บริการการประมวลผลรุ่นใหม่เพื่อใช้งานกับการประมวลผล qgis เวอร์ชันปัจจุบัน (กำลังดำเนินการ refactoring)
Luigi Pirelli

2
สวัสดี @LuigiPirelli ฉันพยายามแก้ไขปัญหาที่คล้ายกันโดยใช้ปลั๊กอิน Lwgeom แต่มันล้มเหลวเสมอในระหว่างการดำเนินการและฉันต้องเริ่ม QGis อีกครั้งอีกครั้ง มีวิธีใดบ้างที่ฉันสามารถแก้ไขได้ ขอบคุณ
Alex Fernández Poulussen

1
ยากที่จะพูดโดยไม่มีบริบทการทำงานมากขึ้น Btw ตั้งแต่ปี 2014 มีเครื่องมือซ่อมแซมรูปทรงเรขาคณิตเพิ่มเติมใน qgis โดยปกติแล้วความผิดพลาดใน lwgeom เป็นปัญหาแนว (ติดตั้งสกปรก) ในวัตถุที่โหลดหรือใช้ร่วมกัน คุณทดสอบเครื่องมืออื่น ๆ หรือไม่?
Luigi Pirelli

1
สิ่งนี้ใช้กับ QGIS 2.18 ได้หรือไม่? ดูเหมือนจะไม่ทำงานในรุ่น QGIS ของฉันgithub.com/faunalia/processinglwgeomprovider
RutgerH

1
เพียงแค่อัปเดต ... ตั้งแต่เวลาที่ QGIS3.x มีอัลกอริธึมการแก้ไขพื้นฐานพีชคณิตดั้งเดิมซึ่งเป็นตัวห่อหุ้มของขั้นตอนวิธี MakeValid ของ GEOS lwgeom ไม่จำเป็นต้องใช้ db
Luigi Pirelli

5

การบันทึกข้อมูลลงใน PostGIS และทำงาน ST_MakeValid สามารถช่วยhttp://postgis.refractions.net/docs/ST_MakeValid.html Spatialite มี ST_MakeValid ยังhttp://www.gaia-gis.it/gaia-sins/spatialite-sql-latest.html


2

ฉันเพิ่งพบปัญหาที่คล้ายกันใน qgis ฉันมีโพลีเริ่มฉายอย่างไม่ถูกต้อง ฉันใช้ Grass fuction v.clean ในเครื่องมือประมวลผลตามที่ Bernd แนะนำ แม้ว่า bpol ไม่ทำงานดูเหมือนว่าจะได้รับการแก้ไขด้วยฟังก์ชันการแยก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.