การแสดงข้อความแสดงข้อผิดพลาดที่เกิดขึ้นกับผู้ใช้ในหน้าต่าง ArcGIS Geoprocessing Results


13

สามารถพิมพ์คำสั่งที่ยกมาจากข้อยกเว้นที่กำหนดเองสามารถแสดงในหน้าต่างผลลัพธ์การประมวลผลทางภูมิศาสตร์ได้หรือไม่

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

คำตอบ:


13

ฉันคิดว่าคุณกำลังมองหาarcpyเพิ่มข้อความ

ฟังก์ชัน ArcPy ทั้งสี่สำหรับการเขียนข้อความมีดังนี้:

  • AddMessage ("ข้อความ") - สำหรับข้อความที่ให้ข้อมูลทั่วไป (ความรุนแรง = 0)
  • AddWarning ("ข้อความ") - สำหรับการเตือน (ความรุนแรง = 1)
  • AddError ("ข้อความ") - สำหรับข้อผิดพลาด (ความรุนแรง = 2)
  • AddIDMessage (MessageType, MessageID, AddArgument1, AddArgument2) - ใช้สำหรับทั้งข้อผิดพลาดและคำเตือน (อาร์กิวเมนต์ MessageType กำหนดความรุนแรง)

1
อย่างนั้นแหละ. ขอบคุณ ฉันคิดว่าฉันจะใช้ arcpy เพิ่มข้อผิดพลาด
joe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.