¿Implementando el parámetro MultiValue con múltiples columnas con Python y ArcGIS Desktop?

10

Estoy trabajando en un script Python de ArcGIS (9.3). Una de las entradas es una lista de características. Para cada característica, necesito seleccionar un campo correspondiente. Establecer el parámetro en MultiValue proporciona una buena tabla en la interfaz de usuario para todas las funciones que se procesan. ¿Cómo agrego otra columna a la tabla MultiValor para seleccionar un campo para cada característica?

Publicación cruzada: http://forums.arcgis.com/threads/30907-MultiValue-Parameter-with-Multiple-Columns

Respuesta de Esri del foro ArcGIS:

Desafortunadamente, la solución para esto se implementó recientemente para 10.1 con entradas de ValueTable para herramientas de script. Necesitará tener dos parámetros de valores múltiples con alguna validación personalizada para que esto funcione para 9.3.1.

thwllms
fuente
Si le interesa la generación de una lista de opciones de valores múltiples, he visto esta publicación de blog de Esri recientemente, podría ser útil.
Alex Tereshenkov

Respuestas:

1

He resuelto cómo hacer esto, aunque de una manera bastante simple. Quería crear un parámetro de valores múltiples donde agrego muchos FeatureLayers y luego elijo un campo ID para cada capa. Lo tengo funcionando pero no pude trabajar cómo hacer que el campo sea una lista desplegable, por lo que un usuario debe ingresar un nombre de campo manualmente. Aquí está la interfaz:

Interfaz de ejemplo

Si alguien ha logrado resolver este problema o algún gurú de ESRI nos bendice con su conocimiento, me encantaría descubrir cómo convertir mi segunda columna (ID de sitio) en un menú desplegable, que enumere campos específicos. Si desea ver un ejemplo de esto, eche un vistazo a la herramienta Crear TIN .

De todos modos para crear esta interfaz, creo una herramienta de secuencia de comandos y agregué un parámetro de capa de entidades de tipo y lo configuré en un valor múltiple como se muestra a continuación.

Configuración inicial de la interfaz

Luego hice clic en la pestaña Validación en la parte superior y luego en el botón Editar. Como este parámetro es el sexto parámetro en mi herramienta de script, actualicé el siguiente código:

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

Esto restablece la interfaz en la tabla de columnas múltiples que quería. Cuando usa GetParameterAsText, devuelve lo siguiente usando mi ejemplo:

pipeline pid;Dredging did


He investigado un poco más y he creado la herramienta usando una caja de herramientas de Python. Funciona muy bien, pero tiene una limitación si regresa y elige otra identificación. He publicado el código en GeoNet aquí .

Hornbydd
fuente
0

Si está buscando una lista desplegable para el parámetro ID de sitio, puede usar un código como el siguiente:

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

Por lo tanto, puede crear un cursor o usar otro método para leer todos los campos del FC y pasarlos, como una lista, a la oración anterior

Santiago Tejada
fuente