Bisakah pernyataan cetak yang muncul dari pengecualian khusus ditampilkan di jendela Hasil Geoproses?
Saya memodifikasi skrip yang saya temukan yang mengambil dua input dari pengguna, menemukan fitur terkait, kemudian memperbesar ke fitur tersebut. Alat ini berfungsi dengan baik. Saya mencoba membuatnya lebih ramah pengguna dengan memformat input secara otomatis untuk mendapatkan jumlah karakter yang benar. Saya menambahkan kotak pesan yang memberi tahu pengguna jika mereka memiliki terlalu banyak karakter di kotak input, tapi saya menggunakan easygui untuk membuat itu (pustaka Python untuk GUI). Sebagai gantinya, saya ingin menggunakan jendela hasil gp untuk menampilkan pesan. Saya pikir saya memformat kenaikan gaji dan kecuali pernyataan dengan benar tetapi alat ini berjalan dan saya mendapatkan hasil yang lengkap dan bukan pesan kesalahan saya. Saya mencoba bantuan dari esri dan tidak mendapatkan hasil yang saya cari.
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