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