Anzeigen ausgelöster Fehlermeldungen für Benutzer im Fenster "Ergebnisse der ArcGIS-Geoverarbeitung"?

13

Können Druckanweisungen, die von einer benutzerdefinierten Ausnahme ausgelöst wurden, im Fenster "Geoverarbeitungsergebnisse" angezeigt werden?

Ich habe ein Skript geändert, das ich gefunden habe und das zwei Eingaben von einem Benutzer entgegennimmt, das zugehörige Feature findet und dann auf das Feature zoomt. Das Tool funktioniert gut. Ich versuche es benutzerfreundlicher zu machen, indem ich die Eingaben automatisch formatiere, um die richtige Anzahl von Zeichen zu erhalten. Ich habe eine Nachrichtenbox hinzugefügt, die dem Benutzer mitteilt, ob er zu viele Zeichen im Eingabefeld hat, aber ich habe easygui verwendet, um diese zu erstellen (eine Python-Bibliothek für GUIs). Stattdessen möchte ich das GP-Ergebnisfenster verwenden, um die Nachricht anzuzeigen. Ich dachte, ich hätte die Anweisungen raise und except korrekt formatiert, aber das Tool wird ausgeführt und ich erhalte ein vollständiges Ergebnis und nicht meine Fehlermeldung. Ich habe die Arcpy-Hilfe von Esri ausprobiert und nicht die gewünschten Ergebnisse erzielt.

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
quelle

Antworten:

13

Ich denke, Sie suchen nach arcpy.AddMessage .

Die vier ArcPy-Funktionen zum Schreiben von Nachrichten lauten wie folgt:

  • AddMessage ("message") - Für allgemeine informative Nachrichten (Schweregrad = 0).
  • AddWarning ("message") - Zur Warnung (Schweregrad = 1).
  • AddError ("message") - Für Fehler (Schweregrad = 2).
  • AddIDMessage (MessageType, MessageID, AddArgument1, AddArgument2) - Wird sowohl für Fehler als auch für Warnungen verwendet (das MessageType-Argument bestimmt den Schweregrad).
Derek Swingley
quelle
1
Das ist es. Vielen Dank. Ich denke, dass ich arcpy verwenden werde.AddError
Joe