ArcGISジオプロセシング結果ウィンドウで発生したエラーメッセージをユーザーに表示しますか?


13

カスタム例外から発生した印刷ステートメントを[ジオプロセシング結果]ウィンドウに表示できますか?

ユーザーから2つの入力を受け取り、関連する機能を見つけてからその機能にズームするスクリプトを修正しました。ツールは正常に動作します。入力を適切な文字数になるように自動的にフォーマットすることにより、ユーザーフレンドリにしようとしています。入力ボックスに文字が多すぎる場合にユーザーに通知するメッセージボックスを追加しましたが、easyguiを使用して作成しました(GUI用のPythonライブラリ)。代わりに、gp結果ウィンドウを使用してメッセージを表示したいと思います。raiseおよびexceptステートメントを正しくフォーマットしたが、ツールが実行され、エラーメッセージではなく完了した結果が得られると考えました。esriからarcpyヘルプを試しましたが、探していた結果が得られませんでした。

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を探していると思います。

メッセージを書き込むための4つのArcPy関数は次のとおりです。

  • AddMessage( "message")-一般的な情報メッセージ(重大度= 0)。
  • AddWarning( "message")—警告用(重大度= 1)。
  • AddError( "message")-エラーの場合(重大度= 2)。
  • AddIDMessage(MessageType、MessageID、AddArgument1、AddArgument2)-エラーと警告の両方に使用されます(MessageType引数は重大度を決定します)。

1
それだ。ありがとう。私がarcpy.AddError使用するつもりだと思います
ジョー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.