Опция экспорта модели в скрипт Python позволяет лучше понять, как используются в Python инструменты и параметры среды; с этого часто начинается разработка скриптов. После редактирования и завершения скрипта, его можно добавить на панель инструментов или в модель в качестве инструмента-скрипта и использовать как любой другой инструмент геообработки. Чтобы экспортировать модель в скрипт, выполните приведенные ниже инструкции:
- В меню ModelBuilder выберите Модель (Model) > Экспортировать (Export) > В скрипт Python (To Python Script).
- Щелкните стрелку ниспадающего меню Сохранить в (Save in) и выберите место, куда вы хотите сохранить скрипт.
- Введите имя файла скрипта.
- Нажмите Сохранить (Save).
Редактирование экспортированного скрипта Python
В некоторых случаях экспортированная модель не работает. При экспорте модели в скрипт следует учитывать следующие факторы.
- Если ожидается перезапись данных, задайте для свойства arcpy.env.overwriteOutput значение True.
- Если в модели используются слои или представления таблиц, не созданные с исходной моделью, эти слои или виды таблиц будут созданы в скрипте с помощью таких инструментов, Создать векторный слой (Make Feature Layer) и Создать представление таблицы (Make Table View).
- Элементы данных из модели преобразуются в переменные в экспортированном скрипте. Избегайте именования элементов данных, которое несовместимо с Python (например: class, global и return). Полный список зарезервированных ключевых слов см. в модуле keyword в Python.
import keyword print keyword.kwlist
- Если в модели используется один из перечисленных вариантов замены: %workspace%, %scratchworkspace%, %n%, %i% или %variable name%, они будут заменяться на корректное значение.
- Если в модели используется итератор, логика итерации не будет экспортироваться и будет заменена операторами цикла в Python.
- Будет экспортировано только первое значение из списка переменных.
- Если модель использует набор объектов (feature set) или набор записей (record set), при экспорте будет создан следующий код.В коде будут предприниматься попытки защиты от неверных значений или отсутствия значений (null), если задать переменную Feature_Set для класса объектов in_memory. Поскольку класс объектов in_memory отсутствует во время выполнения, необходимо обновить путь, указав класс объектов, который присутствует во время выполнения. Также следует внести изменения в логику возврата сообщений об ошибках и остановки выполнения, если это необходимо для вашего рабочего процесса.
Экспорт из модели с параметром набора объектов
Feature_Set = arcpy.GetParameterAsText(0) if Feature_Set == '#' or not Feature_Set: Feature_Set = "in_memory\\{F15C6411-0F4F-4A68-9BAC-29D6E7874669}" # provide a default value if unspecified
- Если модель использует только инструменты модели, такие как Слияние ветвей (Merge Branch), Собрать значения (Collect Values) или Вычислить значение (Calculate Value), эти инструменты не будут работать в Python. Для использования логики этих инструментов необходимо использовать соответствующие функции Python. Например, следует использовать логику если-то (if/else), чтобы реализовать ветвление в скрипте.
- Если модель содержит подмодели, их содержание не будет экспортировано. Вместо этого, необходимо использовать ссылку на набор инструментов, а инструмент модели следует вызывать внутри скрипта.