2 votos

Comodín para campo en arcpy.GetParameterAsText

Tengo estos parámetros para mi script python:

import arcpy

Layer1 = arcpy.GetParameterAsText(0) 
Tabela1 = arcpy.GetParameterAsText(1) 
Estado = arcpy.GetParameterAsText(2)
Ano = arcpy.GetParameterAsText(3).split(';')  
mxd = arcpy.mapping.MapDocument("CURRENT")   
Saida = arcpy.GetParameterAsText(4)
stats = []

El parámetro 'Ano' es una selección de campo multivalor y este parámetro obtuvo la lista de valores de la clase de característica 'Tabela1'. Hay muchos campos en esta FC y todos ellos están listados en 'Ano' pero sólo quiero mostrar los campos con el prefijo ACH*. El script funciona bien, pero no quiero confundir al usuario con demasiados campos en el campo 'Ano'.

4voto

Alex Tereshenkov Puntos 13433

Lamentablemente, el único filtro que se puede establecer en el parámetro de tipo de datos Campo es el tipo de campo, no su nombre.

Para lograr el filtrado por nombre, necesitaría utilizar un validador personalizado .

  def updateParameters(self):
    """Modify the values and properties of parameters before internal
    validation is performed.  This method is called whenever a parameter
    has been changed."""
    if self.params[0].value:
      self.params[2].filter.list = [f.name for f in arcpy.ListFields(self.params[0].value,
                                                                    wild_card='POP*')]
    return

Este código rellenaría el tercer parámetro de la herramienta de script (de tipo String, Multivalue) con los nombres que empiezan por POP . El segundo parámetro muestra todos los campos (Tipo de campo, Multivalor), el tercero sólo los filtrados:

enter image description here

Si desea mantener su código de lógica de negocio (piense en el código fuente de la herramienta de script) y el código de validación (lo que sucede con los parámetros y mensajes cuando el usuario interactúa con él) en un solo archivo, entonces mire en Cajas de herramientas de Python . Un solo texto .pyt que puede contener una o varias herramientas de script.

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