Использование калькулятора значений при работе с атрибутивной информацией в ArcMap

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.
Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/calculate.html


Использование калькулятора значений при работе с атрибутивной информацией в ArcMap

Calculate Values (калькулятор значений) мощное средство для работы с атрибутивной информации в ArcMap. Данный инструмент позволяет быстро вводить новые значения, в том числе на основе данных содержащихся в атрибутивной таблице, с помощью него можно значительно автоматизировать часть работы по вводу данных.

Для того чтобы воспользоваться калькулятором значений, необходимо добавить shape-файл, геобазу данных, или любой другой поддерживаемый ArcMap векторный файл в mxd-документ, открыть его таблицу атрибутов, далее выделив какой-либо из столбцов (если вы ничего не меняли в настройках он подсветится светло-голубым цветом) нажать правую кнопку мыши и в появившемся меню выбрать Calculate Value.

Если Вы все сделали правильно, появится следующее окно, где:

  • Fields - cписок столбцов содержащихся в таблице;
  • Type - тип вводимых данных
  • Functions - список функций доступных для выбраного типа данных;
  • Операторы (умножить, разделить и т.д.)
  • Поле ввода выражения или значения, флажок Advanced - включение режима вводе VBA Script кода;.
  • Save / Load - Сохранить/загрузить составленное выражение.
Calculate-01.jpg

Примеры

Рассмотрим три примера для простого режима, режима Advanced и для работы с текстовыми строками.

Пример 1

Необходимо расчитать плотность населения некоторого региона. В атрибутивной таблице имеется два поля. Количество населения ('colpop) и Площадь ('sqa). Для нахождения плотности необходимо Количество населения проживающего в регионе разделить на площадь данного региона. Мы создаем новое поле Плотность населения (density) и в калькуляторе значений пишем:

[colpop] / [sqa]

Рассчитанное значение будет записано в поле Плотность населения (density).

Пример 2

Предположим, имеется некоторая атрибутивная таблица с одним полем (например, количество постоянного населения какого-либо региона - colpop') состоящая из 10 000 записей. Вам необходимо проранжировать данные значения и в зависимости от ранга ввести некий новый код в соответствующее поле. Разумеется, вручную переработать такой объем информации невозможно. Но, применив VBA ' script можно автоматизировать данный процесс.

В режиме VBA (переключатель Advanced установлен) нужно ввести следующий текст в поле Pre-logic VBA Script Code

if [colpop] > 200 then df= "BIG"
if [colpop] < 200 then df= "LOW"

В следующем текстовом поле нужно ввести df. В результате все должно выглядеть так:

Calculate-03.gif

В данном случае, результат (присвоенный код) сохраняется в поле, которое также называется df (это поле должно быть текстового типа, так как вводимые значения - "BIG", "SMALL" - представляют из себя текстовые строки).

Этот код выполняет два простых условия:

Если значение колонки ['colpop] больше 40, то переменная df равна "'BIG", а если значение меньше 40, то переменная df равна "LOW". Результат, которых получает переменная df записывается в одноименное поле (имя поля может быть и другим).

Пример 3

Очень удобно использовать Calculate ' Values как расширенную альтернативу инструмента Найти и заменить (Find & ' Replace).

Данная операция позволяет быстро найти определенную подстроку и заменить ее на другую, результат операции может быть записан в то же поле где хранятся исходные значения и в новое поле.

Replace([field] , "text1", "text2")

Пример: Значение "ABC" при операции Replace([field] , "BC", "BBBBBC") будет заменено на "ABBBBBC".

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