Meldungstypen und Meldungsgewichtung
Während der Ausführung eines Werkzeugs werden Meldungen geschrieben, die mit Geoverarbeitungsfunktionen wie GetMessages() abgerufen werden können. Diese Meldungen enthalten Informationen wie Folgende:
- die Start- und Endzeit des Vorgangs;
- die verwendeten Parameterwerte
- allgemeine Informationen über den Verlauf des Vorgangs (Informationsmeldung);
- Hinweise auf mögliche Probleme (Warnungen);
- Fehler, die die Ausführung des Werkzeugs verhindern können (Fehlermeldungen).
Die gesamte Kommunikation zwischen Werkzeugen und Benutzern läuft über Meldungen. Je nachdem, von wo Sie die Werkzeuge ausführen, werden Meldungen im Fenster Ergebnisse, dem Python-Fenster und dem Fortschrittsdialogfeld angezeigt. Von Python aus können Sie diese Meldungen im Skript abrufen, abfragen, ausgeben oder in eine Datei schreiben. Jede Meldung hat eine Gewichtungsstufe, das heißt, es handelt sich entweder um eine Informations-, eine Warn- oder eine Fehlermeldung. Die Gewichtung wird durch eine Zahl angezeigt: 0 = Information, 1 = Warnung und 2 = Fehler.
Schweregrad | |
---|---|
Informationsmeldung (Schweregrad = 0) |
Eine Informationsmeldung bietet Informationen zur Ausführung. Sie wird nie verwendet, um Probleme anzugeben. Nur allgemeine Informationen zum Ausführungsfortschritt, Angaben zum Start bzw. Ende der Ausführung eines Werkzeugs sowie Beschreibungen der Ausgabedaten oder der Ergebnisse des Werkzeugs sind in Informationsmeldungen enthalten. |
Warnmeldung (Schweregrad = 1) |
Warnmeldungen werden generiert, wenn für ein Werkzeug eine Situation eintritt, die zu einem Problem während seiner Ausführung führt, oder wenn das Ergebnis möglicherweise nicht den Erwartungen entspricht. Wenn z. B. ein Koordinatensystem für ein Dataset definiert wird, für das bereits ein Koordinatensystem vorhanden ist, wird eine Warnung erzeugt. Bei einer Warnung können Sie einschreiten, indem Sie beispielsweise die Ausführung des Skriptes abbrechen oder einen anderen Parameter angeben. |
Fehlermeldung (Schweregrad = 2) |
Mit Fehlermeldungen wird über ein kritisches Ereignis informiert, das die Ausführung eines Werkzeugs verhindert hat. Fehler werden generiert, wenn für Parameter ungültige Werte angegeben sind oder wenn ein für die Ausführung unerlässlicher Prozess bzw. eine Routine fehlgeschlagen ist. |
Warnungen und Fehlermeldungen verfügen über einen sechsstelligen ID-Code. Für diese ID-Codes gibt es Dokumentation, in der Sie weitere Informationen zu den Ursachen und zur Fehlerbehebung finden. Wenn Fehler- oder Warncodes im Werkzeugdialogfeld, im Fortschrittsdialogfeld, im Python-Fenster oder im Ergebnisfenster angezeigt werden, können Sie über den zugehörigen Link direkt die Hilfe für diese Meldung aufrufen.
Abrufen von Meldungen
Meldungen vom letzten ausgeführten Werkzeug werden von ArcPy verwaltet und können mit der Funktion GetMessages abgerufen werden. Diese Funktion gibt eine Zeichenfolge zurück, die alle Meldungen des zuletzt ausgeführten Werkzeugs enthält. Die zurückgegebenen Meldungen können mit der Gewichtungsoption gefiltert werden, sodass nur die Meldungen mit einer gewissen Gewichtung angezeigt werden. Bei der Verwendung von ArcPy gibt die erste Meldung das ausgeführte Werkzeug und die letzte Meldung das Ende und die verstrichene Zeit für die Ausführung des Werkzeugs an. Mit der zweiten und der letzten Meldung eines Werkzeugs werden immer die Anfangs- und die Endzeit der Ausführung des Werkzeugs angegeben.
Abrufen von Geoverarbeitungsmeldungen
import arcpy # Execute the GetCount tool # arcpy.GetCount_management("c:/base/data.gdb/roads") # Get the resulting messages and print them # print arcpy.GetMessages() # The returned messages would look similar to the following: # Executing: GetCount c:/base/data.gdb/roads # Start Time: Wed Apr 07 11:28:21 2010 # Row Count = 373 # Succeeded at Wed April 07 11:28:21 2010 (Elapsed Time: 0.00 seconds)
Einzelne Meldungen können mit der Funktion GetMessage abgerufen werden. Diese Funktion verfügt über einen Parameter, der die Indexposition der Meldung ist. Die Funktion GetMessageCount gibt die Anzahl von Meldungen des zuletzt ausgeführten Werkzeugs zurück. In dem Beispiel unten wird dargestellt, wie Informationen über das ausgeführte Werkzeug zusammen mit der Endzeit und der verstrichenen Zeit für das Werkzeug gedruckt werden.
import arcpy arcpy.env.workspace = "D:/base/data.gdb" arcpy.Clip_analysis("roads", "urban_area", "urban_roads") # Print the first message - tool executed # print arcpy.GetMessage(0) # Print the last message - ending and elapsed times for tool # print arcpy.GetMessage(arcpy.GetMessageCount - 1)
Abrufen von Meldungen aus einem Ergebnisobjekt
Auf Meldungen kann auch von einem Werkzeug aus mit einem Ergebnisobjekt zugegriffen werden. Anders als bei ArcPy können Sie die Meldungen im Ergebnisobjekt auch aufbewahren, nachdem bereits weitere Werkzeuge ausgeführt wurden. Das Ergebnisobjekt unterstützt teilweise dieselben Funktionen, mit denen Meldungen des Geoverarbeitungswerkzeugs abgerufen und interpretiert werden.
Eigenschaften und Methoden |
Erklärung |
---|---|
inputCount | Gibt die Anzahl der Eingaben zurück. |
outputCount |
Gibt die Anzahl der Ausgaben zurück. |
messageCount |
Gibt die Anzahl der Meldungen zurück. |
maxSeverity |
Gibt die maximale Gewichtung zurück. Mögliche Werte für die zurückgegebene Gewichtung sind 0 (keine Fehler/Warnungen ausgelöst), 1 (Warnungen ausgelöst) und 2 (Fehler ausgelöst). |
resultID |
Gibt die eindeutige Ergebnis-ID zurück. Wenn es sich bei dem Werkzeug nicht um einen Geoverarbeitungs-Service handelt, ist resultID gleich "". |
Status |
Gibt den Status des Auftrags auf dem Server zurück.
|
cancel() |
Bricht den Auftrag auf dem Server ab. |
getInput(index) |
Gibt eine bestimmte Eingabe zurück. Bei einem Datensatz- oder einem Raster-Daten-Objekt wird ein RecordSet- bzw. RasterData-Objekt zurückgegeben. |
getMapImageURL(ParameterList, Height, Width, Resolution) |
Ruft für eine bestimmte Ausgabe das Karten-Service-Image ab. |
getMessage(index) |
Gibt eine bestimmte Meldung zurück. |
getMessages(severity) |
Der Typ der zurückzugebenden Meldungen. 0 (Meldung), 1 (Warnung), 2 (Fehler). Wenn Sie keinen Wert angeben, werden alle Meldungstypen zurückgegeben. |
getOutput(index) |
Gibt eine bestimmte Ausgabe zurück. Bei einem Datensatz- oder einem Raster-Daten-Objekt wird ein RecordSet- bzw. RasterData-Objekt zurückgegeben. |
getSeverity(index) |
Gibt die Gewichtung einer bestimmten Meldung zurück. |
Im folgenden Beispiel werden zwei Geoverarbeitungswerkzeuge ausgeführt, doch es wird gewartet, bis die Werkzeuge ausgeführt wurden, bevor die Meldungen überprüft werden.
import arcpy arcpy.env.workspace = "D:/base/data.gdb" # Execute the Clip and GetCount tools # clipResult = arcpy.Clip_analysis("roads", "urban_area", "urban_roads") countResult = arcpy.GetCount_management("urban_roads") # Get the resulting messages and print them # print clipResult.getMessages() print countResult.getMessages()
Wie bei den Geoverarbeitungswerkzeugen werden die Meldungen der Serverwerkzeuge entweder als Informationsmeldungen, Warnmeldungen oder Fehlermeldungen klassifiziert. Der Typ einer Meldung wird durch ihre Gewichtung bestimmt, die mit einem Zahlenwert angegeben wird. Im folgenden Beispiel wird veranschaulicht, wie die Meldungen von einem Serverwerkzeug abgerufen werden, nachdem dieses beendet wurde.
import arcpy import time # Add the server toolbox # arcpy.ImportToolbox("http://lab13/arcgis/services;BufferByVal", "mytools") featset = arcpy.FeatureSet() featset.load("//flames/gpqa/coredata/global/redlands/control.shp") # Run a server tool named BufferPoints # result = arcpy.BufferPoints_mytools(featset, "1000 feet") # Wait until the tool completes # while result.status < 4: time.sleep(0.2) # Print all messages from the result object # print result.getMessages()