Среда Model Builder обладает почти неограниченными возможностями по автоматизации задач процессов для геоинформационных систем. Приведем несколько полезных знаний, которые помогут автоматизировать ваши задачи гораздо глубже!
1. Запуск модели геообработки через планировщик задач Windows. Например, модель должна каждый день запускаться для выполнения определенной задачи, которая не требует ручного ввода параметров.
Шаг 1. Протестируйте модель в ArcMap
Шаг 2. Создайте пустой toolbox из ArcCatalog в одной из папок на компьютере, где будет запускаться скрипт. Удобнее всего, если путь к toolbox не будет содержать названий на кириллице
Шаг 3. Скопируйте вашу модель в данный toolbox
Шаг 5. Откройте блокнот или другой редактор для написания короткого скрипта на Python, который будет запускать вашу модель геообработки. Пример кода:
import arcpy
arcpy.CheckOutExtension(«Spatial» )
arcpy.ImportToolbox(«D:model_demo.tbx», «TBX» )
arcpy.Model1_TBX ()
Обратите внимание, что в случае использования дополнительных модулей, их необходимо активировать, в моем примере это модуль Spatial. Model1 — это название модели геообработки, которая сохранена в toolbox D:model_demo.tb. TBX — переменная, можно заменить на любое другое слово, но которое должно обязательно участвовать в обращении к модели, т.е. в моем случае _TBX.
Шаг 6. Добавьте скрипт в планировщик задач Windows, указав на файл python.exe и путь к написанному скрипту на предыдущем шаге. Обратите внимание, что путь к скрипту должен быть в кавычках.
Материалы по теме в англоязычных блогах:
- http://joelmccune.com/run-models-as-scheduled-tasks/
- https://blogs.esri.com/esri/arcgis/2013/07/30/scheduling-a-scrip/
2. Использование имени входных файлов для создания атрибутивных полей. Например, каждый день необходимо загружать пространственные объекты из текстовых файлов, названия файлов содержат дату создания загружаемых объектов и другие атрибутивные сведения.
Шаг 1. Для пакетной загрузки файлов или других входных объектов в Model Builder существуют итераторы, которые позволяют, например, обработать все файлы в заданной папке.
Шаг 2. Чтобы использовать имя файла для добавления его части в атрибутивное поле, воспользуемся блоком Parse Path, в котором можно выбрать интересующую часть пути к файлу, в моем случае — это имя файла.
Шаг 3. Как можно заметить на скриншоте выше, имя файла содержится в выходной переменной Value. При этом часть имени включает дату, которую надо добавить для каждого пространственного объекта как столбец с типом Дата. Обратите внимание, что блок Parse Path берет входные параметры через итератор, т. е. имена файлов на каждом шаге будут обновляться.
Добавляем в модель блок «Вычислить поле» и помещаем в выбранный атрибутивный столбец (текстовый!) только дату из имени файла, в моем случае файлы назывались так: CRT13201706080003.txt, т.е. символы с 5 по 17- это дата и время в формате: ГодМесяцДеньЧасМинуты. Выражение будет «%Value%»[5:17] в синтаксисе Python.
Шаг 4. Пока мы записали дату в формате ГодМесяцДеньЧасМинуты в текстовое поле, теперь добавим эту информацию в поле с типом Дата. В этом нам поможет инструмент геообработки «Конвертировать поле времени», в котором содержаться различные форматы записи даты и времени. Подаем этот инструмент за блоком «Вычислить поле»
Шаг 5. Аналогично через инструмент «Вычислить поле» можно добавить другие атрибуты из имени файла, управляя порядком символов в названии через выражение «%Value%»[5:17], где — 5 и 17 номер начала и конца записываемых значений из заголовка.
3. Добавление условий в модель. Последним примером в данной заметке будет выполнение условий в модели. В качестве примера модель проверяет количество точек во входном файле и в случае их достаточности строит интерполированный растр или заканчивает свою работу, если точек недостаточно.
Шаг 1. Воспользуемся инструментом «Посчитать строки», чтобы вычислить количество объектов в файле или классе пространственных объектов. Данные записываются в выходную переменную Row Count (скриншот модели ниже).
Шаг 2. Снова обратимся к инструменту «Вычислить поле», где запишем условие. В моем примере если количество строк больше 518, то условие «true», в противном случае «false».
Шаг 3. Условие готово, осталось добавить его на вход следующему инструменту как условие — в этом случае связь обозначается штрихами.
Желаем успехов и рады помочь на пути к полной автоматизации ваших рутинных процессов в ГИС!