ArcGIS जियोप्रोसेसिंग परिणाम विंडो में उपयोगकर्ता को उठाए गए त्रुटि संदेश प्रदर्शित करना?


13

क्या कस्टम अपवाद से उठाए गए बयानों को जियोप्रोसेसिंग परिणाम विंडो में प्रदर्शित किया जा सकता है?

मैंने एक स्क्रिप्ट को संशोधित किया जो मैंने पाया कि एक उपयोगकर्ता से दो इनपुट लेता है, संबंधित सुविधा पाता है, फिर सुविधा के लिए ज़ूम करता है। उपकरण ठीक काम करता है। मैं सही रूप से वर्णों की सही मात्रा का प्रारूपण करके इसे अधिक उपयोगकर्ता-अनुकूल बनाने का प्रयास कर रहा हूं। मैंने एक संदेश बॉक्स जोड़ा, जो उपयोगकर्ता को बताता है कि क्या उनके पास इनपुट बॉक्स में बहुत सारे अक्षर हैं, लेकिन मैंने इसे बनाने के लिए easygui का उपयोग किया (GUIs के लिए एक पायथन लाइब्रेरी)। इसके बजाय, मैं संदेश प्रदर्शित करने के लिए gp परिणाम विंडो का उपयोग करना चाहूंगा। मुझे लगा कि मैंने बढ़ा-चढ़ाकर बयानों को सही तरीके से छोड़ दिया है, लेकिन टूल चलता है और मुझे एक पूरा परिणाम मिलता है न कि मेरी त्रुटि संदेश। मैंने 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.AddMessage की तलाश कर रहे हैं ।

संदेश लिखने के लिए चार ArcPy फ़ंक्शन निम्नानुसार हैं:

  • AddMessage ("संदेश") - सामान्य जानकारीपूर्ण संदेशों के लिए (गंभीरता = 0)।
  • AddWarning ("संदेश") - चेतावनी के लिए (गंभीरता = 1)।
  • AddError ("संदेश") - त्रुटियों के लिए (गंभीरता = 2)।
  • AddIDMessage (MessageType, MessageID, AddArgument1, AddArgument2) - त्रुटियों और चेतावनियों के लिए उपयोग किया गया (मैसेज टाइप तर्क गंभीरता निर्धारित करता है)।

1
बस इतना ही। धन्यवाद। मुझे लगता है कि मैं arcpy.AddError उपयोग करने के लिए जा रहा हूँ
जो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.