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.

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 ...)


1
Concordo que é muito direto. Acabei de notar que o Descrever pode ser um pouco lento. Obrigado.
Ianbroad 9/07
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.