Menampilkan pesan kesalahan yang ditinggikan kepada pengguna di jendela Hasil Geoprocessing ArcGIS?

13

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
joe
sumber

Jawaban:

13

Saya pikir Anda sedang mencari arcpy.AddMessage .

Keempat fungsi ArcPy untuk menulis pesan adalah sebagai berikut:

  • AddMessage ("message") - Untuk pesan informatif umum (keparahan = 0).
  • AddWarning ("message") - Untuk peringatan (keparahan = 1).
  • AddError ("message") - Untuk kesalahan (keparahan = 2).
  • AddIDMessage (MessageType, MessageID, AddArgument1, AddArgument2) —Digunakan untuk kesalahan dan peringatan (argumen MessageType menentukan tingkat keparahan).
Derek Swingley
sumber
1
Hanya itu saja. Terima kasih. Saya pikir saya akan menggunakan arcpy.AddError
joe