วิธีที่ดีที่สุดในการรับชื่อ OBJECTID คืออะไร


13

วิธีที่ดีที่สุดในการรับชื่อ OBJECTID ของคลาสคุณลักษณะคืออะไร

ฉันรู้ว่าคุณสามารถใช้ "OID @" ในเคอร์เซอร์เพื่อรับฟิลด์ แต่คุณสามารถรับชื่อจากที่นั่นได้หรือไม่?

ฉันกำลังเขียนสคริปต์และต้องคำนึงถึงชื่อ OBJECTID ที่ต่างกันเช่น OBJECTID_2, OBJECTID_12, FID เป็นต้นซึ่งจะใช้ในการสืบค้น

ใช้คำอธิบายเป็นวิธีเดียวที่จะได้ชื่อมาหรือไม่

ตัวอย่างเช่น:

oid_field = [field.name for field in arcpy.ListFields("FC") if field.type == "OID"]

ฉันแค่สงสัยว่ามีวิธีอื่น

ขอบคุณ

คำตอบ:


23

ฉันจะบอกว่าการใช้คำอธิบายที่ดีที่สุด

oid_fieldname = arcpy.Describe(fc).OIDFieldName

ค่อนข้างตรงไปตรงมา มิฉะนั้นคุณสามารถกรองโดยตรงเมื่อคุณใช้ listFields ดังนั้นคุณสามารถลอง

oid_fieldname = arcpy.ListFields(fc,"","OID")[0].name

แต่สิ่งนี้จะส่งคืนข้อผิดพลาดหากไม่มี oidField (ไม่น่าเป็นไปได้ แต่ ... )


1
ฉันเห็นด้วยว่ามันตรงไปตรงมามาก ฉันเพิ่งสังเกตเห็นว่าการบรรยายสามารถช้าลงเล็กน้อย ขอบคุณ
ianbroad

ListFields เร็วกว่าคำอธิบายหรือไม่
ผู้เรียน

จากประสบการณ์ของฉันไม่พวกมันทั้งคู่ค่อนข้างช้า ... ฉันได้ทดสอบขนาดกลางสองแบบที่แตกต่างกัน) gdb และผลลัพธ์คือ ~ 6.4 สำหรับ Describe และ ~ 7.4 สำหรับ ListFields (จากศูนย์) หาก fc อยู่ในหน่วยความจำแล้วเวลาจะอยู่ที่ ~ 1.6 และ 2.5 ตามลำดับ
radouxju
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.