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:

  1. Als Python-Liste, wobei jeder Wert ein Element in der Liste ist
  2. Als Zeichenfolge, wo Werte durch Semikolons getrennt werden
  3. 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")

Verwandte Themen


7/10/2012