NESNE KİMLİĞİ adını almanın en iyi yolu nedir?


13

Bir özellik sınıfının OBJECTID adını almanın en iyi yolu nedir?

Alanı elde etmek için bir imleçte "OID @" kullanabileceğinizi biliyorum, ama adı da buradan alabilir misiniz?

Bir komut dosyası yazıyorum ve bir sorguda kullanılacak OBJECTID_2, OBJECTID_12, FID vb. Gibi değişen OBJECTID adlarını dikkate almamız gerekiyor.

Adı almanın tek yolu Describe kullanmak mı?

Örneğin:

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

Sadece başka bir yol olup olmadığını merak ediyorum.

Teşekkürler.

Yanıtlar:


23

Tarif kullanmanın en iyisi olduğunu söyleyebilirim

oid_fieldname = arcpy.Describe(fc).OIDFieldName

oldukça basittir. Aksi takdirde, listFields kullandığınızda doğrudan filtre uygulayabilirsiniz, böylece deneyebilirsiniz

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

ancak oidField yoksa bir hata döndürür (olası değil, ancak ...)


1
Çok basit olduğuna katılıyorum. Az önce Describe'in biraz yavaş olabileceğini fark ettim. Teşekkürler.
— ianbroad

ListFields Açıklamaktan daha hızlı mı?
— Öğrenci

Deneyimlerime göre, hayır, ikisi de nispeten yavaş ... İki farklı orta boyda gdb test ettim ve sonuçlar Describe için ~ 6.4 ve ListFields için ~ 7.4 (sıfırdan). Fc zaten bellekte ise, zaman sırasıyla ~ 1.6 ve 2.5'tir.
— radouxju
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.