Fügen Sie mit arcpy einen Wert im Attributfeld hinzu

8

Ich muss einem vorhandenen Feld in der Attributtabelle Werte hinzufügen. Die Werte sind durch Werte in einem anderen Feld in derselben Attributtabelle zu bestimmen. Ich kann die Werte in einem anderen Feld des Skripts nicht definieren. Kann mir jemand dabei helfen?

poshan
quelle

Antworten:

8

Ich habe keine Arc 10.1-Cursor verwendet, aber dort ist es anscheinend noch einfacher.

In 10.0 gibt es einige Möglichkeiten, dies zu tun, aber hier ist ein grundlegender Ansatz für Anfänger:

# Create a cursor on a feature class
cur = arcpy.UpdateCursor(myFeatureClass)

# Loop through the rows in the attribute table
for row in cur:
    # The variable sqMiles will get the value from the column
    # named 'Area_Miles'
    sqMiles = row.getValue('Area_Miles')
    # Calculate how many acres
    acres = (sqMiles * 640)
    # Assign the acres to a column named 'Area_Acres'
    row.setValue('Area_Acres', acres)
    # Apply the change
    cur.updateRow(row)

    # The loop will then move on to the next row/feature

Eine einfachere, komprimierte Version:

cur = arcpy.UpdateCursor(myFeatureClass)

for row in cur:
    row.setValue('Area_Acres', row.getValue('Area_Miles') * 640)
    cur.updateRow(row)

Siehe: http://help.arcgis.com/de/arcgisdesktop/10.0/help/index.html#//000v0000003m000000

Tom
quelle
5
Tom, bitte schreiben Sie ALLE "Hilfedateien" von ESRI mit der in dieser Antwort verwendeten Methode neu. Dann werden mehr Menschen verstehen und die Welt wird ein glücklicherer Ort sein.
Jason Miller
2
Tom, bitte folge dem Rat von @JasonMiller. Und vielen Dank, dass Sie das für uns durchgegriffen haben. Ich hielt mich für Analphabeten, aber jetzt nicht mehr.
FaCoffee
2

Nun, es gibt einige Möglichkeiten, wie Sie dies tun können.

  1. Wenn die Berechnung ziemlich einfach ist, würde ich das Werkzeug Feld berechnen verwenden. Wenn Sie den Parameter code_block verwenden müssen, würde ich Option 2 wählen, da es nicht immer einfach ist, die Syntax in einem Skript (oder im Tool selbst) korrekt zu machen.

  2. Wenn Sie in Zukunft mehr Skripte erstellen möchten , würde ich die Verwendung von Cursorn dringend empfehlen . Sie können die Werte aus einem Feld in eine Python-Liste schreiben und Ihre Berechnungen für jedes Element in der Liste mit einer for-Schleife durchführen. Anschließend können Sie die Liste in Ihr neues Feld zurückschreiben.

Ich verwende selten mehr Feld berechnen, da es einfacher ist, Cursor für alle außer den einfachsten Formeln zu schreiben.

Paul
quelle