อัลกอริทึมเพื่อแก้ไขข้อผิดพลาดทอพอโลยีในแอพซอฟต์แวร์ GIS


19

คำถามที่เกี่ยวข้องที่นี่

ฉันสังเกตเห็นว่าการรับรองความถูกต้องของทอพอโลยีเป็นสิ่งจำเป็นสำหรับแอปพลิเคชั่น GIS เนื่องจากข้อมูลจากการดำเนินการบูลีนของผู้ใช้หรือโพลิกอนอาจมีปัญหาโทโพโลยีอย่างรุนแรง (แม้ว่ารูปหลายเหลี่ยมจะดูถูกต้อง)

รูปหลายเหลี่ยมที่สะอาดเป็นวิธีที่ Geo Wizards ทำเพื่อรับรองความถูกต้องของโทโพโลยี

Arcgis ยังมีคำสั่งให้ล้างเศษไม้

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


2
มีอีกเครื่องมือ ArcGIS GP ที่เรียกว่า "รวม" ที่มีคำอธิบายสั้น ๆ ของอัลกอริทึมในทรัพยากรช่วยเหลือ: help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//… - อย่างไรก็ตามมัน ไม่ได้ระบุไว้อย่างดี
Allan Adair

ลิงก์ของคุณเองจาก Geo Wizards แสดงถึงอัลกอริธึมที่ค่อนข้างดี คุณคาดหวังอะไรอีก
johanvdw

@hananvdw สิ่งที่ลิงค์แสดงไม่ใช่อัลกอริทึม แต่เป็นขั้นตอนในการใช้ซอฟต์แวร์เพื่อเปิดใช้งานอัลกอริทึมในการทำความสะอาดรูปหลายเหลี่ยม ความแตกต่างระหว่างทั้งสองมีขนาดใหญ่มาก
Graviton

1
การค้นหาอัลกอริธึมการทำ Planarizationอาจทำให้บางสิ่งมีประโยชน์
Kirk Kuykendall

@ KirkKuykendall ฉันไม่ทราบว่าการวางระนาบจะช่วยได้อย่างไร ฉันคิดว่ามันสามารถนำไปใช้กับทฤษฎีกราฟได้มากกว่าการใช้รูปทรงเรขาคณิตการคำนวณแบบนี้?
Graviton

คำตอบ:


7

การค้นหาอย่างรวดเร็วของ Google Scholar เปิดบทความต่อไปนี้ขึ้น:


+1 ดูเหมือนกระดาษที่คิดดี ฉันหวังว่าผู้แต่งจะนิยามความหมายของ "ฉาก"
Kirk Kuykendall

ขอบคุณฉันได้เพิ่มบทความที่สอง (โดยหนึ่งในผู้เขียนคนเดียวกัน) แต่ในตอนแรกฉันยังไม่สามารถบอกได้ว่า 'ฉาก' คืออะไร
blah238

10

คุณสามารถค้นหาคำอธิบายโดยละเอียดเกี่ยวกับขั้นตอนการทำความสะอาดโทโพโลยีในซอร์สโค้ดและคู่มือของ GRASS GIS: http://grass.osgeo.org/programming7

ขั้นตอนการทำความสะอาดถูกเขียนไว้ที่นี่: http://trac.osgeo.org/grass/browser/grass/trunk/vector/v.clean

ตัวอย่างสำหรับรูทีนพื้นฐาน:

แนวคิดพื้นฐานมีการอธิบายไว้ที่นี่: http://grass.osgeo.org/programming7/vectorlib.html#vlibTopoExamples


4

แม้ว่าจะไม่ใช่อัลกอริทึม แต่หน้านี้ให้ข้อมูลบางอย่างเกี่ยวกับข้อผิดพลาดของโทโพโลยีประเภท "เรขาคณิตตรวจสอบ" ที่ค้นหาในเครื่องมือ ArcGIS ตรวจสอบเรขาคณิต / ซ่อมเรขาคณิต http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000003v000000

Null geometry: The record will be deleted from the feature class. To keep records with null geometry, uncheck the tool dialog option Delete Features with    Null Geometry, or in scripting set the delete_null parameter to KEEP_NULL.
Short segment: The geometry's short segment will be deleted.
Incorrect ring ordering: The geometry will be updated to have correct ring ordering.
Incorrect segment orientation: The geometry will be updated to have correct segment orientation.
Self intersections: the areas of overlap in a polygon will be dissolved.
Unclosed rings: The unclosed rings will be closed by connecting the ring's end points.
Empty parts: The parts that are null or empty will be deleted.
Duplicate vertex: One of the vertices will be deleted.
Mismatched attributes: The Z or M coordinate will be updated to match.
Discontinuous parts: Multiple parts will be created from the existing discontinuous part.
Empty Z values: The Z value will be set to 0.

3

ฉันไม่คิดว่าจะมีวิธีการแก้ไขข้อผิดพลาดทอพอโลยีโดยอัตโนมัติในชุดข้อมูลที่กำหนด บางสิ่งเช่น dangles อาจสามารถแยกแบบอัตโนมัติแล้วทำการลบผลลัพธ์ที่ค้างไว้ แต่แล้วเศษไม้ระหว่างรูปหลายเหลี่ยมสองรูปที่อยู่ติดกันรูปหลายเหลี่ยมแบบใดที่ควรจะรวมเข้าด้วยกันกับรูปสี่เหลี่ยมขนมเปียกปูนที่จะกำจัดมัน? คำถามประเภทนั้นดูเหมือนว่าต้องการอินพุตของผู้ใช้ ในการระบุข้อผิดพลาดอย่างไรก็ตามฉันคิดว่าอัลกอริทึมใช้การแปรผันของ DE-9IM บางอย่าง ฉันคิดว่าทางออกที่ดีที่สุดของคุณคือดูที่ Java Topology Suite (JTS) โดยเฉพาะคลาสกราฟเรขาคณิต ฉันคิดว่าสิ่งนี้สามารถใช้เพื่อสร้างส่วนประกอบต่าง ๆ ของรูปทรงเรขาคณิตที่เฉพาะเจาะจงและจากนั้นใช้เพื่อตรวจสอบปัญหาโทโพโลยีที่แตกต่างกัน ฉันไม่เคยทำมัน แต่ดูเมื่อไม่นานมานี้

หากคุณไม่คุ้นเคยกับ Java, GEOS คือรส C ++ ของ JTS หรือ NetTopologySuite คือ C #

หวังว่าจะช่วย


1

เอกสารคำสั่งแบบบูรณาการของ ArcGIS ได้ถูกกล่าวถึงแล้ว แต่ ESRI ยังได้ผลิตเอกสารทางเทคนิคการทำความเข้าใจการประมวลผลทางเรขาคณิตใน ArcGIS การจัดทำเอกสารตรรกะการประมวลผลที่ใช้โดยบูรณาการ (และการดำเนินการทางภูมิศาสตร์ นี่คือการเพ่งความสนใจไปที่การหลีกเลี่ยงและการแก้ไขข้อผิดพลาดทอพอโลยีที่เกิดขึ้นจากกระบวนการทางภูมิศาสตร์ มีการอ้างอิงเล็กน้อยที่อาจมีประโยชน์

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