ด้านล่างเป็นรหัสที่ฉันใช้เพื่อทำซ้ำปุ่ม "ตารางที่เกี่ยวข้อง" ใน ArcMap ใน ArcMap ปุ่มนั้นจะเลือกคุณสมบัติในคลาสหรือตารางคุณลักษณะหนึ่งโดยยึดตามการเลือกคุณสมบัติในคลาสหรือตารางคุณสมบัติอื่นที่เกี่ยวข้อง
ใน ArcMap ฉันสามารถใช้ปุ่มนั้นเพื่อ "ดัน" การเลือกของฉันไปยังตารางที่เกี่ยวข้องในไม่กี่วินาที ฉันไม่สามารถค้นหาสิ่งใด ๆ ที่อยู่ใน arcpy ที่ทำซ้ำปุ่มดังนั้นฉันจึงใช้ลูปซ้อนกันเพื่อทำงานเดียวกัน
รหัสด้านล่างวนผ่านตารางของ "การรักษา" สำหรับการรักษาแต่ละครั้งมันจะวนรอบรายการของ "ต้นไม้" เมื่อพบคู่ที่ตรงกันระหว่างฟิลด์ ID ของการรักษาและต้นไม้การเลือกจะเกิดขึ้นในเลเยอร์ต้นไม้ เมื่อพบการจับคู่สำหรับการรักษารหัสจะไม่ดำเนินการค้นหาเลเยอร์ต้นไม้สำหรับการแข่งขันเพิ่มเติม มันจะกลับไปที่ตารางการรักษาเลือกการรักษาถัดไปและค้นหาอีกครั้งผ่านคลาสคุณลักษณะทรี
โค้ดนั้นใช้งานได้ดี แต่มันช้ามาก "ตารางการรักษา" ในกรณีนี้มี 16,000 บันทึก คลาสคุณลักษณะ "tree" มี 60,000 รายการ
มีวิธีอื่นที่มีประสิทธิภาพมากกว่าในการสร้างสิ่งที่ ESRI ทำเมื่อผลักการเลือกจากตารางหนึ่งไปยังอีกตารางหนึ่งหรือไม่ ฉันควรสร้างดัชนีสำหรับตารางหรือไม่ หมายเหตุ: ข้อมูลนี้ถูกเก็บไว้ใน SDE
# Create search cursor to loop through the treatments
treatments = arcpy.SearchCursor(treatment_tv)
treatment_field = "Facility_ID"
for treatment in treatments:
#Get ID of treatment
treatment_ID = treatment.getValue(treatment_field)
# Create search cursor for looping through the trees
trees = arcpy.SearchCursor(tree_fl)
tree_field = "FACILITYID"
for tree in trees:
# Get FID of tree
tree_FID = tree.getValue(tree_field)
if tree_FID == treatment_FID:
query = "FACILITYID = " + str(tree_FID)
arcpy.SelectLayerByAttribute_management(tree_fl, "REMOVE_FROM_SELECTION", query)
break