Mehr

IF else-Anweisungen arcmap, mit Python


Ich habe ein Shapefile mit mehreren Feldern. Ich habe ein Feld (nennen wir es Feld A), das ich basierend auf einem anderen Feld (nennen wir es Feld B) ausfüllen muss.

  • Wenn Feld B größer als 0 ist, brauche ich es, um Feld A mit dem Text 'Fill' zu füllen.
  • Wenn Feld B null ist, brauche ich es, um Feld A mit dem Text 'NoChange' zu füllen.
  • Wenn Feld B kleiner als 0 ist, brauche ich es, um Feld A mit dem Text 'Drain' zu füllen.

Ich sollte wissen, was der Python-Code dafür sein muss.


Hier ist eine Python-Lösung:

import arcpy fc = r'C:path	oyour.gdbfeature_class' with arcpy.da.UpdateCursor(fc, ["FieldA", "FieldB"]) als Cursor: für Zeile im Cursor: if row[1 ] > 0: row[0] = "Fill" elif row[1] == 0: row[0] = "NoChange" elif row[1] < 0: row[0] = "Drain" cursor.updateRow(row )

Das Werkzeug Feld berechnen kann verwendet werden, um dies in einem Schritt zu tun. Sehr ähnlich zu dem, was @Aaron vorschlägt, aber als einzelnes GPS-Tool und weniger Code.

Parameter wären

Feldname:Feld A

Ausdruck :x(!Feld B!)

Ausdruckstyp:Python

Codeblock

def x(val): if val > 0: Rückgabe von "Fill" elif val == 0: Rückgabe von "NoChange" elif val < 0: Rückgabe von "Drain"

Python würde ich dafür nicht verwenden.

Wählen Sie nach Attributen aus, alles in Feld B > 0. Verwenden Sie dann den Feldrechner, um Feld A mit "Füllen" zu füllen. Wählen Sie dann Feld B = 0 und verwenden Sie den Feldrechner erneut, um Feld A mit "NoChange" zu füllen. Wählen Sie schließlich Feld B < 0 und verwenden Sie den Feldrechner, um Feld B mit "Drain" zu füllen.

Gibt es einen Grund, warum Sie Python dafür verwenden möchten? Es scheint schneller zu sein, es nur in der Benutzeroberfläche zu tun.


danke an alle für eure hilfe! Mir ist gerade aufgefallen, dass ich nie geantwortet habe. Das tut mir leid! Ich habe das Problem behoben, kann mich aber nicht mehr erinnern, wie ich es gemacht habe! Hoppla.


Schau das Video: Kyk dié kat se skok toe hy die eerste keer n luislang sien (Oktober 2021).