ArcGIS Geoprocessing Results 창에서 사용자에게 발생한 오류 메시지를 표시합니까?


13

지오 프로세싱 결과 창에 사용자 정의 예외에서 발생한 인쇄 문을 표시 할 수 있습니까?

사용자로부터 두 개의 입력을 받아 관련 기능을 찾은 다음 해당 기능으로 확대 / 축소하는 스크립트를 수정했습니다. 도구가 잘 작동합니다. 올바른 문자 수를 갖도록 입력 형식을 자동으로 지정하여보다 사용자 친화적으로 만들려고합니다. 입력 상자에 문자가 너무 많으면 사용자에게 알려주는 메시지 상자를 추가했지만 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을 찾고 있다고 생각합니다 .

메시지 작성을위한 네 가지 ArcPy 기능은 다음과 같습니다.

  • AddMessage ( "message") — 일반적인 정보 메시지 용 (심각도 = 0).
  • AddWarning ( "message") — 경고 용 (심각도 = 1).
  • AddError ( "message") — 오류의 경우 (심각도 = 2).
  • AddIDMessage (MessageType, MessageID, AddArgument1, AddArgument2) — 오류 및 경고에 사용됩니다 (MessageType 인수는 심각도를 결정 함).

1
그게 다야. 감사. arcpy.AddError
joe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.