Apa cara terbaik untuk mendapatkan nama OBJECTID?


13

Apa cara terbaik untuk mendapatkan nama OBJECTID dari kelas fitur?

Saya tahu Anda bisa menggunakan "OID @" dalam kursor untuk mendapatkan bidang, tetapi bisakah Anda mendapatkan namanya juga?

Saya sedang menulis skrip, dan perlu mempertimbangkan berbagai nama OBJECTID, seperti OBJECTID_2, OBJECTID_12, FID, dll. Yang akan digunakan dalam kueri.

Apakah menggunakan Jelaskan satu-satunya cara untuk mendapatkan nama?

Sebagai contoh:

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

Saya hanya ingin tahu apakah ada cara lain.

Terima kasih.

Jawaban:


23

Saya akan mengatakan bahwa menggunakan deskripsi adalah yang terbaik

oid_fieldname = arcpy.Describe(fc).OIDFieldName

cukup mudah. Jika tidak, Anda bisa langsung memfilter saat menggunakan listFields, jadi Anda bisa mencoba

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

tapi ini akan mengembalikan kesalahan jika tidak ada oidField (tidak mungkin, tapi ...)


1
Saya setuju itu sangat mudah. Saya baru saja memperhatikan Menggambarkan bisa agak lambat. Terima kasih.
ianbroad

Apakah ListFields lebih cepat daripada Menjelaskan?
Learner

Dari pengalaman saya, tidak, keduanya relatif lambat ... Saya sudah menguji pada dua ukuran medium yang berbeda) gdb dan hasilnya ~ 6,4 untuk Menjelaskan dan ~ 7,4 untuk ListFields (dari awal). Jika fc sudah ada dalam memori, waktunya masing-masing ~ 1.6 dan 2.5.
radouxju
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.