8 votos

¿Cómo seleccionar todos los valores por defecto en el parámetro multivalor de la herramienta arcgis utilizando python?

Estoy utilizando ArcGIS 10.2 y tengo tres parámetros, clase de característica, campo y un parámetro multivalor respectivamente en la herramienta ArcGIS. Relleno el parámetro multivalor con valores únicos de la clase de característica en la selección de la clase de característica y el campo. Aquí está el fragmento de código:

def updateParameters(self):

    if self.params[0].value and self.params[1].value:
        fc = str(self.params[0].value)
        col = str(self.params[1].value)
        self.params[2].filter.list = sorted(
                                         set(
                                             row[0] for row in arcpy.da.SearchCursor(fc, [col]) if row[0]
                                            )
                                           )

Por defecto, ninguno de los valores está marcado en la herramienta.

Unselected values

¿Cómo puedo comprobar todos los valores del parámetro multivalor a través de Clase ToolValidation ¿usando python 2.7?

All selected

9voto

David Holm Puntos 6165

Puede establecer el valor del parámetro a los valores que desea que se comprueben, al menos cuando se utiliza una caja de herramientas de Python. Lo mismo debería ser cierto para su caso.

Por ejemplo:

def getParameterInfo(self):
    p = arcpy.Parameter()
    p.datatype = 'String'
    p.multiValue = True
    p.name = 'test'
    p.displayName = 'Test'
    p.parameterType = 'Required'
    p.direction = 'Input'
    p.filter.list = ['One','Two','Three','Four']
    return [p]

def updateParameters(self, parameters):
    parameters[0].value = ['Two','Four']        
    return

enter image description here

editar

Para su ejemplo de código esto se vería así:

def updateParameters(self):
    if self.params[0].value and self.params[1].value:
        fc = str(self.params[0].value)
        col = str(self.params[1].value)
        vals = sorted(set(row[0] for row in arcpy.da.SearchCursor(fc,[col]) if row))
        self.params[2].filter.list = vals
        self.params[2].value = vals

0 votos

El problema aquí es que no se sabe qué cadenas van a venir de frente, por lo que no se puede establecer que se compruebe en la actualización de los parámetros, ¿no es así?

0 votos

@AlexTereshenkov En algunos casos puede que no, pero en el ejemplo de Surya, los valores se están añadiendo explícitamente en updateParameters Así que, por supuesto, son conocidos.

0 votos

hm como lo tengo, Surya obtiene la lista de valores en el updateParameters. ¿Funcionaría simplemente asignar a la lista que obtiene los valores de self.params[2]?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X