获得OBJECTID名称的最佳方法是什么?


13

获取要素类的OBJECTID名称的最佳方法是什么?

我知道您可以在光标中使用“ OID @”来获取该字段,但是您也可以从中获取名称吗?

我正在编写脚本,并且需要考虑将在查询中使用的各种OBJECTID名称,例如OBJECTID_2,OBJECTID_12,FID等。

使用Describe是获得名称的唯一方法吗?

例如:

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

我只是想知道是否还有另一种方式。

谢谢。

Answers:


23

我会说使用描述是最好的

oid_fieldname = arcpy.Describe(fc).OIDFieldName

非常简单。否则,您可以在使用listFields时直接进行过滤,因此可以尝试

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

但这会在没有oidField的情况下返回错误(不太可能,但是...)


1
我同意这非常简单。我刚刚注意到Describe可能会有点慢。谢谢。
ianbroad

ListFields比Describe快吗?
学习者

根据我的经验,不,它们都相对较慢...我已经在两个不同的中等大小的gdb上进行了测试,结果Describe为约6.4,ListFields为约7.4(从头开始)。如果fc已在内存中,则时间分别为〜1.6和2.5。
radouxju
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.