สามารถพิมพ์คำสั่งที่ยกมาจากข้อยกเว้นที่กำหนดเองสามารถแสดงในหน้าต่างผลลัพธ์การประมวลผลทางภูมิศาสตร์ได้หรือไม่
ฉันปรับเปลี่ยนสคริปต์ที่ฉันพบว่าใช้สองอินพุตจากผู้ใช้ค้นหาคุณสมบัติที่เกี่ยวข้องจากนั้นซูมไปที่คุณสมบัติ เครื่องมือทำงานได้ดี ฉันพยายามทำให้ใช้งานง่ายขึ้นโดยการจัดรูปแบบอินพุตให้มีจำนวนอักขระที่ถูกต้องโดยอัตโนมัติ ฉันเพิ่มกล่องข้อความที่บอกผู้ใช้ว่าพวกเขามีอักขระมากเกินไปในกล่องอินพุต แต่ฉันใช้ easygui เพื่อสร้าง (ไลบรารี Python สำหรับ GUIs) ฉันต้องการใช้หน้าต่างผลลัพธ์ gp เพื่อแสดงข้อความแทน ฉันคิดว่าฉันจัดรูปแบบการเพิ่มและยกเว้นคำสั่งอย่างถูกต้อง แต่เครื่องมือทำงานและฉันได้รับผลลัพธ์ที่สมบูรณ์ไม่ใช่ข้อความแสดงข้อผิดพลาด ฉันลองใช้ความช่วยเหลือ arcpy จาก 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