При запуске инструмента, ArcPy определяет приложение, из которого он был вызван. Это позволяет писать сообщения в Python. Эти сообщения автоматически отображаются в диалоговом окне инструмента, в Истории геообработки и в окне Python. Это также означает, что любая модель или инструмент-скрипт, вызывающие ваш инструмент-скрипт, получают доступ к созданным вами сообщениям.
Более подробно о сообщениях см. Основы сообщений в инструментах-скриптах.
После выполнения инструмента сообщения можно получать с помощью функций геообработки. Есть следующие четыре функции ArcPy, предназначенные для записи сообщений:
Функция | Описание |
---|---|
К сообщению инструмента добавляется информационное сообщение. | |
К сообщению инструмента добавляется предупреждение. | |
К сообщению инструмента добавляется сообщение об ошибке. | |
AddIDMessage(message_type, message_ID, add_argument1=None, add_argument2=None) | Сообщение любого типа добавляется с использованием кодов сообщений геообработки. |
При вызове функции 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