5 votos

¿Cómo comprobar si un parámetro opcional de FeatureSet fue establecido por el usuario en una herramienta de script de geoprocesamiento?

He creado una herramienta de script de geoprocesamiento personalizada que contiene un FeatureSet parámetro.

Al desempaquetar los parámetros en el script, el FeatureSet se define como RecordSet aunque no se haya recibido ninguna entrada. Parece que establece un valor por defecto si no se ha introducido.

Necesito comprobar si este parámetro fue especificado por el usuario o no.

Por ejemplo, cuando ejecuto esto a través de ArcMap sin un FeatureSet se produce lo siguiente:

exportAOI = arcpy.GetParameter(3)
arcpy.AddMessage('AOI is: ' + str(exportAOI))
# AOI is: <geoprocessing record set object object at 0x14133578>

Esperaba exportAOI para ser None .

¿Cómo puedo determinar si el usuario realmente estableció este tipo de parámetro?

1voto

Patrick McKenzie Puntos 3158

Así pues, muchas gracias a todos los que han comentado esto. Voy a responder a esto basándome en la discusión de esos comentarios y en mi experiencia personal.

Como mencionan @blah238 y @Branco, hay una propiedad JSON en un featureSet que se puede comprobar, sin embargo, al ejecutar el script desde ArcMap y utilizar una featureClass como entrada, la comprobación de esa propiedad me produjo un error.

En mi caso, el script está siendo llamado desde un servicio GP con un FeatureSet JSON como entrada, por lo que la comprobación contra la propiedad JSON debería funcionar, aunque he optado por utilizar GetParameterAsText() ya que debería funcionar independientemente de cómo se utilice el script.

En resumen:

La comprobación de si un parámetro opcional featureSet fue realmente pasado puede lograrse fácilmente comprobando la existencia de GetParameterAsText() en lugar de comprobar la existencia de GetParameter() . Además, dependiendo de la situación, también funciona la comprobación de la propiedad JSON en un featureSet.

Gracias de nuevo a todos los participantes.

-Jeremy

1voto

abelenky Puntos 28063

Utilice el método arcpy.Describe en el parámetro featureset y obtenga la propiedad file.

import arcpy

notRequiredFeatureSet = arcpy.GetParameter(0)
arcpy.AddMessage('AOI is: ' + arcpy.Describe(notRequiredFeatureSet).file)

si se ha añadido un conjunto de características:

    Executing: Script "C:\Program Files\ArcGIS\Desktop10.2\ArcGlobeData\continent.shp"
    Start Time: Wed Jul 23 14:57:20 2014
    Running script Script...
    AOI is: continent.shp
    Completed script Script...
    Succeeded at Wed Jul 23 14:57:20 2014 (Elapsed Time: 0.01 seconds)

Si no se añade ningún conjunto de características:

     Executing: Script #
     Start Time: Wed Jul 23 14:54:25 2014
     Running script Script...
     AOI is: 
     Completed script Script...
     Succeeded at Wed Jul 23 14:54:25 2014 (Elapsed Time: 0.00 seconds)

EDITAR para dirigirse a Paul:

import arcpy

notRequiredFeatureSet = arcpy.GetParameter(0)
if not arcpy.Describe(notRequiredFeatureSet).file:
    arcpy.AddMessage("No Input Received")
else:
    arcpy.AddMessage('AOI is: ' + arcpy.Describe(notRequiredFeatureSet).file)

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