OBJECTID नाम पाने का सबसे अच्छा तरीका क्या है?


13

किसी सुविधा वर्ग का OBJECTID नाम प्राप्त करने का सबसे अच्छा तरीका क्या है?

मुझे पता है कि आप फ़ील्ड प्राप्त करने के लिए कर्सर में "OID @" का उपयोग कर सकते हैं, लेकिन क्या आप उससे भी नाम प्राप्त कर सकते हैं?

मैं एक पटकथा लिख ​​रहा हूं, और OBJECTID_2, OBJECTID_12, FID, इत्यादि जैसे OBJECTID नामों को अलग-अलग ध्यान में रखना होगा, जिनका उपयोग किसी क्वेरी में किया जाएगा।

क्या नाम प्राप्त करने का एकमात्र तरीका वर्णन करना है?

उदाहरण के लिए:

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

मैं सोच रहा हूँ अगर वहाँ एक और तरीका है।

धन्यवाद।

जवाबों:


23

मैं कहूंगा कि वर्णन का उपयोग करना सबसे अच्छा है

oid_fieldname = arcpy.Describe(fc).OIDFieldName

काफी सीधा है। अन्यथा, जब आप सूची का उपयोग करते हैं, तो आप सीधे फ़िल्टर कर सकते हैं, ताकि आप कोशिश कर सकें

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

लेकिन यह एक त्रुटि लौटाएगा यदि कोई ओडफिल्ड (संभावना नहीं है, लेकिन ...)


1
मैं मानता हूं कि यह बहुत सीधा है। मैंने अभी देखा कि वर्णन थोड़ा धीमा हो सकता है। धन्यवाद।
इयानब्रोड

क्या ListFields वर्णन करने की तुलना में तेज़ है?
शिक्षार्थी

मेरे अनुभव से, नहीं, वे दोनों अपेक्षाकृत धीमे हैं ... मैंने दो अलग-अलग मध्यम आकार पर परीक्षण किया है) gdb और परिणाम वर्णन के लिए ~ 6.4 और ListFields के लिए ~ 7.4 हैं (खरोंच से)। यदि fc पहले से ही मेमोरी में है, तो समय क्रमशः ~ 1.6 और 2.5 है।
राडोक्सु
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.