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 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 Liste

In einem Skript können mehrwertige Eingaben als Liste übergeben werden. Eine Liste wird in Klammern geschrieben und ist ein flexibler Python-Typ.

"DeleteFields" mit einer Python-Liste für den "drop_field"-Parameter

import arcpy 

arcpy.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

arcpy.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 

arcpy.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 

arcpy.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 

arcpy.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 

arcpy.env.workspace = 'C:/base/data/gdb' 

vt = arcpy.ValueTable(2)
vt.addRow('counties 2')
vt.addRow('parcels 1')

arcpy.Union_analysis(vt, 'state_landinfo')