Wie kann ich überprüfen, ob eine Feature-Class oder Tabelle ein Feld mit einem bestimmten Namen enthält, bevor ich es hinzufüge?


8

Ich versuche ein Skript zu schreiben, das herausfindet, ob das Shapefile ein bestimmtes Feld hat und ob das Feld nicht hinzugefügt werden soll. Ich bekomme es, um mir das Feld zu zeigen, aber die Schleife durchläuft jedes Feld, sodass jedes Mal, wenn das angegebene Feld nicht vorhanden ist, ein neues Feld erstellt wird. Aber wenn es so ist, möchte ich nur, dass es da ist und wenn es nicht darum geht, ein neues Feld zu erstellen. Mein bisheriger Code sagt nur:

"not filled in yet"
"not filled in yet"
"not filled in yet"
"cities.shp"
"not filled in yet"

(Druckt so aus, weil es fünf Felder gibt)

Mein Code bisher:

fieldList = arcpy.ListFields("cities.shp")

for field in fieldList:

if field.name == "CAPITAL":
    print "cities.shp"

else: 
    "then add new field"

1
Entspricht dieser Code wirklich dieser Ausgabe? Ich bin nicht mit Arcpy vertraut, aber es scheint sehr zweifelhaft.
BradHards

Antworten:


10

Anstatt die aktuellen Feldnamen zu durchlaufen, können Sie auch die Feldnamen durchlaufen, die Sie hinzufügen möchten. Angenommen, Sie haben eine Liste to_addmit den Feldnamen, die Ihre Feature-Class haben soll. Sie können dann die inAnweisung verwenden, um zu überprüfen, ob jedes Element von in to_addist fieldList. Folgendes sollte funktionieren:

#List of field names to be added
to_add = ["Area", "Date_add", "User_add", "etc."]

#Create a list of existing field names
fieldList = arcpy.ListFields("cities.shp")    
fieldName = [f.name for f in fieldList]

for field in to_add:
  if field in fieldName:
    print "Already exists!"
  else:
    arcpy.AddField_management("cities.shp", field, "TEXT")
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.