ArcGIS Desktop

  • Документация
  • Поддержка

  • My Profile
  • Справка
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Картографическая платформа вашей организации

ArcGIS Desktop

Полноценная профессиональная ГИС

ArcGIS Enterprise

ГИС предприятия

ArcGIS for Developers

Инструменты для встраивания приложений с местоположениями

ArcGIS Solutions

Бесплатные шаблоны карт и приложений для отрасли

ArcGIS Marketplace

Получение приложения и данных для вашей организации.

  • Документация
  • Поддержка
Esri
  • Войти
user
  • Мой профиль
  • Выход

ArcMap

  • На главную
  • Начало работы
  • Карта
  • Анализ
  • Управление данными
  • Инструменты
  • Дополнительные модули

Понятие поведения отмены в инструментах-скриптах

Во время работы инструмента доступна кнопка, отменяющая дальнейшее выполнение. По умолчанию, когда инструмент-скрипт или инструмент из набора инструментов на Python отменяется, скрипт прекращает работу с текущей строчки кода, а инструмент прекращает работу и выдаёт соответствующее сообщение об ошибке ('Cancelled script <tool_name>... (<tool_name>) прервано пользователем.'). Это окончательная отмена; после такой отмены продолжить выполнение невозможно. В некоторых скриптах больше ничего не надо; но в некоторых случаях после отмены требуется предпринять дополнительные шаги, чтобы очистить данные, выдать пользовательские сообщения инструментов и т.д.

У класса arcpy.env два свойства, autoCancelling и isCancelled для контроля за поведением отмены. По умолчанию, autoCancelling установлено на True, чтобы после отмены работы инструмента работа прекратилась после данной строчки. Если autoCancelling установлено на False, скрипт будет продолжать выполняться, пока вы его не остановите. При прерывании инструмента доступное только для чтения свойство isCancelled переключится с False на True.

СвойствоОписание

arcpy.env.autoCancelling

Если autoCancelling задано как True, отмена приведет к окончанию скрипта в текущей строке. Если False, отмена задаст свойство isCancelled как True и продолжит выполнение. autoCancelling установлено как True по умолчанию.

arcpy.env.isCancelled

Если autoCancelling задано как False, и инструмент отменен, isCancelled будет задано как True. isCancelled установлено False по умолчанию, это свойство только для чтения.

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

import arcpy
arcpy.env.autoCancelling = False
class CustomCancelException(Exception):
    """Custom exception for geoprocessing tool cancellations"""
    pass
def my_function(tables, output):
    temp_tables = []
    try:
        for table in tables:
            temp_tables.append(arcpy.CopyRows_management(table, '#')[0])
            # If isCancelled is True this means that the cancel button
            # has been pressed
            if arcpy.env.isCancelled:
                raise CustomCancelException('Tool has been cancelled')
        arcpy.Merge_management(tables, output)
    except CustomCancelException as err:
        arcpy.AddError(err)
    finally:
        # If tool is cancelled or finishes successfully, clean up intermediate data
        if temp_tables:
            for temp_table in temp_tables:
                arcpy.Delete_management(temp_table)
      
if __name__ == '__main__':
    inputs = arcpy.GetParameter(0)
    out_fc = arcpy.GetParameterAsText(1)
    my_function(inputs, out_fc)

ArcGIS Desktop

  • На главную
  • Документация
  • Поддержка

ArcGIS Platform

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Об Esri

  • О нас
  • Карьера
  • Блог сотрудников
  • Конференция пользователей
  • Саммит разработчиков
Esri
Расскажите нам, что вы думаете.
© Copyright 2016 Environmental Systems Research Institute, Inc. | Конфиденциальность | Правовая информация