Arbeiten mit mehrwertigen Eingaben
Viele Geoverarbeitungswerkzeuge haben Eingabeparameter, die mehrere Werte akzeptieren. Wenn Sie die Referenzseite des Werkzeugs oder seine Verwendung im Python-Fenster anzeigen und der Parameter in Klammern []eingeschlossen ist, wissen Sie, dass er eine Liste von Werten übernehmen kann. Das Werkzeug Feld löschen akzeptiert z. B. eine Liste von zu löschenden Feldern, und die Parameterverwendung wird als [drop_field, ...] angezeigt. Einige Parameter, wie der "input_features"-Parameter des Werkzeugs Vereinigen (Union), übernehmen eine Liste von Listen; deren Verwendung wird als [[in_features, {Rank}], ...] angezeigt.
Jeder Parameter, der eine Liste von Werten (oder eine Liste der Liste von Werten) akzeptiert, ist ein mehrwertiger Parameter – er übernimmt einen oder mehrere Werte. Es gibt drei Möglichkeiten zur Angabe eines mehrwertigen Parameters:
- Als Python-Liste, wobei jeder Wert ein Element in der Liste ist
- Als Zeichenfolge, wo Werte durch Semikolons getrennt werden
- Als ValueTable, wobei Werte in einer virtuellen Tabelle mit Zeilen und Spalten gespeichert werden
Entsprechende Beispiele sind unten aufgelistet:
Als Python-Liste
In einem Skript können mehrwertige Eingaben als Python-Liste übergeben werden. Eine Liste wird in Klammern eingeschlossen und ist ein flexibler Python-Typ.
"DeleteFields" mit einer Python-Liste für den "drop_field"-Parameter
import arcpy
from arcpy import env
env.workspace = "C:/base/county.gdb"
arcpy.DeleteField_management("roads", ["STREET_NAM", "LABEL", "CLASS"])
"Union" mit einer Python-Liste für den "in_features"-Parameter
import arcpy
from arcpy import env
env.workspace = "C:/base/data/gdb"
arcpy.Union_analysis([["counties", 2],["parcels", 1]], "state_landinfo")
Als Zeichenfolge
Das Skript muss möglicherweise in einigen Fällen eine mehrwertige Zeichenfolge verwenden, da sie als Ausgabewert eines Werkzeugs zurückgegeben wird oder als Eingabeparameter für das Skript übergeben wird.
"DeleteFields" mit einer mehrwertigen Zeichenfolge für den "drop_field"-Parameter
import arcpy
from arcpy import env
env.workspace = "C:/base/county.gdb"
arcpy.DeleteField_management("roads", "STREET_NAM;LABEL;CLASS")
"Union" mit einer mehrwertigen Zeichenfolge für den "in_features"-Parameter
import arcpy
from arcpy import env
env.workspace = "C:/base/data/gdb"
arcpy.Union_analysis("counties 2;parcels 1", "state_landinfo")
Mit ValueTable
Mit ValueTable können Sie Werte in einer virtuellen Tabelle mit Zeilen und Spalten organisieren. Sie geben die Anzahl der Spalten beim Erstellen der Werttabelle an. Die Standardeinstellung ist eine einzige Spalte.
"DeleteFields" mit ValueTable für den "drop_field"-Parameter
import arcpy
from arcpy import env
env.workspace = "C:/base/county.gdb"
vt = arcpy.ValueTable()
vt.addRow("STREET_NAM")
vt.addRow("LABEL")
vt.addRow("CLASS")
arcpy.DeleteField_management("roads", vt)
"Union" mit ValueTable für den "in_features"-Parameter
import arcpy
from arcpy import env
env.workspace = "C:/base/data/gdb"
vt = arcpy.ValueTable(2)
vt.addRow("counties 2")
vt.addRow("parcels 1")
arcpy.Union_analysis(vt, "state_landinfo")