Wie erhalte ich den OBJECTID-Namen am besten?

13

Wie erhält man am besten den OBJECTID-Namen einer Feature-Class?

Ich weiß, dass Sie "OID @" in einem Cursor verwenden können, um das Feld abzurufen, aber können Sie auch den Namen davon abrufen?

Ich schreibe ein Skript und muss unterschiedliche OBJECTID-Namen wie OBJECTID_2, OBJECTID_12, FID usw. berücksichtigen, die in einer Abfrage verwendet werden.

Ist die Verwendung von Beschreiben der einzige Weg, um den Namen zu erhalten?

Beispielsweise:

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

Ich frage mich nur, ob es einen anderen Weg gibt.

Vielen Dank.

ianbroad
quelle

Antworten:

23

Ich würde sagen, beschreiben ist das Beste

oid_fieldname = arcpy.Describe(fc).OIDFieldName

ist ganz einfach. Andernfalls können Sie direkt filtern, wenn Sie listFields verwenden, sodass Sie es versuchen können

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

Dies gibt jedoch einen Fehler zurück, wenn kein oidField vorhanden ist (unwahrscheinlich, aber ...)

radouxju
quelle
1
Ich stimme zu, dass es sehr einfach ist. Mir ist gerade aufgefallen, dass Describe etwas langsam sein kann. Vielen Dank.
ianbroad