ฉันได้มองหาคำตอบสำหรับคำถามเดียวกันเป็นเวลาที่จะเอาชนะปัญหารูปหลายเหลี่ยมบัฟเฟอร์ที่ทับซ้อนกันแบนราบและคิดว่าพบวิธีแก้ปัญหาที่มีประสิทธิภาพ ในความเป็นจริง @ ความเห็นของ Whuber
โดยหลักการแล้วเซนทรอยด์, ปริมณฑลและพื้นที่อาจยังไม่สามารถระบุรูปหลายเหลี่ยมที่ไม่ซ้ำกันได้
คำตอบของ @ Paul คือแรงผลักดันหลักที่ทำให้ฉันพยายามต่อไป มันใช้โอเปอเรเตอร์ARE_IDENTICAL_TOของเครื่องมือ Spatial Join เนื่องจากมีประสิทธิภาพมากที่สุดในบรรดาเครื่องตรวจจับที่เหมือนกัน นี่คือขั้นตอน:
- ทำการรวบรวมข้อมูลที่คุณป้อนให้มีรูปร่างที่แตกต่างกัน
- สร้างสนามเพื่อให้หุ่น / คัดลอก (เช่นชนิดของฟิลด์ OID) objectId เดิมแถวพูดEX_OID ;
- เรียกใช้ Spatial Join ในคลาสคุณลักษณะที่ต้องการประมวลผลเป็นทั้งเป้าหมายและเข้าร่วมพารามิเตอร์คุณสมบัติ ตรวจสอบให้แน่ใจว่าการแมปฟิลด์ของเขตจำลอง (ปรากฏสองครั้ง) ที่สร้างไว้ก่อนหน้านี้มีกฎการผสานของ FIRST (ซึ่งเป็นค่าเริ่มต้นหรือเลือก LAST ส่วนอื่น ๆ อาจไม่ให้ผลลัพธ์ที่ต้องการเนื่องจากใช้การสรุปของการทับซ้อน) ขั้นตอนนี้เลือก OBJECTID รูปทรงทั่วไปที่อยู่ด้านบนของการทับซ้อนกันทั้งหมด (เช่น FIRST);
ขั้นตอนต่อไปนี้สามารถทำได้สองวิธีด้วย Python หรือโดยไม่ต้อง:
ด้วย PYTHON
- ใช้รหัสด้านล่างเพื่อดึงรหัสเฉพาะที่เราต้องการค้นหา:
print tuple(set([row.getValue("EX_OID_1") for row in arcpy.SearchCursor("Output_of_the_Spatial_Join_Operation")]))
.
โปรดระวังว่าฉันกำลังใช้สำเนาที่สองของฟิลด์ OID จำลองซึ่งเป็น EX_OID_1 ในกรณีของฉัน
- คัดลอกเอาท์พุทของรหัสนี้และวางนี้ลงในนิยาม
แบบสอบถาม
OBJECTID IN (<PASTE_COPIED_VALUES_HERE>)
ของชั้นคุณลักษณะเดิมประมวลผลเป็น ผลลัพธ์จะแสดงให้คุณเห็นถึงคุณสมบัติแบบรวมของส่วนที่ทับซ้อนกัน มีข้อ จำกัด ด้านขนาดที่นี่แม้ว่า 30,000 อักขระ ในการเอาชนะปัญหานี้คุณต้องทำตามขั้นตอน "ไม่มีงูเหลือม"
โดยไม่ต้อง PYTHON
ใช้เครื่องมือความถี่เพื่อแสดงรายการค่าที่ไม่ซ้ำกันในสำเนาที่สองของเขตข้อมูล OID จำลองซึ่งเป็น EX_OID_1 ในกรณีของฉัน
เข้าร่วมฟิลด์OBJECTIDสุดท้ายของคลาสคุณลักษณะดั้งเดิมด้วยผลลัพธ์ของEX_OID_1ของเครื่องมือความถี่โดยเลือกตัวเลือก "เก็บเฉพาะระเบียนที่ตรงกัน"