Компиляция MOD14 SPA

MODIS Active Fire Product (MOD14) Science Processing Algorithm MOD14_SPA является открытой реализацией алгоритма обнаружения пожаров по космическим снимкам MODIS. На странице Direct Readout Laboratory (DRL) NASA можно найти бинарные сборки инструментов, но только для некоторых (довольно старых и 32-разрядных) дистрибутивов Linux. К счастью, там же можно загрузить и архив с исходным кодом и собрать утилиты самостоятельно.

Общие сведения

Алгоритм 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;
}

При желании MS Doors можно заменить на свой идентификатор.

Теперь редактируем файл 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.

Компиляция в Linux

Пользователям ОС Linux повезло больше. Во-первых, они могут обойтись без компиляции, т.к. в архиве с исходным кодом присутствуют исполняемые файлы, скомпилированые статически для Intel-совместимых 32-х разрядных систем (сборка выполнена на Fedora Core 4 при помощи компилятора gcc 4.0.2). Во-вторых, самостоятельная сборка на порядок проще по сравнению с Windows. Нам понадобятся те же библиотеки, что в случае Windows, а именно:

  • библиотека для работы с форматом HDF4
  • библиотека для работы с форматом JPEG
  • библиотека сжатия ZLIB
  • библиотека сжатия SZIP (не обязательно)

Библиотеки ZLIB и JPEG скорее всего уже будут установлены, нужно только убедиться что кроме самих библиотек присутствуют и dev-версии соответствующих пакетов. Сделать это можно при помощи пакетного менеджера вашего дистрибутива. Библиотеку HDF4.2.x можно получить несколькими способами:

  • установить при помощи пакетного менеджера (предпочтительнее)
  • загрузить статическую сборку с сайта HDF Group. Внимание! Смотрите на версии компиляторов. Если вы используете компиляторы, отличные от указанных на странице загрузки, вам необходимо скомпилировать библиотеку самостоятельно или попытаться установить ее из репозитория.
  • скомпилировать и установить библиотеку самостоятельно

Далее будем предполагать, что все необходимые библиотеки установлены. После распаковки оригинального архива с исходным кодом переходим в каталог algorithm. Перед сборкой необходимо отредактировать файл Makefile, указав используемый компилятор (по умолчанию будет использоваться gcc), кроме того, при необходимости можно изменить список опций компилятора. Здесь же, в переменной HDFHOME, указывается путь к каталогу установки библиотеки HDF (обычно это /usr или /usr/local). Затем последовательно выполняем команды

make clean

для очистки каталога от существующих бинарных файлов, и

make

для запуска компиляции.

Мітки: ,

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*