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”
เลือก Tools จะมีหน้าต่าง Geoprocessing ขึ้นมา พิมพ์ค้นหาด้วยคำว่า Check Geometry
หรือ จะอยู่ที่ Data Management > Feature > Check Geometry
(พิมพ์หาเอา ง่ายกว่า เชื่อเต๊อะ)
ใน 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
ใน parameters ช่อง input เลือกชั้นข้อมูลที่ต้องการจะ repair geometry
(แนะนำให้ติ๊กถูกต้องช่อง Delete Features with NULL Geometry ด้วย)
Validation Method มีสองตัวเลือก ESRI กับ OGC เลือกที่ต้องการ แล้วกด RUN
อาจจะต้องทำมากกว่า 1 รอบ ถ้ายังมี Warning
สรุป Repair Geometry จำเป็นหรือไม่?
โดยทั่วไป ถ้าเพิ่งรับข้อมูล Shapefile มาใหม่ ก่อนที่จะทำอะไร แนะนำให้จัดการเรื่อง Repair Geometry นี้ก่อน ท่านคงไม่อยากสั่ง calculate geometry แล้วได้ผลลัพธ์ที่ผิดพลาดใช่หรือไม่? ส่วนการ Check Geometry ให้ทำถ้าท่านต้องการรู้ว่ามีอะไรผิดพลาดบ้าง แต่โดยทั่วไป อาจจะไม่ต้อง Check ก็ได้ ข้ามไป Repair เลยทีเดียว