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.