Implementazione del parametro MultiValue con più colonne con Python e ArcGIS Desktop?


10

Sto lavorando ad uno script Python di ArcGIS (9.3). Uno degli input è un elenco di funzionalità. Per ogni funzione, devo selezionare un campo corrispondente. L'impostazione del parametro su MultiValue fornisce una bella tabella nell'interfaccia utente per tutte le funzionalità elaborate. Come faccio ad aggiungere un'altra colonna alla tabella MultiValue per selezionare un campo per ogni funzione?

Pubblicazione incrociata: http://forums.arcgis.com/threads/30907-MultiValue-Parameter-with-Multiple-Columns

La risposta di Esri dal forum ArcGIS:

Sfortunatamente, la soluzione per questo è stata implementata di recente per 10.1 con input ValueTable per strumenti di script. Dovrai avere due parametri multivalore con qualche convalida personalizzata per far funzionare questo per 9.3.1.


Se è la generazione dell'elenco di scelte multivalore che ti interessa - Ho visto questo post sul blog Esri di recente, potrebbe essere utile.
Alex Tereshenkov,

Risposte:


1

Ho capito come farlo anche se in modo abbastanza semplice. Volevo creare un parametro multivalore in cui aggiungere molti FeatureLayer e quindi scegliere un campo ID per ogni livello. Ho funzionato ma non sono riuscito a capire come rendere il campo un elenco a discesa, quindi un utente deve inserire manualmente un nome campo. Ecco l'interfaccia:

Interfaccia di esempio

Se qualcuno è riuscito a risolvere questo problema o qualche guru dell'ESRI ci benedice con le sue conoscenze, mi piacerebbe scoprire come trasformare la mia seconda colonna (Site ID) in un menu a discesa, elencando campi specifici. Se vuoi vedere un esempio di questo, dai un'occhiata allo strumento Crea TIN .

Comunque per creare questa interfaccia creo uno strumento di script e ho aggiunto un parametro di tipo feature layer e lo ho impostato su un multivalore come mostrato di seguito.

Impostazione dell'interfaccia iniziale

Ho quindi fatto clic sulla scheda Convalida in alto e quindi sul pulsante Modifica. Poiché questo parametro è il sesto parametro nel mio strumento di script ho aggiornato il seguente codice:

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

Questo reimposta l'interfaccia nella tabella a più colonne che volevo. Quando usi GetParameterAsText restituisce quanto segue usando il mio esempio:

pipeline pid;Dredging did


Ho fatto qualche ricerca in più e ho creato lo strumento usando una casella degli strumenti di Python. Funziona molto bene ma ha un limite se torni indietro e scegli un altro ID. Ho pubblicato il codice su GeoNet qui .


0

se stai cercando un elenco a discesa per il parametro ID sito, puoi utilizzare un codice come il seguente:

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

Quindi, puoi creare un cursore o utilizzare un altro metodo per leggere tutti i campi dell'FC e passarli, come elenco, alla frase precedente

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.