Các câu lệnh in được nêu ra từ một ngoại lệ tùy chỉnh có thể được hiển thị trong cửa sổ Kết quả Geoprocessing không?
Tôi đã sửa đổi một tập lệnh mà tôi thấy có hai đầu vào từ người dùng, tìm tính năng được liên kết, sau đó phóng to tính năng. Công cụ hoạt động tốt. Tôi đang cố gắng làm cho nó thân thiện hơn với người dùng bằng cách tự động định dạng các đầu vào để có số lượng ký tự chính xác. Tôi đã thêm một hộp thông báo cho người dùng biết họ có quá nhiều ký tự trong hộp nhập không, nhưng tôi đã sử dụng easygui để tạo nó (thư viện Python cho GUI). Thay vào đó, tôi muốn sử dụng cửa sổ kết quả gp để hiển thị thông báo. Tôi nghĩ rằng tôi đã định dạng tăng và ngoại trừ các câu lệnh một cách chính xác nhưng công cụ chạy và tôi nhận được một kết quả hoàn thành và không phải là thông báo lỗi của tôi. Tôi đã thử sự giúp đỡ hấp dẫn từ esri và không nhận được kết quả mà tôi đang tìm kiếm.
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