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.