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 Ergebnisfenster, dem Python-Fenster und dem Statusdialogfeld 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-, Warn- oder Fehlermeldung. Die Gewichtung wird durch eine Zahl angezeigt: 0 = Information, 1 = Warnung und 2 = Fehler.
Schwere | Beschreibung |
---|---|
Informationsmeldung (Schweregrad = 0) | Eine Informationsmeldung bietet Informationen zur Ausführung eines Werkzeugs. Sie wird nie verwendet, um Probleme anzuzeigen. Nur allgemeine Informationen zum Ausführungsverlauf, 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 eingreifen, 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. In der Dokumentation zu den ID-Codes finden Sie weitere Informationen zu den Ursachen und zur Fehlerbehebung. Wenn Fehler- oder Warncodes im Werkzeugdialogfeld, Statusdialogfeld, Python-Fenster oder 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())
Einzelne Meldungen können mit der Funktion GetMessage abgerufen werden. Diese Funktion verfügt über einen Parameter, der die Indexposition der Meldung darstellt. 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
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 Result-Objekt zugegriffen werden. Anders als bei ArcPy können Sie die Meldungen im Result-Objekt auch aufbewahren, nachdem bereits weitere Werkzeuge ausgeführt wurden. Das Result-Objekt unterstützt teilweise dieselben Funktionen, mit denen Meldungen des Geoverarbeitungswerkzeugs abgerufen und interpretiert werden.
Result-Eigenschaften und -Methoden
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 Geoverarbeitungsservice 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) | Folgende Meldungstypen können zurückgegeben werden: 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, jedoch 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 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())