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

Пишем в ArcGIS первый простой скрипт Python

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

 

Представим, что в таблице отметок высот otmetki нужно создать символьное поле  Kod и добавить в него литеру 'н', 'c' или 'в' (низкая, средняя, высокая) в зависимости от значения высоты в поле elev. Первом делом нам придётся создать это поле. Поступаем сл. образом - в атрибутивной таблице жмём по значку Table Options в левом верхнем углу и в контекстном меню выбираем Add Field :

 

Добавить поле ArcGIS

 

... и в сл. форме задаем атрибуты нового столбца (он будет текстовым  длиной 1 символ для случая нашего примера):

 

 

Теперь настало время работы с Field Calculator - щёлкаем по заголовку вновь созданного столбца и выбираем соотв. пункт меню:

 

Field Calculator в ArcGIS

 

В форме Field Calculator в секции Pre-Logic Script Code есть возможность набрать на диалекте Python нужный нам код :

 

 

 

Небольшой комментарий к рисунку выше. Значение поля Kod  будем вычислять с помощью авторской функции MyFunc. Аргумент  этой функции будем брать из поля elev - в коде это означается как MyFunc(!elev!). Само тело функции (как было указано выше) пропишем в секции Pre-Logic (не забываем для этого выставит флажок Show Codeblock!). Для наглядности приведём здесь код нашего простенького примера с использованием оператора if ... elif ... else:

 

def MyFunc(value):

   if value<1000:

       return 'н'

   elif (value > 1000.0 and value < 2000.0):

       return 'с'

   else: return 'в'

 

Жмём на форме Field Calculator OK и если все было сделано корректно, видим заполненный индексами 'н', 'с', 'в' столбец Kod (для нашего примера). К сожалению, редактор скриптов Python в секции Pre-Logic обладает некоторыми недостатками. Во-первых, нет наглядного контроля проверки корректности введенного кода типа наличия кнопочки Check . А во-вторых,  текст  крайне чувствителен  к наличию ведущих пробелов (правда, этот момент  является особенностью синтаксиса Python' а. Блочные операторы типа if здесь выделяются отступом относительно заголовка конструкции). Например, если в приведенном примеры всего-навсего сдвинуть вправо на несколько позиций конструкцию if :

 

 

... то неминуемо получите сообщение об ошибке типа этого:

 

 

В общем, эту особенность Python  надо иметь в виду. Однако, продолжим ...

 

 

В качестве ещё одного небольшого  примера можно привести решение такой учебной задачки. Предположим, что необходимо заполнить поле Podpis строковым значение, которое должно состоять из названия вершины заглавными буквами и через дефис высоты. Причем для тех отметок, где нет названия, значение должно быть пустым. Соответствующий скрипт может выглядеть так:

 

Небольшой комментарий. Преобразование названия вершины к верхнему регистру выполнено оператором nazv.upper(), а преобразование числового значения высоты конструкцией  '{0}'.format(elv)

 

 А соответствующий  результат заполнения поля Podpis после отработки макроса будет таким:

 

 

Прим. Основные встроенные функции по обработке ваших данных разработчики разместили справа в секции Functions . Для приведенного примера, с тем, чтобы воспользоваться  в нашем учебном случае функцией .upper() достаточно выбрать список типов ( в нашем случае String) и просто дважды щёлкнуть по нужной функции - она тот час же 'залетит' в код скрипта:

 

 

Что характерно. Аналогичного результата можно добиться, используя утилиту Calculate Field из набора Data Management Tools>Fields:

 

Кстати сказать, добавить/удалить поле из атрибутивной таблицы можно с помощью утилит Add/Delete Field

 

Заполнение всех необходимых реквизитов для решения поставленной выше задачки будет выглядеть сл. образом:

 

 

Сообщения об ошибках выполнения скрипта можно посмотреть по меню Geoprocessing>Results (Геообработка>Результаты) :

 

 

Прим. от 21.05.2015  Еще об использовании Python в ArcGIS (создание простой среды разработки) можно посмотреть на нашем сайте здесь

©Simashkov.2014

30.05.2014 г.

Назад