Обсудить в форуме Комментариев 0Редактировать в вики
Первая часть серии статей о языке EASI, основные команды языка по работе с растровыми данными.
Критерии практической ценности различных систем обработки дистанционных данных постоянно меняются, особенно в России. Еще несколько лет назад основным критерием выбора программного обеспечения был набор функциональных возможностей и алгоритмов обработки данных. Однако в последние годы две тенденции: усиление контроля за лицензированием ПО и лавинообразный рост количества доступных данных требуют изменить сложившиеся представления. Возможно, специалистам, ранее пользовавшимся дорогими (но не лицензированными) системами «высшего уровня», типа ERDAS Imagine, следует подумать о приобретении легальных копий более дешевых систем; а вместо ориентации на индивидуальную обработку снимков, подумать об автоматизации процесса обработки.
Одной из достаточно дешевых полнофункциональных систем обработки изображения является канадская PCI Geomatica (http://www.pcigeomatics.com). Пользователям продуктов ESRI и ERDAS интерфейс программы может не понравиться своей необычностью и небольшим набором встроенных функций. Большинство операций обработки данных осуществляются с использованием конструктора моделей (Modeler) и встроенного макроязыка EASI. Однако именно опора на использование языка командной строки в Geomatica делает автоматизацию процессов чрезвычайно простой. Дополнительный значительный плюс языка EASI – возможность запуска интерпретатора из командной строки с именем файла скрипта в качестве параметра (easi r myscript.eas). Это позволяет с легкостью создавать длинные цепочки операций, в которых скрипты EASI могут создаваться и запускаться из других оболочек (например, PERL). Geomatica поставляется как для ОС Windows, так и для Linux, что позволяет использовать ее на мощных серверах обработки данных.
В данной статье рассмотрены особенности работы с языком EASI и приведено описание основных команд по созданию и управлению данными. В следующих статьях мы остановимся на анализе данных, привязке и работе с проекциями и возможностях автоматизации.
Запуск и правила использования команд в языке EASI чрезвычайно простые. Интерпретатор запускается как из оболочки (панель задач Geomatica) так и из командной строки. Мы предлагаем по возможности использовать второй путь, не загромождая память компьютера интерфейсом оболочки системы. Итак, из рабочей директории набираем:
easi
Первое сообщение при запуске EASI из новой директории «отсутствует файл параметров!» Чтобы скопировать файл параметров в рабочую директорию, набираем
r copprm
В рабочей директории будет создан файл параметров PRM.PRM.
Собственно, теперь можно выполнять команды. Для выполнения команд можно использовать три ключа, добавляемых перед именем команды:
Параметры команд вводятся до их запуска. Например:
Следует обратить внимание, что значения параметров сохраняются в созданном файле параметров PRM.PRM. Это может сильно сэкономить время для ввода параметров к последующим командам. Однако всегда будьте внимательны и проверяйте значения параметров перед запуском команд. Для проверки набираем:
s cim
На экран будут выведены параметры команды и их значения.
Для выхода из интерпретатора наберите exit.
Скрипты являются последовательностью параметров и команд – в точности так же, как если бы они вводились в командной строке. В начале скрипта полезно вставлять r copprm на случай, если вы скрипт запускается в новой директории. Скрипт EASI имеет расширение .eas. Например myscript.eas.
Пример содержание скрипта:
file=”new dbsz=10,10 dbnc=1,0,0,0 dblayout=”file r cim
Никаких специальных команд начала и завершения скрипта не используется.
Запуск скрипта из среды интерпретатора выглядит как запуск команды:
r “myscript.eas
В среде Windows можно опустить кавычки и расширение:
r myscript
Запуск из командной строки (или из среды другой программы) выглядит так:
easi r myscript
Подробнее на использовании скриптов и специальных функций языка в скриптах мы остановимся в отдельной статье.
Работать с данными в PCI Geomatica удобнее, используя собственный стандарт данных PCIDSK. Файлы PCIDSK включают в себя собственно растровые изображения (каналы, raster layers, image channels) и дополнительные данные в виде сегментов (segments).
Каналы характеризуются радиометрическим разрешением (8 bit, 16 bit unsigned, 16 bit signed, 32 bit real). В одном файле могут содержаться каналы с разным радиометрическим разрешением (в отличии от ERDAS Imagine). В файле данных каналы могут храниться в основном файле с расширением .pix или во внешних файлах, имеющих то же имя и расширение .001, .002 и т.д. Если каналы хранятся в одном файле, то возможны два варианта хранения каналов: разбивка по пикселям (как в формате BIP) или разбивка по каналам (BSQ). Следует заметить, что при хранении каналов в одном файле часто возникают сбои при попытках создания или удаления каналов. Мы советуем всегда использовать внешние файлы для хранения каналов.
Сегменты хранятся в основном файле с расширением .pix. Сегменты отличаются порядковыми номерами (нумерация сегментов непрерывная) и трехбуквенными кодами, обозначающими тип сегмента (трехбуквенные коды эквивалентны численным кодам, которые используют некоторые команды). И каналы, и сегменты имеют текстовые метки имени и описания.
Основные типы сегментов:
Дополнительные типы сегментов:
Файл PCIDSK с каналами, разделенными по отдельным файлам, выглядит следующим образом:
myfile.pix myfile.001 myfile.002 myfile.003
Для обработки все файлы с одним именем должны храниться в одной директории. Файлы каналов, «оторванные» от основного файла, могут быть импортированы в PCI, если известна структура данных и привязка. Основной файл с расширением .pix может быть использован для операций над сегментами даже в случае отсутствия файлов каналов.
Использование:
run cim
Пример:
r cim (выполнить команду)
Использование:
r cimpro2
Если импортируемый файл растровый, будет создан канал в новом файле. Если импортируется векторный формат – будет создан файл с векторным сегментом. Информация о привязке, если может быть прочитана, будет внесена в сегмент №1.
run fimport
Возможен экспорт как векторных, так и растровых изображений, а так же специальных сегментов (например, Look up Table)
run fexportt
При экспорте в растровые форматы нельзя указывать векторные сегменты и наоборот.
Эта команда позволяет Вам создать файл .pix с внешним каналом данных, который представляет собой исходный растровый файл. Таким образом могут быть импортированы и файлы с информацией о привязке (например, geotif или ERDAS img).
run link
Полезное замечание: все операции над «привязанным» файлом будут выполняться аналогично обычному каналу файла PCIDSK. При этом формат файла, имя с расширением и встроенная информация о проекции будет сохранены. Таким образом, по окончании операций, файл можно использовать как обычный geotif или ERDAS img.
NUMWRIT – выгрузка растровых данных в виде текстового файла. NUMREAD – чтение текстового файла в растровое изображение. IMAGERD – импорт бинарных файлов.
Описание этих команд можно найти в справочной системе EASI.
r pciadd2
Полезное замечание: в качестве существующего канала могут быть использованы файлы в формате geotif, img и другие. Совместное использование с командой LINK (см. выше) позволяет Вам собирать «временные» базы PCIDSK из файлов в других форматах для их совместной обработки. По окончании анализа сам файл *.pix может быть удален. Пример формирования базы данных из двух изображений в формате geotif (проекция и размер изображений должны быть одинаковыми!):
fili="file1.tif filo="temp.pix r link file=filo datatype="16u addmode="exist ifile="file2.tif r pciadd2
r pcidel2
Специальной команды создания сегментов типа растровых масок или векторов не существует. Однако часто бывает нужно создать пустую растровую маску для последующего использования в ходе обработки. Обходной путь здесь – использование команды пороговых значений (THR) со значениями, заранее превосходящими амплитуду значений в пределах канала. Например:
r thr
Подробнее команда THR будет рассмотрена в следующей статье.
Номер сегмента останется в базе данных, однако сегмент будет помечен «Deleted», и его номер будет свободным – то есть достанется следующему созданному сегменту.
r das
Обычно используется для неграфических сегментов – сегментов привязки, таблиц радиометрической коррекции и пр.
r iia
r iib
При переносе растровых данных необходимо, что бы оба файла имели одинаковый размер (в пикселях). Желательно (но не обязательно) что бы привязка была одинаковой. Если привязка и размер пикселей совпадают, но линейный размер различается, можно использовать дополнительные параметры:
r iii
Так же, как и при переносе растровых масок, изображения должны иметь одинаковый размер в пикселях. Возможно использование параметров dbiw и dbow (см. выше).
Усреднение значений выполняется в соответствии с различием в размере пикселей исходного и выходного растров
Параметры команды аналогичны III:
r iiiavg
Для получения корректного результата, растровые сетки должны быть вложенными, т.е. в пределах пикселя выходного файла должно размещаться целое число пикселей исходного файла. Вложенные растровые сетки должны иметь одинаковый размер. Возможно использование параметров dbiw и dbow (см. выше).
Полезное замечание: данная команда удобна для расчета процентного содержания одного класса в пределах пикселей растра с меньшим пространственным разрешением. Для расчета % целевого класса, задайте всем пикселям данного класса значение 100, а прочим пикселям значение 0 в исходном изображении. После выполнения команды IIIAVG выходное изображение будет содержать % класса в пределах каждого пикселя. Команда выполняет округление значения до ближайшего целого в случае использования 8-битного канала. Если Вы хотите сохранить точные значения, канал выходного файла должен быть целочисленным (32r).
r mosaic
Для уменьшения эффекта перекрытия снимков используются дополнительные параметры:
Полезное замечание: удобная недокументированная возможность команды – перепроецирование данных из проекции исходного растра в проекцию выходного растра. При пересчете значений всегда использеется алгоритм «ближайшего соседа» (nearest neighbor). Команда так же может быть использована для «обрезки» растров по размерам, заданным размерами выходного изображения.
Список каналов выводится с кратким описанием (тип данных, имя канала и др.)
r cdl
Список сегментов выводится с кратким описанием (тип данных, имя сегмента и др.)
r asl
r ihr
Список создаваемых в памяти переменных:
Полезное замечание: команда IHR удобна, если Вы хотите создать «чистую» копию растра с сохранением размеров и привязки. Вот как будет выглядеть последовательность команд:
file="old (имеющийся растр) r ihr file="new (создаваемый растр) dbsz=imstat(1),imstat(2) (используем переменные из памяти) dbnc= 10,0,0,0 (число каналов по типам) dblayout="file r cim (создаем файл) fili="old filo="new dbsl=1 dbos=1 r iia
Последняя команда – копирование сегмента привязки. Поскольку создаваемый файл имеет такой же размер, что и исходный, сегменты привязки у них будут идентичными.
Обсудить в форуме Комментариев 0Редактировать в вики
Последнее обновление: 2014-05-14 23:26
Дата создания: 15.08.2007
Автор(ы): Пётр Потапов
© GIS-Lab и авторы, 2002-2021. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов. (подробнее).