MultiValue-Parameter mit mehreren Spalten mit Python und ArcGIS Desktop implementieren?


10

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.


Wenn es sich um die Erstellung einer mehrwertigen Auswahlliste handelt, an der Sie interessiert sind - ich habe diesen Esri-Blogbeitrag kürzlich gesehen, könnte er hilfreich sein.
Alex Tereshenkov

Antworten:


1

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:

Beispielschnittstelle

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.

Anfängliche Schnittstelleneinstellung

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:

def initializeParameters(self):
    """Refine the properties of a tool's parameters.  This method is
    called when the tool is opened."""

    # Get the 6th parameter
    param = self.params[6]
    param.datatype = "Value Table"
    param.columns = [["Feature Layer","Activity Layer"],["Field","Site ID"]]    
    return

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 .


0

Wenn Sie nach einer Dropdown-Liste für den Site ID-Parameter suchen, können Sie einen Code wie folgt verwenden:

 param.filters[1].list = ['pid', 'id']

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.