Многомерный растр (multidimensional raster) можно представить как набор растров, объединенных в виртуальный «трехмерный куб», в котором в качестве дополнительной оси координат используется время, глубина, высота или любая другая метрика. При этом многомерный растр не ограничен одним дополнительным измерением, измерений может быть 2 и более. Например, в многомерном растре можно хранить информацию о температуре и солености воды в определенной точке океана с координатами X и Y, при этом в качестве дополнительных измерений будут использоваться время и глубина.
Существуют различные специализированные растровые форматы предназначенные для хранения многомерных растров. Это прежде всего бинарные форматы NetCDF, GRIB, HDF и Zarr. Одним из наиболее удобных форматов хранения многомерных растров, является универсальный формат CRF (Cloud Raster Format). Он, с одной стороны, оптимизирован для хранения растровых данных в облачной инфраструктуре и многопоточного чтения/записи, с другой стороны, поддерживает хранение многомерных данных. Также, многомерные растры можно хранить в мозаике растров ArcGIS (ArcGIS Mosaic Dataset). Мозаика растров ArcGIS является удобным инструментом для создания собственных многомерных растров с помощью графического интерфейса.
Как собрать многомерный растр с помощью мозаики растров ArcGIS?
В данном примере мы будем создавать многомерный растр из 12 исходных растров, которые содержат информацию об суммарном испарении влаги за месяц. Растры содержат измерения за период с января по декабрь 2024 года. Информация о дате измерений закодирована в названии растра.
Все действия, показанные в статье, можно повторить самостоятельно на наборе исходных растров, который доступен для скачивания по ссылке.
-
- Создаем пустую мозаику растров.
- Добавляем в мозаику растры из архива.
- Пересчитываем статистику мозаики растров (опциональный шаг для улучшения визуализации данных)
- Теперь нужно открыть таблицу атрибутов слоя Footprints мозаики растров и создать два поля, в которых будет храниться информация о переменной многомерного растра (испарение) и дате измерений (год, месяц). Создадим два поля Variable (тип Text) и Date (тип Date).
- Заполним поле Variable с помощью калькулятора поля. Во всех строках будет одно значение — SSEBop ET. Это название переменной многомерного растра. Если в многомерном растре предполагается хранить несколько переменных (например, испарение, влажность, температуру и т.д.), то в этом поле должно быть прописано какой переменной соответствует конкретный растр в составе мозаики.
- Вычислим значения поля Date. Поле Name в таблице атрибутов слоя Footprints содержит названия растров, загруженных в мозаику. Например, в на названии растра m202401_viirsSSEBopETv61_actual_mm содержится строка «202401» в которой закодирована дата «январь 2024 года». Соответственно, наша задача извлечь эту часть названия растра, обработать и записать в поле Date уже в виде даты. Сделаем это с помощью калькулятора растра и выражения на языке Python. Используйте следующее выражение для вычисления поля Date: ‘2024-‘+!Name!.split(‘_’)[0][-2:]+’-01′
- Воспользуемся инструментом Build Multidimensional Info для добавления информации о переменных и измерениях в мозаику. В качестве параметра Variable Field укажем созданное ранее поле Variable. В качестве параметра Dimension Field укажем поле Date, в котором записана дата. Поля Description и Units опциональные.
- После конвертации мозаики в многомерную, появляется закладка Multidimensional с помощью которой можно переключать дату. Также немного изменим цветовую шкалу оформления. Мы получили мозаику, которая хранит информацией о переменной и информацию о времени. С этой мозаикой можно работать как с полноценным многомерным растром.
- Опционально можно конвертировать многомерную мозаику в многомерный растр в формате CRF. Формат CRF более оптимален для публикации и для анализа данных. Убедитесь, что установлен флажок в параметре Process as Multidimensional. Флажок в параметре Build Multidimensional Transpose есть смысл устанавливать, если в вашем многомерном растре хранятся сотни или тысячи измерений. В таком случае значения пикселей будут храниться не построчно (как в обычных растрах), а в виде столбцов с измерениями, и это увеличит скорость чтения и анализа данных. В данном случае используется та же идея, что в «колоночных» СУБД.
- Создаем пустую мозаику растров.
Также, c помощью инструмента Copy Raster вы можете сохранить мозаику в формате NetCDF и Zarr. Формат NetCDF не слишком производительный, но на данный момент он является популярным отраслевым стандартом обмена данными. При экспорте в формат NetCDF желательно учитывать рекомендации этого формата в части названий переменных (например, они не должны содержать пробелов).
По этой ссылке вы можете скачать больше исходных климатических данных на территорию Центральной Азии.
Ролики на Youtube с примерами создания многомерных растров: