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.

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


1
Ich stimme zu, dass es sehr einfach ist. Mir ist gerade aufgefallen, dass Describe etwas langsam sein kann. Vielen Dank.
ianbroad
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.