Сборка MOD14 SPA
по адресу http://gis-lab.info/qa/mod14-compile.html
Как самостоятельно скомпилировать реализацию MODIS Active Fire Product (MOD14) Science Processing Algorithm MOD14_SPA.
MODIS Active Fire Product (MOD14) Science Processing Algorithm MOD14_SPA является открытой реализацией алгоритма детектирования пожаров MOD14.
Общие сведения
Алгоритм MODIS Active Fire Product (MOD14) Science Processing Algorithm MOD14_SPA использует значения яркости пикселей каналов 4 и 11 микрометрового диапазона (каналы MODIS 21, 22 и 31) для детектирования пожаров. Каналы 1, 2, 7 и 32 используются для маскирования облаков и уменьшения количества ложных срабатываний. В качестве входных данных выступает файл MODIS Level 1B. На выходе будет двумерная маска пожаров в формате HDF (Hierarhical Data Format).
Исходный код приложения можно бесплатно получить на странице загрузок Direct Readout Laboratory. Для получения кода понадобится зарегистрироваться. На момент написания статьи последней версией данного алгоритма была 5.0.1.
Компиляция в Windows
Кроме исходного кода приложений нам понадобятся следующие библиотеки:
- библиотека для работы с форматом HDF4
- библиотека для работы с форматом JPEG
- библиотека сжатия ZLIB
- библиотека сжатия SZIP (не обязательно)
Все эти библиотеки, кроме опциональной SZIP, можно загрузить при помощи установщика OSGeo4W. В дальнейшем будем предполагать, что библиотеки были загружены и установлены в каталог по умолчанию (C:\OSGeo4W).
Также нам понадобится компилятор GCC, точнее его реинкарнация для систем семейства Windows — MinGW. Установить его можно несколькими способами:
- при помощи онлайн-установщика mingw-get-inst (необходимые пакеты будут загружены из сети). Подробнее об установке.
- установка в ручном режиме
- при помощи неофициального установщика все-в-одном TDM-GCC
Установку желательно выполнять в каталог, не содержащий в названии пробелов и/или кириллицы. После установки необходимо проверить наличие в переменной PATH пути к папке bin установленного MinGW.
Исходные коды приложений находятся в каталоге algorithm. Т.к. приложения были разработаны для OC Linux, перед сборкой необходимо отредактировать файл misc.c и привести его к виду
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *make_uname(void)
{
static char unamestr[] = "MS Doors";
return unamestr;
}
Теперь редактируем файл Makefile. В строке 9 указываем путь к каталогу, в котором находятся файлы библиотеки HDF4. Т.к. мы установили ее при помощи установщика OSGeo4W, то эта строка будет выглядеть так
HDFHOME = C:/OSGeo4W
Строку 50 приводим к виду
LIB = -L$(HDFLIB) -lmfhdf -lhdf -ljpeg_i -lzlib -lm
Для удобства мы подготовили архив с исходными кодами, содержащий все необходимые исправления (загрузить). ВАЖНО! Если установка библиотек была выполнена в каталог, отличный от C:\OSGeo4W, необходимо исправить путь в 8-й строке файла Makefile.
После окончания редактирования открываем командную строку, переходим в каталог с исходными кодами и даем команду
mingw32-make
После непродолжительного процесса сборки в каталоге должны появиться два исполнимых файла: mod14.exe и fireloc.exe.
Загрузить адаптированный исходный код и скомпилированные программы для Windows.
Компиляция в Linux
Пользователям ОС Linux повезло больше. Во-первых, они могут обойтись без компиляции, т.к. в архиве с исходным кодом присутствуют исполняемые файлы, скомпилированые статически для Intel-совместимых 32-х разрядных систем (сборка выполнена на Fedora Core 4 при помощи компилятора gcc 4.0.2).
Во-вторых, самостоятельная сборка на порядок проще по сравнению с Windows. Нам понадобятся:
- библиотека для работы с форматом HDF4
- библиотека для работы с форматом JPEG
- библиотека сжатия ZLIB
- библиотека сжатия SZIP (не обязательно)
Библиотеки ZLIB и JPEG скорее всего уже установлены, нужно только убедиться что кроме самих библиотек присутствуют и dev-версии соответствующих пакетов. Сделать это можно при помощи пакетного менеджера вашего дистрибутива.
Библиотеку HDF4.2.x можно получить несколькими способами:
- установить при помощи пакетного менеджера (предпочтительнее)
- загрузить статическую сборку с сайта HDF Group. ВАЖНО! Обратите внимание на версии компиляторов. Если вы используете компиляторы, отличные от указанных, вам необходимо скомпилировать библиотеку самостоятельно или попытаться установить ее из репозитория
- скомпилировать и установить библиотеку самостоятельно
Далее будем предполагать, что все необходимые библиотеки установлены. После распаковки оригинального архива с исходным кодом переходим в каталог algorithm. Перед сборкой необходимо отредактировать файл Makefile, указав используемый компилятор (по умолчанию будет использоваться gcc), кроме того, при необходимости можно изменить список опций компилятора. Здесь же, в переменной HDFHOME, указывается путь к каталогу установки библиотеки HDF (обычно /usr или /usr/local).
Затем последовательно выполняем команды
make clean
для очистки каталога от существующих бинарных файлов, и
make
для запуска сборки.