<<На Главную         <В меню Советы по ArcGIS

Наличие встроенного средства автоматизации рутинных процедур является непременным условием (атрибутом) для всякого мало-мальски коммерчески-успешного  программного продукта. Без такого инструмента  компания-производитель  вряд ли сможет рассчитывать на удачу в   завоевание какой-то  ниши в своем сегменте  рынка программного обеспечения. И тут, в качестве показательного примера, первое что приходит на ум, так это скажем, язык  VBA для MS Office, язык Lisp для AutoCAD или, что ещё ближе к нашей тематики ГИС, язык MapBasic для MapInfo, ну и так далее ...

 

 

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

С точки зрения пользователя ArcMap, наиболее  доступное решение предлагается в виде использования окна интерпретатора Python по меню Geoprocessing(Геообработка) >Python:

 

С целью демонстрации примера использования окна интерпретатора рассмотрим решение небольшой, но достаточно типичной задачи по созданию буферной водоохранной  зоны для слоя рек ну скажем в 2000 метров:

Интерпретатор Python ArcGIS

 

Комментарий к рисунку выше. Команды следует вводить последовательно, одна за одной, после приглашения в виде набора символов '>>>'. Финальную операцию по построению буферной зоны для случая нашего примера выполнили с использованием функции arcpy.Buffer_analysis.

Справку по синтаксису для конкретного построения можно получить из формы соотв. инструмента (Buffer для нашего примера) ... :

 

... по кнопке Tool Help - раздел Code Sample (Пример кода) :

 

Прим.   Понятное дело, при  наборе команд Python вы должны придерживаться правил корректного кода, иначе неминуемо получите аварийное сообщение.

Набор команд в окне интерпретатора хорош для получения мгновенного  результата (естественно, при условии что вы в достаточной мере овладели особенностями синтаксиса Python и библиотеки ArcPy). Но что делать, если возникла необходимость систематического выполнения какого-то набора команд или вам попросту стало надоедать набивать каждый раз одни и те же конструкции с клавиатуры? Простейшее решение заключается в создании программы в виде набора команд в каком-либо текстовом редакторе . Такие инструкции часто попросту называют скриптами. В нашем случае речь идет о скриптах на языке Python - текстовых файлах с расширением .py  .  Созданный таким образом файл вы должны передать в качестве параметра командной строки для компилятора Python. В случае установки ArcGIS, последний инсталлируется , как правило, в каталог C:\Python27\ArcGIS10.2\:

Инструкция на выполнение скажем , скрипта bufer.py должна быть такой -  C:\Python27\ArcGIS10.2\python.exe  bufer.py . Но и тут , набор каждый раз такой команды с клавиатуры вам, вероятнее всего,  вскоре поднадоест. Сейчас попробуем решить проблемку создания скрипта и запуска его на выполнение с помощью какого-нибудь подходящего текстового редактора, ну например TextPad.

Выражаясь несколько фигурально, использование окна интерпретатора Python  - это своего рода фастфуд для пользователя ArcGIS в плане автоматизации. Получается быстро, но не очень вкусно. Если, по приведенной аналогии,  есть желание приготовить кулинарный шедевр - придется потратить  немного больше усилий и времени. В том смысле, что создавать  более функциональный код . Но зато есть большая вероятность того, что и блюдо  выйдет   более пикантным и изысканным. И тут уж ничего не попишешь. Вся наша жизнь, в каком-то смысле, искусство импровизации и эксперимента . Как  говорили не в столь далекие  былые времена,  - твори, выдумывай, пробуй!

Однако, после небольшого лирического отступления, продолжим ... Собственно, сам указанный редактор TextPad вы без труда найдете на бескрайних просторах Интернета. Итак,  устанавливаем TextPad и идем меню Configure>Preferences:

В окне настроек Preferences выбираем ветку Tools  и по кнопке Add пункт Program ... :

... указываем путь к компилятору Python:

Теперь настройка команды для компиляции скрипта Python  должна выглядеть сл. образом:

Наступает рутинная работа - набираем сам  текст  скрипта. Пусть для случая нашего учебного примера он будет  таким:

Теперь , с учетом проделанной работы, для  выполнения нашей простенькой программки идем меню Tools>External Tools (или просто Ctrl+1) :

На следующем рисунке показан пример успешного выполнения скрипта по подсчету длин рек из набора rivers.shp :

 

 В общем, как видите, настроить текстовый редактор TextPad на выполнение скриптов Python совсем несложно (как два байта переслать :-). В результате получите, хоть и простенькую, но какую-никакую среду разработчика.  

 

Если вашим любимым текстовым  редактором является Notepad++, то можно попробовать приспособить и его для  выполнение соответствующих макросов. Сейчас попытаемся это сделать следующим образом. Первым делом, по меню Плагины>Plugin Manager  ...

 

 ... нужно будет установить плагин NppExec :

 

Следующий шаг - по меню Плагины>NppExec>Execute ... :

 

... настраиваем на выполнение компиляции текущего открытого файла следующей командой - c:\Python27\ArcGIS10.2\python.exe  " $(FULL_CURRENT_PATH)" :

 

Теперь если запустить указанную команду на выполнение , должны получить приблизительно такой результат (не забудьте в плагине NppExec выставить опцию Show Console Dialog !):

 

Изменить фонт консоли (например, сделать его более крупным) , кстати сказать, можно в пункте меню Change Console Font :

 

Далее, для удобства запуска скрипта на выполнение, можно просто в Notepad++  жать Ctrl+F6.

 

 

В общем теперь, надеюсь, вы сможете настроить понравившийся редактор , и использовать его в качестве среды разработки. Все гораздо лучше и удобнее, чем молотить команды в окне Python. На этом, пожалуй, и остановимся. Успехов вам в изучении и создании макросов Python в ArcGIS!

 

О том, как решить аналогичную задачу по созданию программы на MapBasic в ГИС MapInfo  смотрите на нашем сайте здесь

©Simashkov.2015

20.05.2015 г.

Назад