Wyświetlanie podniesionych komunikatów o błędach dla użytkownika w oknie wyników geoprzetwarzania ArcGIS?


13

Czy w oknie Wyniki geoprzetwarzania można wyświetlić wyciągi z wyjątku niestandardowego?

Zmodyfikowałem skrypt, który znalazłem, który pobiera dwa dane wejściowe od użytkownika, znajduje powiązaną funkcję, a następnie przybliża ją. Narzędzie działa dobrze. Próbuję uczynić go bardziej przyjaznym dla użytkownika, automatycznie formatując dane wejściowe tak, aby zawierały odpowiednią liczbę znaków. Dodałem komunikat, który informuje użytkownika, czy ma on zbyt wiele znaków w polu wprowadzania, ale do jego utworzenia użyłem easygui (biblioteki Pythona dla GUI). Zamiast tego chciałbym użyć okna wyników gp do wyświetlenia wiadomości. Myślałem, że sformatowałem podwyżkę i oprócz instrukcji poprawnie, ale narzędzie działa i otrzymuję pełny wynik, a nie mój komunikat o błędzie. Próbowałem pomocy Arcis od esri i nie uzyskałem rezultatów, których szukałem.

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

Odpowiedzi:


13

Myślę, że szukasz arcpy.AddMessage .

Cztery funkcje ArcPy do pisania wiadomości są następujące:

  • AddMessage („wiadomość”) - w przypadku ogólnych wiadomości informacyjnych (ważność = 0).
  • AddWarning („message”) - Dla ostrzeżenia (dotkliwość = 1).
  • AddError („message”) - W przypadku błędów (ważność = 2).
  • AddIDMessage (MessageType, MessageID, AddArgument1, AddArgument2) - Używany zarówno w przypadku błędów, jak i ostrzeżeń (argument Ważność określa parametr MessageType).

1
To jest to. Dzięki. Myślę, że mam zamiar użyć arcpy.AddError
joe
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.