Основные сведения о типах и важности сообщений

Во время работы инструмента создаются сообщения, которые можно получить с помощью функций геообработки, таких как GetMessages(). Эти сообщения содержат, например, следующую информацию:

Весь обмен информацией между инструментами и пользователями осуществляется посредством сообщений. В зависимости от того, откуда запускаются инструменты, сообщения отображаются в окне Результаты (Results), в окне Python и в диалоговом окне хода выполнения. Из Python можно вставить эти сообщения в скрипт, изучить их, распечатать или записать в файл. Все сообщения обладают свойством важности — информационное сообщение, предупреждение или ошибка. Важность обозначается целым числом, где 0 = информационное сообщение, 1 = предупреждение и 2 = ошибка.

Важность

Информационное сообщение (важность = 0)

Информационное сообщение — это всего лишь сведения о выполнении. Оно никогда не указывает на проблемы. Информационные сообщения содержат только общие сведения, такие как ход работы инструмента, время запуска или завершения работы инструмента, характеристики выходных данных или результаты применения инструмента.

Сообщение с предупреждением (важность = 1)

Сообщения с предупреждениями создаются при возникновении ситуации, которая может стать причиной проблемы во время работы инструмента или когда может быть получен неожиданный результат. Например, при определении системы координат для набора данных, для которого уже задана система координат, будет выдано предупреждение. Получив предупреждение, можно принять необходимые меры, например отменить запуск инструмента или выбрать другой параметр.

Сообщение об ошибке (важность = 2)

Сообщения об ошибках указывают на критическое событие, которое нарушает работу инструмента. Ошибки возникают в случае недопустимых значений одного или нескольких параметров или сбоя важного процесса или процедуры.

И предупреждения и сообщения об ошибках дополняются шестизначным кодом-идентификатором. Эти коды-идентификаторы занесены в документы, содержащие дополнительные сведения об их причинах и необходимых действиях. Когда коды ошибок или предупреждений отображаются в диалоговом окне инструмента или хода выполнения, в окне Python или в окне Результат (Result), они содержат ссылку, которая позволяет напрямую получить дополнительную справку по этому сообщению.

Получение сообщений

Сообщения от последнего запущенного инструмента сохраняются в ArcPy и могут быть получены при помощи функции GetMessages. Эта функция возвращает одну строку, содержащую все сообщения от последнего запущенного инструмента. Можно провести фильтрацию полученных сообщений, отобрав из них только сообщения с определенным уровнем важности при помощи соответствующего параметра. При использовании ArcPy первое сообщение содержит информацию о запущенном инструменте, а последнее — о времени окончания и о продолжительности работы инструмента. Второе и последнее сообщения инструмента всегда содержат информацию о времени начала и окончания работы инструмента, соответственно.

Получение сообщений геообработки

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)

Отдельные сообщения можно получить с помощью функции GetMessage. Эта функция имеет один параметр — значение индекса сообщения. Функция GetMessageCount возвращает число сообщений от последнего запущенного инструмента. В приведенном ниже примере показано, как распечатать информацию о запущенном инструменте, а также о времени окончания и продолжительности работы инструмента.

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)

Получение сообщений от объекта Result

Сообщения от инструмента можно также получить с помощью объекта Result. В отличие от сообщений, получаемых от ArcPy, при использовании объекта Result сообщения можно сохранять даже после запуска нескольких инструментов. Объект Result поддерживает ряд тех же функций, которые применяются для получения и интерпретации сообщений от инструментов геообработки.

Result properties and methods

Properties and methods

Explanation

inputCount

Returns the number of inputs.

outputCount

Returns the number of outputs.

messageCount

Returns the number of messages.

maxSeverity

Returns the maximum severity. The returned severity can be 0 (no errors/warnings raised), 1 (warnings raised), or 2 (errors raised).

resultID

Returns the unique result ID. If the tool is not a geoprocessing service, the resultID will be "".

status

Returns the status of the job on the server.

  • 0—New
  • 1—Submitted
  • 2—Waiting
  • 3—Executing
  • 4—Succeeded
  • 5—Failed
  • 6—Timed Out
  • 7—Canceling
  • 8—Canceled
  • 9—Deleting
  • 10—Deleted

cancel()

Cancels the job on the server.

getInput(index)

Returns a given input. If a record set or raster data object, a RecordSet or RasterData object is returned.

getMapImageURL(ParameterList, Height, Width, Resolution)

Get map service image for a given output.

getMessage(index)

Returns a specific message.

getMessages(severity)

The type of messages to be returned: 0=message, 1=warning, 2=error. Not specifying a value returns all message types.

getOutput(index)

Returns a given output. If a record set or raster data object, a RecordSet or RasterData object is returned.

getSeverity(index)

Returns the severity of a specific message.

Result properties and methods

В приведенном ниже примере выполняется запуск двух инструментов геообработки, затем следует ожидание окончания их работы и просмотр сообщений.

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()

Как и в случае инструментов геообработки, сообщения от серверных инструментов классифицируются на информационные, предупреждения и сообщения об ошибках. Тип сообщения определяет его свойство важности, которое представляет собой числовое значение. В следующем примере показано, как получать сообщения от серверного инструмента по завершении его работы.

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()

Связанные темы

5/10/2014