Скрипты ModelBuilder и Python в повседневной работе с ArcGIS

Подготовка данных или их обработка могут быть утомительными, потому что это делается механически, с небольшим участием пользователя. Если вы с самого начала видите, что работа будет выполняться поэтапно, и наш вклад будет ограничен выбором большего количества инструментов, стоит рассмотреть возможность использования механизмов, поддерживающих автоматизацию работы, доступных в программном обеспечении Esri.

Некоторые действия, предпринятые повторно и в очень похожей форме, могут выполняться автоматически, например, ежедневное резервное копирование выполненных задач или добавление новых объектов в базу данных. Этот процесс дополнительно поддерживается механизмами операционной системы, которые позволяют автоматически создавать сценарии в указанное время - ArcGIS позволяет использовать ваши преимущества в сценариях, написанных на Python.

Вторым инструментом, поддерживающим автоматизацию, является ModelBuilder - визуальный редактор, который позволяет вам управлять рабочим процессом, выполняемым инструментами геообработки. Сочетание функциональности обоих этих инструментов дает возможность хорошо организовать рабочие процедуры ArcGIS и освободить пользователя от обязанности повторять одни и те же задачи повторно.

Подготовка данных или их обработка могут быть утомительными, потому что это делается механически, с небольшим участием пользователя

Рис. 1. При построении модели.

Инструменты на обоях

ModelBuilder - это инструмент, встроенный в пакет ArcGIS for Desktop. Он позволяет создавать модели или рабочие схемы, построенные из инструментов геообработки и сценариев, представленных графически в форме зависимостей между отдельными элементами, и позволяет редактировать их. При последовательном запуске нескольких инструментов из ArcGIS Toolbox очень важно обеспечить каждый из них правильным вводом и информацией о том, что появится в результате действия. Только с полной информацией о том, что происходит на каждом «шаге» модели, можно прогнозировать непредвиденные ситуации и пограничные случаи. Графическое представление последующих этапов реализации модели облегчает работу, что очень важно для менее продвинутых пользователей. Такое использование ModelBuilder часто способствует вхождению в мир сценариев, что требует большего опыта. Модель также является хорошим методом построения новых решений, особенно более сложных. При выборе следующих «шагов», которые реализуют решение, стоит использовать визуальный редактор для передачи параметров или результатов работы между инструментами.

При выборе следующих «шагов», которые реализуют решение, стоит использовать визуальный редактор для передачи параметров или результатов работы между инструментами

Рис. 2. ModelBuilder дополнительные инструменты.

Чтобы начать работать с ModelBuilder, просто нажмите кнопку в пользовательском интерфейсе ArcMap или ArcCatalog, и появится окно для создания новой модели. Добавление дополнительных инструментов осуществляется путем перетаскивания их из ArcToolbox. Затем появляется прямоугольник с закругленными углами, представляющими инструмент, и овал, представляющий результат этого инструмента. После определения необходимых параметров элементы модели заполняются соответствующими цветами - это указывает на готовность данного элемента к работе. Объекты из оглавления можно просто перетащить в модель, не теряя времени на указание таблицы или класса объектов на диске. ModelBuilder содержит набор инструментов, поддерживающих работу и расширяющих возможности геообработки. Готовая модель может быть добавлена ​​в набор инструментов ArcToolbox (в пределах его собственного набора инструментов, в то время как системные наборы инструментов доступны только для чтения), делая ее доступной из интерфейса ArcGIS также для использования в других моделях или сценариях. Перед добавлением стоит убедиться, что модель является интерактивной, и поэтому она принимает входные параметры в виде аргументов, а не ссылается на жестко указанные данные. Это достигается путем маркировки выбранных овалов в качестве параметров модели.

Не такой страшный питон

Платформа ArcGIS использует язык сценариев Python для нескольких изданий. С каждой последующей версией интеграция этой платформы с Python становится больше - доступно больше команд и функций. До версии 9.3.1 доступ к функциональности ArcGIS с уровня Python осуществлялся модулем ArcGISscripting. Версия 10 принесла небольшую революцию - Esri подготовила библиотеку ArcPy, которая помимо предоставления набора классов, типичных для пространственных данных и функций для работы с ними, расширила использование скриптов для создания композиций карт и углубила интеграцию с ArcGIS. Для обеспечения работы решений, подготовленных пользователями более старых версий, обеспечивается обратная совместимость - скрипты на основе ArcPy и ArcGISscripting работают с ArcGIS 10.

Рис. 3. Окно справки инструмента - наглядный пример использования в коде.

Python - это современный, очень гибкий язык программирования сценариев. Стиль программирования не навязывается программистам (это может быть структурное, объектное или функциональное программирование). Существует также полностью динамическая система типов и механизм управления памятью, что позволяет легко работать даже людям, не знакомым с программированием. Достаточно понятный код понятен, а библиотека Esri интуитивно понятна. Доступны все инструменты из ArcToolbox (доступные на текущем уровне лицензии), которые используются аналогично тому, как на уровне диалога, с указанием необходимых параметров или указанием путей к данным. Использование каждого инструмента геообработки в скрипте показано в его справочном документе - там представлены порядок параметров и список необходимых и необязательных аргументов.

Куда писать

Вы можете делать свои первые команды Python в ArcMap. В главном интерфейсе есть кнопка, которая запускает окно Python, где вы можете вводить отдельные команды или короткие блоки и вызывать инструменты. Это удобно для людей, которые хорошо знакомы с геообработкой в ​​Python и часто используют ее. Команду можно вводить быстрее (особенно из-за того, что работает сглаженная подсказка синтаксиса), чем для поиска в гуще инструментов ArcToolbox. Однако это не относится к автоматизации сценариев.

Код Python интерпретируется во время выполнения, поэтому нет необходимости его компилировать - поэтому для написания достаточно простого текстового редактора. Однако кодирование в среде программирования намного удобнее. В больших проектах это становится необходимостью, потому что эффективные механизмы отладки, раскраска ключевых слов, автозаполнение слов или поддержка управления контентом значительно облегчают работу (вот почему стоит начать свое приключение с Python с такого инструмента с самого начала).

Есть много решений на рынке. Компания Esri выпустила PythonWin - небольшой бесплатный редактор, включенный в CD с ArcGIS. После запуска вы увидите простую панель инструментов с кнопками для редактирования содержимого кода и его запуска, а также с инструментами отладчика (используется для поиска ошибок в работе скрипта). Ниже представлены два окна - окно сценария, в котором создается правильный контент, и интерактивное окно, где вы можете напрямую общаться с интерпретатором Python, выполняя отдельные команды. Esri не навязывает PythonWin. Другие среды также поддерживаются.

Рис. 4. PythonWin - интерфейс и фрагмент кода с видимым форматированием.

ArcPy позволяет использовать инструменты геообработки, а также предоставляет более продвинутые инструменты. Благодаря объектам Cursor в сценариях вы можете получать доступ к отдельным объектам из класса объектов или строк в таблице, редактировать их, удалять их и создавать новые, в том числе на уровне геометрии объекта - вы можете читать точки, которые создают объект или создают новые объекты. Есть объекты, описывающие данные; эта информация может храниться в списках и повторяться после них, что приводит к действительно автоматической работе на съемочной площадке. ArcPy сотрудничает с механизмом Data Driven Pages, поддерживая создание серии карт и составление коллективных документов. Готовый скрипт, как и модель, можно добавить в ArcToolbox как его собственный инструмент и использовать в других скриптах или моделях. Он может быть доступен для использования из диалогового окна вызова, что удобно для менее продвинутых пользователей.

Это полезно?

Стоит знать механизмы автоматизации и моделирования работ. В этой статье возможности ArcGIS, включая ArcPy, описаны только в общих чертах - чтобы вы могли ознакомиться с ними. Python особенно достоин плетения, потому что с каждым выпуском его возможности расширяются, и производитель программного обеспечения объявил, что начиная с версии 10.1 (которая должна появиться уже в этом году) потенциал сценариев будет увеличиваться. Можно будет создавать плагины (Add-In) для ArcGIS Desktop. Это очень большой шаг вперед и жест для промежуточных пользователей. Это позволит расширить функциональные возможности платформы, не прибегая к более сложным инструментам, требующим дополнительных знаний в области ИТ, таким как Java или Microsoft.Net. Python - это хороший способ войти в мир создания собственных ГИС-решений и инструментов.