You are currently viewing Repair Geometry

Repair Geometry

Repair Geometry คืออะไร และจำเป็นหรือไม่? เรื่องนี้คงต้องอธิบายตั้งแต่คำว่า Geometry คืออะไร

นิยาม: Geometry หรือรูปทรงเรขาคณิต ในทาง GIS จะหมายถึง ความสัมพันธ์เชิงพื้นที่ จะเป็น จุด เส้น และพื้นที่ (point, line, polygon) เพื่อแสดงองค์ประกอบเชิงพื้นที่ของลักษณะทางภูมิศาสตร์ที่มีขอบเขตและตำแหน่งชัดเจน เช่น ตำแหน่งสถานีตำรวจ แม่น้ำ เส้นถนน หรือ ขอบเขตแปลงที่ดิน เป็นต้น

อ่านเพิ่มเติม What is Geometry ในเว็บไซต์ ESRI

เมื่อก่อน เคยเขียนเรื่องการตรวจสอบไปแล้วครั้งหนึ่ง โปรดอ่านเรื่อง invalid geometry

 เนื้อหาในตอนนี้ สามารถรับชมจากวิดีโอนี้ได้

แล้วทำไมเราต้องซ่อมแซม (repair) geometry? สาเหตุก็เพราะว่าซอฟต์แวร์ทาง GIS ไม่ว่าจะเป็น ArcGIS หรือ QGIS สร้างขึ้นโดยมีสมมติฐานว่ารูปทรงเรขาคณิตเป็นไปอย่างถูกต้อง ตามที่ควรจะเป็น (เช่น สี่เหลี่ยม มีจุดสี่จุด เป็นต้น)

 ถ้า “ข้อมูล” ไม่เป็นไปตามที่ควรจะเป็น จะเกิดข้อผิดพลาดดำเนินการไม่สำเร็จ หรือการดำเนินการอาจสำเร็จ แต่ให้ผลลัพธ์ที่ไม่ถูกต้อง

ข้อผิดพลาดต่าง ๆ เกิดขึ้นได้ทุกขณะ แม้ว่าจะมีการทำงานรอบคอบและระมัดระวังอย่างดี ก็ยังมีโอกาสเกิดความพลาดพลั้งได้ตลอด ไฟล์ dbf อาจจะโดนแก้ไขได้โดยไม่ตั้งใจ ท่านอาจนำ shapefile ไปทำงานในซอฟต์แวร์ หรือ อาจจะใช้คำสั่งทาง sql หรือ dbms ซึ่งส่งผลกระทบต่อ geometry โดยที่อาจจะเป็น bug และไม่รู้ตัว

มีเหตุผลอีกมากมายหลายล้านประการที่ทำให้เกิด bad geometry เมื่อท่านใช้คำสั่งดำเนินการทาง geometry เช่น Feature Class To Geodatabase (นำ Feature Class เข้า GDB) คำสั่ง Append และอื่น ๆ กับFeature Class ที่มีปัญหาเรื่อง Geometry นี้ ทำให้เกิดการดำเนินการไม่สำเร็จหรือผลลัพธ์ผิดพลาดโดยไม่คาดคิด

ใน บล็อก นี้ จะใช้ ArcGIS Pro ในการทำตัวอย่าง แต่ท่านสามารถใช้ QGIS ในการตรวจสอบและแก้ไขได้เหมือนกัน

Check Geometry

ในกรณีที่ต้องการหาจุดผิดพลาดใน Geometry ท่านสามารถใช้งานเครื่องมือที่เรียกว่า Check Geometry เพื่อหาจุดบกพร่องได้

ใน ArcGIS Pro เครื่องมือ Check Geometry จะอยู่ใน geoprocessing ไปที่ ribbon “Analysis”

Analysis > Tools
Tools ใน Analysis

เลือก Tools จะมีหน้าต่าง Geoprocessing ขึ้นมา พิมพ์ค้นหาด้วยคำว่า Check Geometry

หรือ จะอยู่ที่ Data Management > Feature > Check Geometry

(พิมพ์หาเอา ง่ายกว่า เชื่อเต๊อะ)

Check Geometry
Geoprocessing Pane

ใน parameters ช่อง input เลือกชั้นข้อมูลที่ต้องการจะ ตรวจสอบ geometry

ช่อง output จะเป็นผลลัพธ์การตรวจสอบ ตั้งชื่อตามต้องการ

Validation Methods หรือ รูปแบบการตรวจสอบ จะมีให้เลือก 2 แบบ คือ ESRI กับ OGC

แบบ Esri จะใช้กระบวนการตรวจสอบที่เรียกว่า Esri Simplify method (อ่านรายละเอียดรูปแบบการตรวจสอบได้ในเว็บไซต์ของ ESRI) https://desktop.arcgis.com/en/arcobjects/latest/net/webframe.htm#ITopologicalOperator_Simplify.htm

OGC ย่อมาจาก Open Geospatial Consortium ของ opengeospatial.org ท่านสามารถอ่านรายละเอียดรูปแบบได้ที่ https://portal.opengeospatial.org/files/?artifact_id=25355

https://www.ogc.org/standards/sfa

รายละเอียดการตรวจสอบอ่านจากลิงก์ที่ให้ก็แล้วกันเนอะ

ผลลัพธ์ที่ได้ จะส่งออกเป็นตารางในชื่อที่ตั้งไว้ใน ช่อง output ซึ่งจะนำเข้าพื้นที่ทำงานใน ArcGIS อัตโนมัติ

ตาราง Output จะมีข้อมูลดังต่อไป:-

Rowid – เลขแถวธรรมดา ๆ นี่แหละ

OBJECTID – รหัสของ features

CLASS — ชั้นข้อมูลที่ตรวจสอบ

FEATURE_ID — ก็คือThe Feature ID หรือว่า FID (อาจจะเป็น Object ID หรือ OID กรณีที่ใช้ OID แทน) ของ feature ที่มีปัญหา

PROBLEM—ปัญหาที่ตรวจพบ

สำหรับข้อมูลที่เก็บไว้ใน enterprise database, enterprise geodatabase, GeoPackage หรือ  SpatiaLite database จะมีฟิลด์ TEXT_ID เพิ่มเข้ามา

เราสามารถ Add Join ข้อมูลของ shapefile ที่ตรวจสอบกับรายงานผล โดยใช้ FID เป็นตัวเชื่อม

กรณีที่ shapefile นั้นไม่มีข้อผิดพลาดทาง geometry เลย ก็จะส่งตารางว่าง ๆ มาให้ เห็นแล้ก็จะสบายใจ นอนหลับฝันดี

ปัญหาที่เกิดขึ้น จะแสดงเป็นข้อความ ยกตัวอย่างเช่น:-

Short segment –segment สั้นเกินกว่าที่จะรับได้ในระบบการอ้างอิง

Null geometry – มีข้อมูลแต่ไม่มีรูปร่าง หรือ ไม่มี geometry นั่นเอง

Incorrect ring ordering – การเรียงลำดับจุดหมายในวงรอบ วางลำดับไม่ถูกต้อง (เช่น รอบนอกวางเรียงตามเข็มนาฬิกา รอบในทวนเข็มนาฬิกา) เวลาเป็นมีการคำนวณพื้นที่ Area ของ polygon ที่เจอปัญหานี้ อาจจะได้ค่าติดลบมาได้

Incorrect segment orientation – การวางแนว segment แต่ละกลุ่มไม่สอดคล้องกัน

Self intersections — polygon intersect ตัวเอง ซึ่งไม่ควรจะเกิดขึ้น

Unclosed rings — segment สุดท้ายในวงรอบไม่บรรจบกับจุดแรก

Empty parts — geometry ที่มีหลายส่วน มีส่วนหนึ่งไม่มี geometry

Duplicate vertex — รูปร่างมี 2 ส่วนที่ตรงกันซ้อนกันอยู่

Mismatched attributes — ค่า z- หรือ m-coordinate ของเส้นไม่อยู่ที่จุดสุดท้ายของ segment ถัดไป

Discontinuous parts — ส่วนหนึ่งไม่เชื่อมต่อกัน

Empty Z values — ค่า vertices ไม่มีค่า z-value

Bad envelope — envelope ไม่ตรงกับค่า coordinate ของ  geometry.

Bad dataset extent—dataset ไม่มีข้อมูล ถ้าเห็น the FEATURE_ID มีค่าเป็น -1 ให้นึกถึงเรื่องนี้ไว้ก่อนก็ได้

เมื่อมีปัญหาพวกนี้ เราเลือกวิธีแก้ง่าย ๆ ด้วยการซ่อมแซม geometry

Repair Geometry

ใน ArcGIS Pro มีเครื่องมือสำหรับ Repair Geometry อยู่แล้ว ใน geoprocessing

ไปที่ ribbon “Analysis” เลือก Tools จะมีหน้าต่าง Geoprocessing ขึ้นมา พิมพ์ค้นหาด้วยคำว่า Repair Geometry

Repair Geometry
Repair Geometry

ใน parameters ช่อง input เลือกชั้นข้อมูลที่ต้องการจะ repair geometry

(แนะนำให้ติ๊กถูกต้องช่อง Delete Features with NULL Geometry ด้วย)

Validation Method มีสองตัวเลือก ESRI กับ OGC เลือกที่ต้องการ แล้วกด RUN

Repair Geometry
Repair Geometry

อาจจะต้องทำมากกว่า 1 รอบ ถ้ายังมี Warning

สรุป Repair Geometry จำเป็นหรือไม่?

โดยทั่วไป ถ้าเพิ่งรับข้อมูล Shapefile มาใหม่ ก่อนที่จะทำอะไร แนะนำให้จัดการเรื่อง Repair Geometry นี้ก่อน ท่านคงไม่อยากสั่ง calculate geometry แล้วได้ผลลัพธ์ที่ผิดพลาดใช่หรือไม่? ส่วนการ Check Geometry ให้ทำถ้าท่านต้องการรู้ว่ามีอะไรผิดพลาดบ้าง แต่โดยทั่วไป อาจจะไม่ต้อง Check ก็ได้ ข้ามไป Repair เลยทีเดียว