Создание и подключение дополнительных библиотек к ENVI

Материал из GIS-Lab
Версия от 10:15, 28 июля 2012; Voltron (обсуждение | вклад) (Новая страница: «{{Статья|Опубликована|envi-plugin}} {{Аннотация|Как создать и подключить дополнительный модуль…»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску
Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/envi-plugin.html


Как создать и подключить дополнительный модуль в ENVI.

ENVI по оценкам комиссии при правительстве США признан самым функциональным пакетом для обработки ДЗЗ. Однако его функции еще больше расширить подключением дополнительных модулей.

Подключаемые модули (plugins) являются удобным способом расширить функциональность ENVI, подключаемые модули создаются из программ написанных на языке IDL. Модули имеют расширение .sav.

Создание модуля

Допустим у вас есть программа на языке IDL, имеющая три процедуры: Proc1, Proc2, Proc3.

для того, чтобы превратить эту программу в модуль, вы долны исполнить следующую команду

SAVE [, Var1, ..., Varn] [, /ALL] [, /COMM, /VARIABLES] [, /COMPRESS] [, FILENAME=string] [, ROUTINES] [, /SYSTEM_VARIABLES] [, /VERBOSE]
  • Var1, Var2, ..., перечисление переменных предназначенных для сохранения;
  • ключ /ALL позволяет сохранить все системные и локальные переменные, общие блоки, без их перечисления;
  • ключ /COMM позволяет сохранить общие блоки;
  • ключ /VARIABLES сохраняет все переменные (опция по умолчанию);
  • ключ /COMPRESS сжимает файл модуля по свободно распространяемому алгоритму компрессии ZLIB (v.1.1.3);
  • FILENAME позволяет указать имя и путь к файлу в который будет записан модуль;
  • ROUTINES сохраняет процедуры (все если список процедур не указан);
  • ключ /SYSTEM_VARIABLES указывает, что нужно сохранить текущее состояние системных переменных;
  • ключ /VERBOSE включает режим извещения о скомпилированных процедурах и переменных в процессе сборки модуля

таким образом, для компиляции нашей программы во внешний модуль, нужно ввести в командную строку IDL, такую команду:

Save, /ROUTINES, filename="c:\temp\test.sav", /verbose

или

Save, /ROUTINES, "Proc1", "Proc2", "Proc3", filename="c:\temp\test.sav", /verbose

Компилировать модули рекомендуется из среды разработки IDL, а не ENVI, это просто отличить по системной подсказке, если она IDL> то все нормально, если ENVI>, то лучше не использовать первый способ (компилировать все процедуры) , потому что скомпилируются все процедуры ENVI также и получится огромный файл модуля.

Компилировать одновременно переменные и процедуры нельзя, по умолчанию (при отсутствии слова /ROUTINES) компилируются переменные.

Скомпилированные данные записываются в формате XDR — eXternal Data Representation.

Подключение созданного модуля

  • Скопировать полученный модуль в папку $Envi35\IDL55\products\envi35\save_add\ помещенные в нее модули автоматически компилируются и подключаются в ENVI
  • Создать раздел и кнопку на панели инструментов. Для этого нужно в файле envi.men, который располагается в папке $Envi35\IDL55\products\envi35\menu\ добавить следующие строки:
    0 {MyPlugins} ;название которое появится как раздел на панели меню ENVI
    1 {Radiometric correction} {} {Proc1} ;название подраздела-кнопки, при нажатии на которую будет запускаться процедура Proc1
    

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