Распаковка информации о качестве данных MODIS
заготовка
Теория
MODIS - камера дистанционного зондирования на борту спутников Terra и Aqua, снимающая каждую точку на Земле два раза в день и производящая десятки террабайт данных ежедневно. Данные MODIS проходят интенсивную обработку, включающую контроль качества. Помимо всего прочего, большое количество проблем доставляют облака, которые необходимо определенным образом маскировать. Поэтому все продукты на базе данных MODIS включают слой качества (он же QA=Quality Assessment, QC=Quality Control).
Проблема: для экономии места данные QA "свернуты" в целочисленный вид, поэтому практически человеконечитаемы. Например, для продукта MCD13A2 значение 113
на самом деле значит следующее:
- Overall quality: Other Quality
- Source: Terra
- Detectors: Detectors are OK
- CloudState: Mixed clouds
- SCF_QC (five level confidence score): Main (RT) method failed due to problems other than geometry, empirical algorithm used
Это статья посвящена тому, как распаковать данные MODIS QA в человекочитаемый вид для более обоснованного решения о фильтрации данных MODIS.
Расчеты "на коленке"
План
В качестве "коленки" будет использовать LibreOffice Calc. Вероятно те же самые формулы заработают и в MS Excel, но автор этой статьи это не проверял.
Наша задача - распаковать целочисленные коды из QA в человекочитаемый формат. Действовать будем по следующему плану:
- Получим список уникальных значений из всех растров чтобы не пропустить чего-то полезного, но редкого.
- Каждый код переведем в биты
- В соответствии со схемой QA для конкретного продукта нарезаем всю последовательность на битовые слова
- Раскладываем каждое слово на биты слева направо
- Складываем обратно и используем перекодировочные таблицы для того чтобы "расшифровать" каждую последовательность.
Реализация
Извлечение QA растров
Получение уникальных значений
Возможных комбинаций значений значительно больше, чем осмысленных и еще меньше чем реальных, поэтому самый правильный способ, извлечь из растров QA все уникальные значения.
Это легко делается с помощью скрипта на Python, который принимает на входе список папок, в которых надо обработать растры и имя текстового файла, куда будут сложены уникальные значений из них всех.
python get_unique.py dir1,dir2,dir3 out.txt
Пересчет в биты
Проблема в том, что по умолчанию фукнция DEC2BIN в Calc не работает с числами вне диапазона -512..512 (2^10 - один бит на четность). Поэтому, если битов качества больше чем 10, формулу придется модифицировать следующим образом, например для 16 bit:
=DEC2BIN((MOD(A2,65536)/512),7)&DEC2BIN(MOD(A2,512),9)
Результаты
Здесь можно скачать готовые перекодировочные таблицы для следующих продуктов MODIS:
- MCD15A2 - Leaf Area Index - Fraction of Photosynthetically Active Radiation 8-Day L4 Global 1km
- MOD13A2 - Vegetation Indices 16-Day L3 Global 1km
- MOD17A2 - Gross Primary Productivity 8-Day L4 Global 1km