Запись сообщений в инструментах-скриптах

При запуске инструмента в ArcPy доступна информация о том, из какого приложения он был вызван. Один из главных эффектов заключается в том, что вы можете записывать сообщения в Python, и ваши сообщения будут автоматически появляться в диалоговом окне инструмента, в Истории геообработки (Geoprocessing history) и в окне Python. Это также означает, что любая модель или инструмент-скрипт, вызывающие ваш инструмент-скрипт, получают доступ к созданным вами сообщениям.

Подробнее о составлении сообщений вы можете узнать в разделе Понятие сообщений в инструментах-скриптах

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

  • AddMessage(message) – Обычные информационные сообщения (опасность = 0)
  • AddWarning(message) – Сообщения с предупреждением (важность = 1)
  • AddError(message) – Сообщения об ошибке (важность = 2)
  • AddIDMessage(message_type, message_ID, add_argument1, add_argument2) – Используется для ошибок и сообщений (аргумент message_type определяет важность).

При вызове функции AddIDMessage() отображается короткое сообщение и ID сообщения, представляющий собой ссылку на текст с объяснением причины возникшей проблемы и указанием способов ее решения. При добавлении сообщения об ошибке с использованием функции AddError() или AddIDMessage() происходит следующее:

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

Пример добавления сообщений

В приведенном ниже примере выполняется оценка входных данных и, если они не содержат входных объектов, в инструмент добавляется сообщение об ошибке, и вызывается исключение arcpy.ExecuteError для завершения выполнения инструмента.

import arcpy
input = arcpy.GetParameterAsText(0)
output = arcpy.GetParameterAsText(0)
       
# If the input has no features, add an error message, and raise
#  an arcpy.ExecuteError
if int(arcpy.GetCount_management(input)[0]) == 0:
    arcpy.AddError("{0} has no features.".format(input))
    raise arcpy.ExecuteError

Связанные разделы