Ich arbeite an einem ArcGIS (9.3) Python-Skript. Eine der Eingaben ist eine Liste von Funktionen. Für jede Funktion muss ich ein entsprechendes Feld auswählen. Wenn Sie den Parameter auf MultiValue setzen, wird in der Benutzeroberfläche eine schöne Tabelle für alle verarbeiteten Funktionen angezeigt. Wie füge ich der MultiValue-Tabelle eine weitere Spalte hinzu, um ein Feld für jedes Feature auszuwählen?
Cross-posted: http://forums.arcgis.com/threads/30907-MultiValue-Parameter-with-Multiple-Columns
Esris Antwort aus dem ArcGIS-Forum:
Leider wurde die Lösung hierfür erst kürzlich für 10.1 mit ValueTable-Eingaben für Skript-Tools implementiert. Sie benötigen zwei mehrwertige Parameter mit einer benutzerdefinierten Validierung, damit dies für 9.3.1 funktioniert.
quelle
Antworten:
Ich habe herausgefunden, wie das geht, wenn auch auf ziemlich einfache Weise. Ich wollte einen mehrwertigen Parameter erstellen, in dem ich viele FeatureLayer hinzufüge und dann für jede Ebene ein ID-Feld auswähle. Ich habe es zum Laufen gebracht, aber ich konnte nicht arbeiten, wie das Feld zu einer Dropdown-Liste gemacht werden kann. Daher muss ein Benutzer einen Feldnamen manuell eingeben. Hier ist die Schnittstelle:
Wenn es jemandem gelungen ist, dieses Problem zu lösen, oder ein Guru von ESRI uns mit seinem Wissen segnet, würde ich gerne herausfinden, wie ich meine zweite Spalte (Site-ID) in ein Dropdown-Menü mit bestimmten Feldern verwandeln kann. Wenn Sie ein Beispiel dafür sehen möchten, schauen Sie sich das Tool TIN erstellen an .
Wie auch immer, um diese Schnittstelle zu erstellen, habe ich ein Skript-Tool erstellt und einen Parameter vom Typ Feature-Layer hinzugefügt und ihn wie unten gezeigt auf einen Mehrwert gesetzt.
Ich habe dann oben auf die Registerkarte Validierung und dann auf die Schaltfläche Bearbeiten geklickt. Da dieser Parameter der 6. Parameter in meinem Skript-Tool ist, habe ich den folgenden Code aktualisiert:
Dadurch wird die Schnittstelle in die von mir gewünschte mehrspaltige Tabelle zurückgesetzt. Wenn Sie GetParameterAsText verwenden, wird anhand meines Beispiels Folgendes zurückgegeben:
pipeline pid;Dredging did
Ich habe weitere Nachforschungen angestellt und das Tool mit einer Python-Toolbox erstellt. Es funktioniert sehr gut, hat aber eine Einschränkung, wenn Sie zurückgehen und eine andere ID wählen. Ich habe den Code auf GeoNet gepostet hier .
quelle
Wenn Sie nach einer Dropdown-Liste für den Site ID-Parameter suchen, können Sie einen Code wie folgt verwenden:
Sie können also einen Cursor erstellen oder eine andere Methode verwenden, um alle Felder des FC zu lesen und sie als Liste an den vorherigen Satz zu übergeben
quelle