Qual é a melhor maneira de obter o nome OBJECTID?

13

Qual é a melhor maneira de obter o nome OBJECTID de uma classe de recurso?

Sei que você pode usar "OID @" em um cursor para obter o campo, mas você também pode obter o nome?

Estou escrevendo um script e preciso levar em consideração nomes variados de OBJECTID, como OBJECTID_2, OBJECTID_12, FID, etc., que serão usados ​​em uma consulta.

Usar o Descrever é a única maneira de obter o nome?

Por exemplo:

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

Só estou me perguntando se há outra maneira.

Obrigado.

ianbroad
fonte

Respostas:

23

Eu diria que usar descrever é o melhor

oid_fieldname = arcpy.Describe(fc).OIDFieldName

é bastante direto. Caso contrário, você pode filtrar diretamente quando usar listFields, para tentar

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

mas isso retornará um erro se não houver oidField (improvável, mas ...)

radouxju
fonte
1
Concordo que é muito direto. Acabei de notar que o Descrever pode ser um pouco lento. Obrigado.
Ianbroad 9/07