ค้นหาความแตกต่างระหว่าง Shapefiles โดยใช้ ArcGIS for Desktop หรือไม่


12

ทุกเดือนฉันต้อง QA / QC ข้อมูลถนนสำหรับเขตทั้งหมด (มากกว่า 47,000 บันทึก) ขั้นตอนแรกคือการเปรียบเทียบสองไฟล์ ปัจจุบันฉันใช้เครื่องมือที่สร้างขึ้นเองผ่าน VBA เมื่อประมาณ 5 ปีที่แล้ว มันทำงานเปรียบเทียบสองไฟล์และรายงานความแตกต่างกลับมาตามปัจจัยสองสามประการ (เพิ่มบันทึก, ลบเรคคอร์ด, เปลี่ยนที่อยู่, เปลี่ยนเมือง, เปลี่ยนความยาวเซ็กเมนต์ / ยอดจุดเปลี่ยน) จากนั้นฉันจะส่งออกสิ่งเหล่านี้ไปยังไฟล์รูปร่างส่วนบุคคล นอกจากนี้เครื่องมือทำงานได้ArcGIS 9.3แต่จะไม่ทำงานอีกต่อไปArcGIS 10.1

เครื่องมือใช้งานได้ดี แต่ใช้เวลาประมาณหนึ่งชั่วโมงจึงจะเสร็จสมบูรณ์

ฉันเริ่มทำงานเพื่อหวังว่าจะได้พัฒนาเครื่องมือนี้เพื่อเพิ่มประสิทธิภาพ ผมมองเป็นความหลากหลายของวิธีการรวมทั้งและCompare Feature ToolSelect by Location

เครื่องมือทั้งสองนี้ทำงานได้เร็วขึ้นอย่างมาก แต่ดูเหมือนว่าพวกเขาจะไม่จับทุกสิ่งที่ฉันต้องการ ปัญหาใหญ่ที่ฉันมีCompare Feature Toolคือฉันไม่สามารถเลือกฟิลด์ที่จะเปรียบเทียบ มันเริ่มต้นที่ ObjectID เมื่อฉันต้องการเปรียบเทียบโดย Segment_ID ไม่มีตัวเลือกให้เลือก

ใครบ้างมีทางออกหรือแนวคิดที่ดีเกี่ยวกับวิธีการเปรียบเทียบแบบเต็มเช่นที่ฉันอธิบาย


ด้วยเหตุผลบางอย่าง ArcGIS ไม่รู้จักการเข้าร่วมที่ฉันพยายามทำตามคำตอบของ RyanDalton

แต่

จากคำแนะนำของการเข้าร่วมฉันได้คิดหาวิธีเพิ่มระเบียนและลบความแตกต่างของระเบียนในสองไฟล์โดย:

  1. การเข้าร่วม Shapefile เดือนก่อนหน้ากับ Shapefile เดือนปัจจุบันผ่านฟิลด์ Segment_ID
  2. ดำเนินการค้นหาคำจำกัดความที่ Segment_ID IS NULL
  3. การส่งออกไปยังรูปร่างไฟล์ใหม่ (เพิ่มคุณสมบัติ)

จากนั้นฉันจะย้อนกลับการเข้าร่วมและค้นหาคุณสมบัติที่ถูกลบ

ยังคงทำงานในวิธีการค้นหาความแตกต่างอื่น ๆ ที่ระบุไว้แล้วสตริงพวกเขาทั้งหมดเข้าด้วยกันในแบบจำลอง


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

ฉันจะใส่มันทั้งหมดในแบบจำลองและหวังว่ามันจะทำงานได้ดีเช่นกัน

คำตอบ:


11

ด้วยCompare Feature Tool, คุณควรเลือกSegment_IDเขตข้อมูลของคุณเป็นเขตข้อมูลเรียงลำดับในกล่องโต้ตอบ

เขตข้อมูล [sort] หรือ [[] ใช้เพื่อจัดเรียงระเบียนในตารางฐานข้อมูลเข้าและตารางทดสอบอินพุต เร็กคอร์ดจะเรียงตามลำดับจากน้อยไปหามาก การเรียงลำดับตามฟิลด์ทั่วไปทั้งในฟีเจอร์ฐานอินพุตและฟีเจอร์การทดสอบอินพุตช่วยให้แน่ใจว่าคุณกำลังเปรียบเทียบแถวเดียวกันจากแต่ละชุดข้อมูลอินพุต

หากคุณต้องการที่จะได้รับข้อมูล segment_ID เป็นส่วนหนึ่งของตารางผลลัพธ์ของคุณลองเข้าร่วมการแสดงผลCompare Featureตารางกับแหล่งที่มาของคุณTest Tableบนcf.Object_ID=tt.Object_IDแล้วส่งออกตารางเข้าร่วมกับ segment_ID ของคุณ

คุณสามารถนำสิ่งนี้ไปเป็นแบบจำลองเพื่อการทำซ้ำได้ง่ายขึ้น


ฉันได้ทำสิ่งนี้อย่างไรก็ตามตารางที่สร้างขึ้นผ่านเครื่องมือเปรียบเทียบไม่รวมเขตข้อมูล Segment_ID (ซึ่งเป็นตัวระบุที่ไม่ซ้ำกัน) แต่มันแสดงรายการ objectID ซึ่งไม่ได้ทำอะไรให้ฉันดี
Craig

อัปเดตคำตอบของฉันเพื่อสะท้อนการSegment_IDเข้าสู่ตารางผลลัพธ์ของคุณ
RyanKDalton

การเพิ่มการรวมทำให้ ArcMap หยุดทำงานทุกครั้ง กลับไปที่กระดานวาดภาพ
Craig

1

ในประสบการณ์ของฉันฟีเจอร์การเปรียบเทียบใช้ FID หรือ ObjectID เป็นพื้นฐานของการเปรียบเทียบเสมอแม้ว่า segment_id จะถูกเลือกเป็นฟิลด์เรียงลำดับ Shapefile FID จะถูกรีไซเคิล (จัดลำดับใหม่) ดังนั้นหลังจากแก้ไขน้อยมากหากไม่ใช่ FID ทั้งหมดจะแตกต่างกันไปตามภูมิภาคที่เกี่ยวข้อง พวกเขาจะมีข้อผิดพลาดในการเปรียบเทียบคุณสมบัติ "จริง" หากคุณใช้ ObjectID จาก GeoDatabase หรือ GISquirrel ID จะไม่ถูกนำไปรีไซเคิลและคุณสามารถใช้เครื่องมือนี้ได้ คุณต้องเก็บฐานข้อมูลไว้ในช่วงระยะเวลาหนึ่งดังนั้น ObjectIds จะไม่ถูกจัดเรียงใหม่

ไม่ว่าคำอธิบายเรียงฟิลด์ในเครื่องมือ GP จะทำให้เข้าใจผิดมากน้อยเพียงใด เครื่องมือนี้จะยิ่งใหญ่ถ้าพื้นฐานของการเปรียบเทียบอาจเป็น segment_ID

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