क्या कस्टम अपवाद से उठाए गए बयानों को जियोप्रोसेसिंग परिणाम विंडो में प्रदर्शित किया जा सकता है?
मैंने एक स्क्रिप्ट को संशोधित किया जो मैंने पाया कि एक उपयोगकर्ता से दो इनपुट लेता है, संबंधित सुविधा पाता है, फिर सुविधा के लिए ज़ूम करता है। उपकरण ठीक काम करता है। मैं सही रूप से वर्णों की सही मात्रा का प्रारूपण करके इसे अधिक उपयोगकर्ता-अनुकूल बनाने का प्रयास कर रहा हूं। मैंने एक संदेश बॉक्स जोड़ा, जो उपयोगकर्ता को बताता है कि क्या उनके पास इनपुट बॉक्स में बहुत सारे अक्षर हैं, लेकिन मैंने इसे बनाने के लिए easygui का उपयोग किया (GUIs के लिए एक पायथन लाइब्रेरी)। इसके बजाय, मैं संदेश प्रदर्शित करने के लिए gp परिणाम विंडो का उपयोग करना चाहूंगा। मुझे लगा कि मैंने बढ़ा-चढ़ाकर बयानों को सही तरीके से छोड़ दिया है, लेकिन टूल चलता है और मुझे एक पूरा परिणाम मिलता है न कि मेरी त्रुटि संदेश। मैंने esri से चापलूसों की मदद करने की कोशिश की और वे नतीजे नहीं मिले जिनकी मुझे तलाश थी।
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