Обсудить в форуме Комментариев 0Редактировать в вики
Вторая часть серии статей о языке EASI, основные команды языка для анализа данных.
Язык EASI отличается чрезвычайной простотой выполнения арифметических и логических операций над растровыми данными. Для выполнения расчетов с использованием нескольких растров, необходимо, что бы изображения были собраны в один файл PCIDSK. Для проведения расчетов дополнительные каналы данных из других файлов можно временно привязать к рабочему файлу с помощью команды PCIADD2 с опцией exist (см. предыдущую статью).
Перед началом выполнения операций необходимо задать рабочий файл с помощью параметра file:
file=”(имя файла)
При создании арифметических выражений ссылка на каналы данных обозначается «%»: %1 – первый канал.
Ссылка на растровые маски (сегменты) выглядит так: %%2 – сегмент номер 2.
Примеры записи простых выражений:
Возможна запись результата в исходный канал:
Существует ряд дополнительных команд, которые можно использовать в арифметических выражениях:
Пример использования функции:
В случае, когда результат нужен только на время вычисления, можно использовать переменные. Переменные декларируются перед началом операции:
local int i i= max(%1,%2,%3)
Если однотипную операцию надо провести над множеством каналов, можно использовать циклы:
local int i for i = 10 to 15 %{i}=%{i-9}*100 endfor
Каналы 10-15 получат значения каналов 1-6, умноженных на 100.
Впрочем, использование циклов не ускоряет расчеты, поэтому для наглядности обычно удобнее использовать простые команды.
Для обозначения пространственных координат пикселя существует набор встроенных переменных, которые также бывает полезно использовать в расчетах:
Дополнительно об использовании встроенных переменных смотрите в справочной системе EASI.
Описание простого условия в EASI выглядит так:
Условие с записью результата в растровую маску (сегмент):
if (%1>100) %%2=1
Помните, что пиксели растровой маски принимают только значения 0 и 1.
Выполнение действия только в пределах растровой маски:
if (%%2=1) %2=%1+10
Двойное условие:
if (%1>100) and (%3=1) %2=3 if (%1>100) or (%3=1) %2=3
Сложное условие:
if (%1>100) or (%2<=1) then %3 = 5 %4 = 20 else %3 = 0 %4 = 10 endif
Использование:
r ari
Использование команды ARI в цикле:
local int i for i = 1 to 5 cnst=90 mask= oper="add dboc=i r ari endfor
К значениям каналов 1-5 будет прибавлена константа 90.
Пример простого использования – изменение диапазона значений 1-100 на 1-255
r scale
Дополнительный параметр sfunct позволяет задать тип функции для масштабирования - подробнее смотрите в справочной системе EASI.
r clr
r blo
Типы операций для масок a и b
r map
r thr
Создаёт выборку на основе существующей растровой маски. Подробнее смотрите в справочной системе EASI.
Помимо прямого использования арифметических и логических операторов, вводимых из командной строки или записанных в виде скрипта, в EASI используется специальный язык моделей, сходный по синтаксису с самим EASI. Модели для выполнения записываются в файлы с расширением .mod и вызываются на выполнение командой MODEL:
r model
В файле модели имя файла не указывается. Таким образом, одна и та же модель может быть применена к множеству файлов с одинаковым набором каналов.
Основное отличие языка моделей от языка EASI – необходимость разделения строк точкой с запятой:
%1=%2+10;
Запись условия:
if (%1>100) then %2=3; %3=4; endif;
Встроенные функции работают как в языке EASI:
%10= max(%1,%2,%3);
Декларировать переменные в моделях не нужно. Скалярные переменные обозначаются знаком «#»:
Текстовые переменные (если они нужны) обозначают знаком «$»:
$a="test"
Другой вариант использования модели: ввод модели из командной строки или из скрипта. Для этого перед началом записи модели введем выражение:
model on " (имя файла)
Далее поместим текст модели и завершим модель:
endmodel
ОБРАТИТЕ ВНИМАНИЕ: если модель вводиться таким образом из командной строки или в скрипте, использование точке с запятой в конце строки не допускается!
Создание фильтров на языке EASI основано на использовании специальных переменных, определяющих координаты пикселя в единицах растра: @x, @y (см. выше). Запись фильтра, вычисляющего среднее значение канала 4 в плавающем окне 3х3 пикселя выглядит так:
model on “(имя файла) %7 = (%4[@x-1,@y-1] + %4[@x,@y-1] + %4[@x+1,@y-1] + \ %4[@x-1,@y ] + %4[@x,@y ] + %4[@x+1,@y ] + \ %4[@x-1,@y+1] + %4[@x,@y+1] + %4[@x+1,@y+1] ) / 9 endmodel
Фильтры, заданные таким образом, корректно обрабатывают края изображения, дублируя значения из области растра за пределы изображения.
Существует набор специальных команд для выполнения стандартных операций фильтрации.
r fav
r fme
Вычисляет среднее модулей разности значений пикселей окна с центральным пикселем.
r fed
Этот фильтр аналогичен majority filter в ERDAS Imagine.
r fmo
Существуют два дополнительных полезных параметра этой команды:
При использовании фильтра 3х3 значение «on» (по умолчанию) означает, что вычисление моды будет производиться только тогда, когда число пикселей класса, которому принадлежит центральный пиксель окна, меньше 3. Это позволяет при фильтрации тематических карт сохранять линейные объекты.
Значения классов, фильтрация которых не производиться.
Дополнительные команды фильтрации (описание команд смотрите в справочной системе EASI):
r his
Существует несколько дополнительных параметров, настраивающих вид гистограммы. Описание дополнительных параметров команды смотрите в справочной системе EASI.
Помимо графического или табличного представления гистограммы значений, будет выведено среднее, медиана, мода, максимум и минимум значений, а так же число пикселей, использованных для расчета. Поскольку формат вывода стандартный, результаты вывода в файл могут быть обработаны простыми программами для создания таблиц значений. Пример обработки файлов с использованием программ на языке PERL приведен в 4-ой статье.
r hisdump
Значения параметра hisform определяют формат таблицы:
Описание дополнительных параметров команды смотрите в справочной системе EASI.
Векторные данные обычно хранятся внутри рабочих файлов PCIDSK в виде сегментов. Для этого проекция вектора должна совпадать с проекцией растровой базы данных. Если Вы импортировали векторный файл в PCIDSK из формата shp, скажем, в географических координатах, то для переноса векторного сегмента в рабочий растровый файл его надо спроецировать командой VECPRO.
Краткий вариант использования команды
r vecpro
Программа произведет трансформацию на основе сегментов привязки файлов.
Дополнительные параметры команды (смотрите в справочной системе EASI) позволяют производить трансформацию по выбранным сегментам привязки.
r grdpol
Обратите внимание, что, если номер выходного канала не задан, будет создано новый растровый сегмент и произведена растризация в него. При этом значения поля учитываться не будут.
Подробнее ссмотрите в справочной системе EASI.
r rtv
Дополнительные команды (описание команд смотрите в справочной системе EASI):
Подробное описание команд смотрите в справочной системе EASI.
Преобразование изображений:
Работа с ЦМР (DEM):
Пространственная статистика:
Кластеризация:
Классификация:
Обсудить в форуме Комментариев 0Редактировать в вики
Последнее обновление: 2014-05-14 22:08
Дата создания: 15.08.2007
Автор(ы): Пётр Потапов
© GIS-Lab и авторы, 2002-2021. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов. (подробнее).