Visualizzazione dei messaggi di errore sollevati per l'utente nella finestra dei risultati di geoprocessing di ArcGIS?


13

Le istruzioni di stampa generate da un'eccezione personalizzata possono essere visualizzate nella finestra Risultati del geoprocessing?

Ho modificato uno script che ho trovato che accetta due input da un utente, trova la funzione associata, quindi ingrandisce la funzione. Lo strumento funziona bene. Sto cercando di renderlo più user-friendly formattando automaticamente gli input per avere la giusta quantità di caratteri. Ho aggiunto una finestra di messaggio che dice all'utente se ci sono troppi caratteri nella casella di input, ma ho usato easygui per crearlo (una libreria Python per GUI). Invece, vorrei usare la finestra dei risultati gp per visualizzare il messaggio. Ho pensato di aver formattato correttamente le istruzioni di aumento e di eccezione, ma lo strumento viene eseguito e ottengo un risultato completo e non il mio messaggio di errore. Ho provato l'aiuto arcpy di esri e non ho ottenuto i risultati che stavo cercando.

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

Risposte:


13

Penso che tu stia cercando arcpy.AddMessage .

Le quattro funzioni ArcPy per la scrittura dei messaggi sono le seguenti:

  • AddMessage ("messaggio") - Per messaggi informativi generali (gravità = 0).
  • AddWarning ("message") - Per avviso (gravità = 1).
  • AddError ("message") - Per errori (gravità = 2).
  • AddIDMessage (MessageType, MessageID, AddArgument1, AddArgument2): utilizzato sia per errori che per avvisi (l'argomento MessageType determina la gravità).

1
Questo è tutto. Grazie. Penso che userò arcpy.AddError
joe
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.