Affichage des messages d'erreur générés à l'utilisateur dans la fenêtre des résultats de géotraitement ArcGIS?

13

Les instructions d'impression générées à partir d'une exception personnalisée peuvent-elles être affichées dans la fenêtre Résultats du géotraitement?

J'ai modifié un script que j'ai trouvé qui prend deux entrées d'un utilisateur, trouve la fonctionnalité associée, puis effectue un zoom sur la fonctionnalité. L'outil fonctionne bien. J'essaie de le rendre plus convivial en formatant automatiquement les entrées pour avoir la bonne quantité de caractères. J'ai ajouté une boîte de message qui indique à l'utilisateur s'il y a trop de caractères dans la zone de saisie, mais j'ai utilisé easygui pour créer cela (une bibliothèque Python pour les interfaces graphiques). Au lieu de cela, je voudrais utiliser la fenêtre de résultats gp pour afficher le message. Je pensais avoir formaté correctement les instructions raise et except, mais l'outil s'exécute et j'obtiens un résultat complet et non mon message d'erreur. J'ai essayé l'aide arcpy d'esri et je n'ai pas obtenu les résultats que je cherchais.

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
Joe
la source

Réponses:

13

Je pense que vous recherchez arcpy.AddMessage .

Les quatre fonctions ArcPy pour écrire des messages sont les suivantes:

  • AddMessage ("message") - Pour les messages informatifs généraux (gravité = 0).
  • AddWarning ("message") - Pour l'avertissement (gravité = 1).
  • AddError ("message") - Pour les erreurs (gravité = 2).
  • AddIDMessage (MessageType, MessageID, AddArgument1, AddArgument2): utilisé à la fois pour les erreurs et les avertissements (l'argument MessageType détermine la gravité).
Derek Swingley
la source
1
C'est ça. Merci. Je pense que je vais utiliser arcpy.AddError
joe