¿Se muestran mensajes de error generados al usuario en la ventana de resultados de geoprocesamiento de ArcGIS?

13

¿Se pueden mostrar las declaraciones de impresión generadas a partir de una excepción personalizada en la ventana Resultados de geoprocesamiento?

Modifiqué una secuencia de comandos que encontré que toma dos entradas de un usuario, encuentra la función asociada y luego la amplía. La herramienta funciona bien. Estoy tratando de hacerlo más fácil de usar formateando automáticamente las entradas para que tengan la cantidad correcta de caracteres. Agregué un cuadro de mensaje que le dice al usuario si tiene demasiados caracteres en el cuadro de entrada, pero usé easygui para crear eso (una biblioteca de Python para GUI). En cambio, me gustaría usar la ventana de resultados de gp para mostrar el mensaje. Pensé que formateé correctamente las declaraciones de aumento y excepción, pero la herramienta se ejecuta y obtengo un resultado completo y no mi mensaje de error. Probé la ayuda de arcpy de esri y no obtuve los resultados que estaba buscando.

class BadInputError(Exception):
    pass

# Import arcpy module
import arcpy, sys, string
from arcpy import env

try:
    def checkInput(inp):
        mNCount = len(inp)
        trigger = 0
        while trigger == 0:
            if  mNCount == 4:
                trigger = 1
            elif mNCount > 4:
                inp = ''
                trigger = -1
                raise BadInputError
            elif mNCount == 3:
                inp = '0' + inp
                trigger = 1
            elif mNCount == 2:
                inp = '00' + inp
                trigger = 1
            elif mNCount == 1:
                inp = '000' + inp
                trigger = 1
        return inp


    # Script arguments
    MapNumber = arcpy.GetParameterAsText(0)
    MapNumber = checkInput(MapNumber)
    ParcelNumber = arcpy.GetParameterAsText(1)
    ParcelNumber = checkInput(ParcelNumber)

    Expression = (""" "MAP" = '%s' AND "PARCEL" = '%s'""") %(MapNumber,ParcelNumber)

    # Local variables:
    GISData_GISDATA_CAD_PARCEL2009_WHOLE = "Database Connections\\GISUser.sde\\GISData.GISDATA.CAD_PARCEL2009_WHOLE"
    Output_Layer_Name = Expression
    Output_Layer = "ParcelSelection"

    # Process: Select Layer By Attribute
    arcpy.SelectLayerByAttribute_management("2009 Parcel Points", "NEW_SELECTION", Expression)

    # Zoom to Selected Features
    mxd = arcpy.mapping.MapDocument('CURRENT') 
    df = arcpy.mapping.ListDataFrames(mxd, "Layers") [0] 
    df.zoomToSelectedFeatures()
    df.scale = 8000
    arcpy.RefreshActiveView()

except BadInputError:
    print "Too many characters.  Run again"

except Exception, e:
    # If an error occurred, print line number and error message  
    import traceback, sys
    tb = sys.exc_info()[2]
    print "Line %i" % tb.tb_lineno
    print e.message
joe
fuente

Respuestas:

13

Creo que estás buscando arcpy.AddMessage .

Las cuatro funciones de ArcPy para escribir mensajes son las siguientes:

  • AddMessage ("mensaje"): para mensajes informativos generales (gravedad = 0).
  • AddWarning ("mensaje"): para advertencia (gravedad = 1).
  • AddError ("mensaje"): para errores (gravedad = 2).
  • AddIDMessage (MessageType, MessageID, AddArgument1, AddArgument2): se utiliza tanto para errores como para advertencias (el argumento MessageType determina la gravedad).
Derek Swingley
fuente
1
Eso es. Gracias. Creo que voy a usar arcpy.AddError
Joe