GIS-LAB

Географические информационные системы и дистанционное зондирование

Запуск алгоритма MOD14 и экстракция данных

Запуск детектирования, экстракция и подготовка данных для ГИС

Обсудить в форуме Комментариев — 0

В этой статье мы рассмотрим процесс получения очагов пожаров в формате, пригодном для отображения в ГИС из сырых данных первого уровня обработки. Статья сопровождается набором скриптов для самостоятельной пакетной обработки данных.

Статья использует пример территории района Черных Земель Республики Калмыкия, 21 июля 2007 года (202 день). Достоверно известно, что в этот возникло большое количество возгораний приведшее в последствии к большому степному пожару. Читатель может использовать этот же пример для тестов (скачать исходные данные).

 Изображение MODIS до (2007202.0815) и после (2007204.0805) крупного степного пожара (загрузить оригиналы).

Оглавление

  1. Получение исходных данных
  2. Создание матриц оценки вероятностей пожаров
  3. Экстракция значений
  4. Подготовка для ГИС
  5. Проверка

1. Получение исходных данных

Исходными данными для детектирования очагов пожаров являются данные первого уровня обработки MOD021KM (Level-1B) и соответствующая матрица геолокации MOD03 полученные камерой MODIS со спутника Terra. Получить такие данные можно через LAADSWeb. Следует обратить внимание, что такие же данные доступны и для камеры MODIS установленной на спутнике Aqua. Таким образом для полной информации необходимо получать данные с обоих спутников. В примерах к данной статье для экономии места рассказывается только про Terra.

Пример запроса на территорию примера выглядит сделающим образом (можно скопировать, вставить в текстовый файл, сохранить и загрузить как настройки поиска):

__PREV_form=AADS
startQAPercentMissingData=0.0
fileName=
bb_top=50
metaRequired=1
scrollX=0
coordinate_system=LAT_LON
north=50
PGEVersion=
scrollY=1059
endTime=07/21/2007 23:59:59
startTime=07/21/2007 00:00:00
__PREV_bboxType=NWES
endQAPercentMissingData=100.0
products=MOD021KM
products=MOD03
south=42
si=Terra MODIS
east=49
orderState=
__PREV_coordinate_system=LAT_LON
bb_left=43
coverageOptions=D
coverageOptions=N
coverageOptions=B
bboxType=NWES
bb_right=49
filterPGEVersion=No
temporal_type=RANGE
filterQAPercentMissingData=No
group=Terra  Level 1 Products
archiveSet=5
west=43
bb_bottom=42

С подробностями о получении данных можно ознакомиться в статье про LAADSWeb.

2. Создание матриц оценки вероятностей пожаров

К полученным парам MOD021KM+MOD03 нужно применить программную реализацию алгоритма MOD14 позволяющего выявлять очаги пожаров. Оригинальный код можно бесплатно получить на странице Direct Readout Laboratory. Для получения кода понадобится зарегистрироваться.

Если вы не можете собрать исполняемый файл из исходного кода - можно воспользоваться исполняемым файлом скомпилированным для Windows/Linux (версия алгоритма 5.0.1) или доступным через EOStation (версия алгоритма 4.3.2). Разница между этими версиями небольшая и согласно логу изменений (mod14\algorithm\README.dat) заключается в небольших изменениях в расчете confidence, FRP и формирования метаданных.

Процесс детектирования запускается командой:

mod14.exe -tg <MOD021KM granule> <MOD03 granule> <L2 fire output file>

Для нашего примера (один из исходных файлов) команда будет выглядеть следующим образом:

mod14.exe -tg MOD021KM.A2007202.1750.005.2010202193407.hdf <MOD03.A2007202.1750.005.2010202130358.hdf> <MOD03.A2007202.1750.005.hdf>

Результатом ее работы является матрица значений в формате HDF, некоторые из которых пройдя определенный набор пороговых значений обозначаются как очаги горения. Каждая локация имеет ряд параметров таких как яркостные температуры в определенных каналах, достоверность и т.д. Они могут помочь в точности воспроизвести процесс принятия решения и при необходимости его оптимизировать.

Для запуска алгоритма MOD14 в пакетном режиме можно использовать скрипт mod14-run.py

3. Экстракция значений

В зависимости от того, что нужно сделать с конечными данными, может понадобится вытащить значения из растра в обычный CSV файл со всей атрибутивной информацией. Сделать это можно с помощью утилиты hdp (подробнее о работе с hdp).

Выполняется это с помощью следующей команды:

hdp dumpsds -n <variable1 name, ...,variableN name> -o <outputfilename> -d <inputfilename.hdf>

Для нашего примера (один из исходных файлов) команда будет выглядеть следующим образом:

hdp dumpsds -n FP_line,FP_sample,FP_latitude,FP_longitude,FP_R2,FP_T21,FP_T31,FP_MeanT21,FP_MeanT31,FP_MeanDT,FP_MAD_T21,FP_MAD_T31,FP_MAD_DT,FP_power,FP_AdjCloud,FP_AdjWater,FP_WinSize,FP_NumValid,FP_confidence -o MOD021KM.A2007202.1750.005.txt -d MOD021KM.A2007202.1750.005.hdf

Результаты экстракции с помощью этой утилиты нуждаются в небольшой доработки (транспонировании массивов).

Для пакетной экстракции значений в корректном формате можно использовать скрипт mod14-process.py

4. Подготовка для ГИС

Конвертировать CSV в точечные shape-файлы удобно через виртуальные таблицы VRT и ogr2ogr (установка). Строка конвертации выглядит следующим образом:

ogr2ogr -overwrite MOD021KM.A2007202.1750.005.shp work.vrt

Для каждого CSV файла создается временный рабочий файл VRT следующего вида:

<OGRVRTDataSource>
<OGRVRTLayer name="MOD021KM.A2007202.1750.005">
<SrcDataSource>MOD021KM.A2007202.1750.005.csv</SrcDataSource>
<GeometryType>wkbPoint</GeometryType>
<LayerSRS>WGS84</LayerSRS>
<GeometryField encoding="PointFromColumns" x="longitude" y="latitude"/>
</OGRVRTLayer>
</OGRVRTDataSource>

Для пакетной конвертации CSV в Shape-формат можно использовать скрипт csv2shp.py работающий с ogr2ogr.

Если точечных файлов получилось много, их удобно сложить вместе используя например операцию Merge в QGIS/Vector/Data Management Tools или аналогичную.

5. Результаты

Проверку того, что все детектировалось и экспортировалось верно можно осуществить используя один из аналогичных продуктов MOD14. В зависимости от того, какая версия алгоритма использовалась, можно скачать данные ИТЦ Сканэкс или LPDAAC/USGS через WIST (они же используются в сервисе FIRMS). В последнем случае к данным можно применить скрипты mod14-process.py и csv2shp.py для удобной пакетной экстракции и конвертации данных. Для запроса данных в WIST можно использовать следующий query-файл (загрузить).

Таким образом, на настоящий момент очаги пожаров можно получать следующими путями:

  • Очаги выделенные по MOD02 версией алгоритма 4.3.2
  • Очаги выделенные по MOD02 версией алгоритма 5.0.1
  • Очаги экстрагированные из MOD14 (WIST)
  • Очаги из FIRMS

Скачать скрипты для пакетной обработки.

Изображение MODIS (2007204.0805) с наложенными результатами детектирования пожаров за один день - 21.07.2007

Обсудить в форуме Комментариев — 0

Последнее обновление: September 09 2021

Дата создания: 23.05.2011
Автор(ы): Максим Дубинин