Спутник ДЗЗ
3.45K subscribers
2.64K photos
145 videos
202 files
2.39K links
Человеческим языком о дистанционном зондировании Земли.

Обратная связь: @sputnikDZZ_bot
加入频道
This media is not supported in your browser
VIEW IN TELEGRAM
GEE-46. Категоризация NDVI

Допустим, нам нужно разделить значения NDVI на несколько категорий или классов. Пусть, для определенности, категорий будет пять: 1 – [-1; 0.2), 2 – [0.2; 0.4), 3 – [0.4; 0.6), 4 – [0.6; 0.8), 5 – [0.8; 1].

Создадим изображение, состоящее из 5 слоев. Значение каждого слоя равно верхнему порогу категории: 0.2, 0.4, 0.6, 0.8, 1.

var thresholds = [0.2, 0.4, 0.6, 0.8, 1];
var image = ee.Image(thresholds);


Выполним проверку условия ndvi.lt(image) и получим на выходе изображение из пяти бинарных слоев. Каждый слой будет равен 0 или 1, в зависимости от того, выполнено ли условие — попало ли значение NDVI в ту или иную категорию.

Номер категории будет равен сумме единиц

var zones = ndvi.lt(image).reduce('sum');


Но при этом нумерация категорий будет идти сверху вниз: 1 – [0.8; 1], 2 – [0.6; 0.8), …

Перевернем ее, вычитая номер категории из числа категорий

var zones = ee.Image(thresholds.length + 1).subtract(ndvi.lt(image).reduce('sum')).rename('zone');


В конце мы переименовали полученный слой в zone.

Рассмотренный прием подойдет для категоризации любого однослойного изображения, а не только NDVI.

🌍 Код примера

В GEE есть и другие способы категоризации изображений — при помощи CART и where.

#GEE
Open Geocomputing

Библиотека OEEL для работы с Google Earth Engine являются частью проекта Open Geocomputing (https://www.open-geocomputing.org). Цель проекта — создание бесплатных и открытых программных инструментов для использования в науках о Земле:

🖥 Программные инструменты, разработанные в рамках Open Geocomputing

Один из таких инструментов — расширение браузера Google Chrome Open Earth Engine extension. Оно добавляет ряд полезных функций в редактор кода Google Earth Engine:

* ночная тема
* добавление кэша для библиотеки OEEL
* открытие редактора кода при нажатии на иконку (или документации OEEL, если редактор кода уже открыт).
* кнопки (стрелки) для вставки сигнатуры функции из документации в редактор кода
* кнопка для загрузки изображений путем перетаскивания
* возможность автоматического экспорта.
* Изображения Planet Labs (поиск / заказ / передача в GEE) с помощью Planet API.
* проверка возможности совместного использования активов (assets) при получении ссылки.
* добавляет кнопку для запуска всех задач
* добавляет поддержку Plotly в редакторе кода и приложении EE App (включая события)
* открывает скрипт в новой вкладке при двойном клике на нем
* настройка шрифта редактора кода (в т.ч. размера)
* терминал для отладки
* копировать JSON при двойном щелчке на кнопке JSON
* консоль с красным заголовком при сбое
* добавлен интерфейс Python
* ссылка на внешнюю документацию
* возможность обмена кодом в реальном времени

#GEE #софт
This media is not supported in your browser
VIEW IN TELEGRAM
Global Natural and Planted Forests

Глобальные данные Global Natural and Planted Forests представляют собой карту естественных и посаженных лесов по состоянию на 2021 год с пространственным разрешением 30 метров.

Карта создана на основе более 70 миллионов образцов обучающих данных, полученных из снимков Landsat (1985–2021 гг.). Используется метод обнаружения изменений во временных рядах, примененный к снимкам Landsat и позволяющий отличать посаженные леса от естественных лесов на основе частоты нарушений. Локально-адаптивная классификация методом “случайного леса” обеспечила общую точность 85%, что позволяет использовать данные для глобальной оценки лесных ресурсов.

Данные отображаются в виде карты, на которой:

🟢 Зеленые пиксели обозначают естественные леса,
🟡 Желтые пиксели обозначают посаженные (искусственные) леса,
⚪️ Другие цвета обозначают безлесные территории.

Данные на:

🛢 Zenodo
🌍 Google Earth Engine

📖 Xiao, Yuelong, Qunming Wang, and Hankui K. Zhang. Global Natural and Planted Forests Mapping at Fine Spatial Resolution of 30 m. Journal of Remote Sensing 4 (2024): 0204. https://doi.org/10.34133/remotesensing.0204

#лес #данные #GEE
Earth Engine Task Manager — запуск скрипта Goggle Eearth Engine из VS Code

Запустить скрипт Goggle Eearth Engine из VS Code можно с помощью расширения Earth Engine Task Manager (eetasks), созданного Оливером Лопесом (Oliver Lopez). Расширение полезно для 1) отправки задач на экспорт, 2) мониторинга их выполнения, а также для (3) использования интерактивной карты (в новой версии добавлена поддержка функции Map.addLayer).

🖥 Репозиторий eetasks
🔗 eetasks в маркетплейсе vscode

#софт #GEE
Мониторинг нефтяного загрязнения, возникшего в результате аварий танкеров “Волго-нефть 212” и “Волго-нефть 239”

15 декабря в Керченском проливе произошло крушение танкеров “Волго-нефть 212” и “Волго-нефть 239”. Первый танкер затонул, а кормовая часть судна “Волго-нефть 239” села на мель в 82 м от берега в районе п. Волна.

Количество нефтепродуктов на судне “Волго-нефть 212” по данным МЧС составляла 4251 тонн мазута, а на судне “Волго-нефть 239” — 4300 тонн мазута. Значительная часть мазута вытекла в море.

Через некоторое время в сети появились радарные снимки Sentinel-1, сделанные 18 и 19 декабря. На последнем из них хорошо видно нефтяное пятно, вытянувшееся вдоль побережья по направлению к Анапе и, вероятно, вызванное утечкой мазута с танкера “Волго-нефть 239”. Продолжается утечка мазута с затонувшего танкера “Волго-нефть 212”.

Заметим, что при высоких скоростях ветра (свыше 9 м/с) тонкие нефтяные пленки на морской поверхности перестают быть видны на радарных снимках. Остаются только толстые пленки нефти или тяжелых нефтепродуктов, вроде мазута. 18 и 19 декабря скорость ветра у поверхности превышала 9 м/с, так что оценить площадь загрязнения по данным космических радаров в штормовую погоду весьма затруднительно.

К сожалению, открытых данных ДЗЗ из космоса недостаточно для мониторинга данной аварии. Оптические снимки почти недоступны из-за облачности. Радарные, кроме сказанного выше, имеют низкую периодичность. В основном, наблюдение ведется наземными (водными) и воздушными средствами.

Следить за оперативной информацией МЧС можно на 🔗 сайте ГУ МЧС России по Краснодарскому краю.

Помимо сотрудников МЧС, на земле ликвидацией последствий аварии занимаются десятки добровольцев. Как это происходит, можно увидеть 🔗 здесь.

📖 Для интересующихся вопросами мониторинга нефтяных загрязнений рекомендуем обзорную статью А. Ю. Иванова.

🗺 В заключение, вот небольшой скрипт GEE, где есть оба радарных снимка Sentinel-1, оптический снимок Sentinel-2, результаты прогноза скорости ветра, а также расположение танкеров (“Волго-нефть 239” хорошо заметен у берега, а координаты “Волго-нефть 212” взяты из сообщения МЧС). Можете все сами посмотреть.

📸 Кормовая часть судна “Волго-нефть 239” у побережья в районе поселка Волна (источник)

#нефть #GEE #SAR
Извержение Килауэа

23 декабря 2024 года Килауэа, самый молодой и самый активный вулкан на Гавайях (США), после трех месяцев затишья вновь начал извергать фонтаны лавы. Лава изливалась из цепочки трещин у юго-западной стены кратера Халемаумау, который находится внутри Калуапеле — вершинной кальдеры гавайского вулкана. Нынешнее извержение — шестое по счету, произошедшее в этой кальдере с 2020 года.

Гавайская вулканическая обсерватория Геологической службы США (Hawaiian Volcano Observatory) зафиксировала начало извержения в 2:20 утра по местному времени 23 декабря. Фонтаны лавы достигали 80 метров в высоту. К 9:30 утра измерения с борта вертолета вулканической обсерватории показали, что лава распространилась по дну кратера на площади 265 гектаров со средней глубиной около 3 метров.

Снимок кальдеры Килауэа сделан 24 декабря 2024 года спутником Landsat 8 и представлен в ложных цветах (каналы 7, 6 и 8 — SWIR2, SWIR1 и панхроматический), чтобы наглядно показать инфракрасное излучение новой лавы (оттенки красного и желтого цвета).

Шлейф вулканического газа, состоящий в основном из водяного пара, углекислого газа и диоксида серы, тянется к юго-западу от кальдеры и показан на снимке синим цветом. Вулканический газ представлял собой главную проблему извержения, поскольку входящий в его состав диоксид серы может создавать вредную для здоровья дымку — вулканический смог (vog). К счастью, ветер направил шлейф газа в сторону океана.

🌍 Скрипт GEE

#снимки #вулкан #комбинация #GEE
This media is not supported in your browser
VIEW IN TELEGRAM
Forest Data Partnership опубликовал карту ненарушенных лесов, а также карты распространения какао, масличной пальмы и каучукового дерева

Forest Data Partnership (FDP) — консорциум, объединяющий промышленников, правительственные и некоммерческие организации, заявленная цель которого: остановить и обратить вспять потерю лесов в результате производства сырьевых товаров.

FDP опубликовал на Google Earth Engine карту ненарушенных лесов, а также карты распространения какао, масличной пальмы и каучукового дерева:

🌲 Forest Persistence — карта ненарушенных лесов мира по состоянию на 2020 год. Дает оценку (в диапазоне [0, 1]), которая показывает, занята ли площадь пикселя ненарушенным лесом. Пространственное разрешение — 30 м.
🌴 Palm Probability model 2024a — ежегодные карты распространения масличной пальмы с 2020 по 2023 год. Данные представлены в виде вероятности наличия пальмы в пикселе карты. Модель обеспечивает глобальную точность 92% (при пороге вероятности 0,5). Пространственное разрешение — 10 м. Следующие карты построены по той же методике и с тем же разрешением.
🍃 Cocoa Probability model 2024a — ежегодные карты распространения какао 2020–2023 гг.
🌳 Rubber Tree Probability model 2024a — ежегодные карты распространения каучукового дерева 2020–2023 гг.

🌍 Скрипт GEE

В качестве исходных данных для моделей использованы годовые композиты снимков Sentinel-1, Sentinel-2, ALOS PALSAR-2, а также данные цифровых моделей рельефа Jaxa (AW3D30) и Copernicus (GLO-30).

🖥 Модели реализованы в TensorFlow и находятся в открытом доступе на GitHub.

🔗 Популярное описание результатов на Medium

📖 Описание методики построения карт: https://arxiv.org/pdf/2405.09530

#данные #GEE #лес #сельхоз
Карты лугов мира 2000–2022 гг.

Лаборатория Land & Carbon Lab создала исследовательский консорциум Global Pasture Watch для подготовки данных, которые помогут в мониторинге лугов и пастбищ.

Уже доступны 📸 карты лугов мира с 2000 г. по 2022 г. — 🗺 Annual 30-m maps of global grassland class and extent (2000–2022). В будущем планируется ежегодно пополнять эти данные.

🌍 Данные на Google Earth Engine
🖥 Исходный код для создания карт на GitHub
📖 Статья с описанием методики

Land & Carbon Lab собирается создать еще три набора данных:

GLD-1km: Глобальные карты плотности поголовья скота c разрешением 1 км
GSVH-30m: Глобальные карты высоты короткой растительности (разрешение 30 м)
GGPP-30m: Глобальные карты валовой первичной продуктивности (30 м).

#данные #луга #растительность #GEE
This media is not supported in your browser
VIEW IN TELEGRAM
Свертка или пространственная фильтрация изображений в GEE

Линейная свертка изображения 📸 — это обработка изображения с помощью скользящей маски, которая представляет собой заданную квадратную матрицу. После свертки, каждый пиксель изображения представляет собой линейную комбинацию значений маски и пикселей исходного изображения, покрытых маской. Матрицу-маску называют также фильтром, ядром, окном или шаблоном. Элементы маски принято называть коэффициентами. Операцию свертки называют также пространственной фильтрацией изображения.

“Пространственная фильтрация” и “фильтр”, на наш взгляд, самые удачные термины. Но в Google Eearth Engine вместо них приняты “свертка” и “ядро”. Термины эти используются в названиях функций GEE, так что вместо сглаживающего фильтра будет сглаживающее ядро, а вместо фильтрации — свертка.

Теорию можно найти в 📖 Гонсалес Р., Вудс Р. Цифровая обработка изображений (любое издание, раздел 3.4. “Основы пространственной фильтрации”).

А мы продолжим так как будто всем все известно.

#GEE
GEE-47. Свертка (пространственная фильтрация)

Линейная свертка изображений выполняется функцией image.convolve(). Единственным аргументом convolve является ядро свертки ee.Kernel, которое задается 1) формой и 2) коэффициентами (весами).

Ядра применяются по отдельности к каждому слою изображения.

Применим сглаживающее (низкочастотное) ядро 15x15 для удаления высокочастотной информации со снимка Landsat 8:

// Загружаем снимок.
var image = ee.Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318');
Map.setCenter(-121.9785, 37.8694, 11);
Map.addLayer(image, {bands: ['B5', 'B4', 'B3'], max: 0.5}, 'input image');

// Задаем ядро (фильтр) - boxcar.
var boxcar = ee.Kernel.square({
radius: 7, units: 'pixels', normalize: true
});

// Выполняем свертку (фильтрацию).
var smooth = image.convolve(boxcar);
Map.addLayer(smooth, {bands: ['B5', 'B4', 'B3'], max: 0.5}, 'smoothed');


📸 Снимок Landsat 8 (ложноцветовой композит) после свертки со сглаживающим ядром. Бухта Сан-Франциско, шт. Калифорния (США).

Аргументы ядра определяют его размер и коэффициенты. В частности, если параметр units установлен в pixels, то radius задает количество пикселей от центра, которое будет покрыто ядром. Если параметр normalize имеет значение true, то коэффициенты ядра будут равны единице. Если задан параметр magnitude, то коэффициенты ядра будут умножены на значение этого параметра (если при этом normalize равен true, то коэффициенты ядра будут равны magnitude). Если в каком-либо из коэффициентов ядра есть отрицательное значение, то установка normalize в true приведет к тому, что коэффициенты будут равны нулю.

#GEE
GEE-47. Свертка (продолжение)

Чтобы достичь нужного эффекта для обработки изображений используют разные ядра. Так, оператор Лапласа (ee.Kernel.laplacian8) применяется для обнаружения изотропных краев:

// Задаем ядро для детектирования краев изрображения.
var laplacian = ee.Kernel.laplacian8({ normalize: false });

// Применяем свертку.
var edgy = image.convolve(laplacian);
Map.addLayer(edgy,
{bands: ['B5', 'B4', 'B3'], max: 0.5, format: 'png'},
'edges');


📸 Снимок Landsat 8 после свертки с ядром обнаружения краев.

Обратите внимание на спецификатор формата в параметрах визуализации. GEE отправляет тайлы для отображения в Code Editor в формате JPEG. Однако краевые тайлы отправляются в формате PNG, для обработки прозрачности пикселей за границами изображения. Установка формата в PNG позволит сгладить “швы” на границах тайлов.

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

Чтобы создать ядро с произвольно заданными весами и формой, используйте ee.Kernel.fixed(). Следующий код создает ядро 9x9 из единиц с нулем в центре:

// Список весов для ядра 9x9.
var row = [1, 1, 1, 1, 1, 1, 1, 1, 1];
// В центре ядра - 0.
var centerRow = [1, 1, 1, 1, 0, 1, 1, 1, 1];
// Создаем список списков - матрицу ядра 9x9.
var rows = [row, row, row, row, centerRow, row, row, row, row];
// Создаем ядро по готовым весам.
var kernel = ee.Kernel.fixed(9, 9, rows, -4, -4, false);
print(kernel);


#GEE
Открытые гиперспектральные данные Wyvern

Wyvern Open Data (https://opendata.wyvern.space) предоставляет бесплатные гиперспектральные снимки, сделанные спутниковой группировкой канадской компании Wyvern. Данные предоставляются на условиях лицензии Creative Commons (CC BY 4.0), что обеспечивает неограниченный доступ к ним при надлежащем указании авторства.

В настоящее время доступны избранные снимки спутника Dragonette-001 — 23 канала в видимом и ближнем инфракрасном диапазоне. Уровень обработки данных: L1B.

В Центре знаний Wyvern (https://knowledge.wyvern.space/) опубликованы учебные пособия по работе с данными Wyvern в ENVI, QGIS и ArcGIS, а также на языке Python.

🌍 Данные Wyvern на Google Earth Engine
🌍 Wyvern Open Data Explorer — приложение Google Earth Engine. Можно посмотреть разные комбинации каналов и спектральные сигнатуры классов земной поверхности.

📝Awesome Hyperspectral (https://github.com/Nrevyw/awesome-hyperspectral) — коллекция программ, статей, источников данных и учебных пособий для работы с гиперспектральными снимками.

#гиперспектр #данные #GEE
This media is not supported in your browser
VIEW IN TELEGRAM
ESA CCI Global Forest Above Ground Biomass v5.01

Обновились открытые данные о надземной биомассе лесов — ESA CCI Global Forest Above Ground Biomass. Добавлены оценки биомассы (AGB) за 2015, 2016 и 2021 годы, соответствующие им карты стандартных отклонений AGB, а также карты изменений AGB между двумя последовательными годами.

Данные находятся:

🛢 в архиве CEDA
🌍 на Google Earth Engine: ESA CCI Global Forest Above Ground Biomass v5.01

📖 Santoro, M.; Cartus, O. (2024): ESA Biomass Climate Change Initiative (Biomass_cci): Global datasets of forest above-ground biomass for the years 2010, 2015, 2016, 2017, 2018,
2019, 2020 and 2021, v5.01. NERC EDS Centre for Environmental Data Analysis, 22 August 2024. doi:10.5285/bf535053562141c6bb7ad831f5998d77.

#AGB #лес #данные #GEE
This media is not supported in your browser
VIEW IN TELEGRAM
Открытые данные тепловой стратосферной съемки Urban Sky

Компания Urban Sky предоставила свободный доступ к избранным данным тепловой инфракрасной съемки высокого разрешения, полученным со стратосферной платформы Microballoon во время пожаров в Лос-Анджелесе.

Платформа Microballoon работает на высоте 15–21 км. Данные содержат RGB-снимки в видимом диапазоне с пространственным разрешением 10 см и снимки в длинноволновом инфракрасном диапазоне (LWIR) с разрешением 3 м.

🌍 Данные Urban Sky на Google Earth Engine

#данные #LST #пожары #GEE #псевдоспутник
This media is not supported in your browser
VIEW IN TELEGRAM
Global Long-term Microwave Vegetation Optical Depth Dataset Archive VODCA v2

Оптическая толщина растительности (Vegetation Optical Depth, VOD) — величина, которая характеризует ослабление электромагнитного излучения в растительном пологе за счет его поглощения и рассеяния. Обычно VOD измеряется в микроволновом диапазоне.

VOD зависит от многих факторов. В частности, она напрямую связана с содержанием воды в растительном пологе.

Данные VODCA v2 содержат два набора данных: VODCA CXKu и VODCA L.

🔹 VODCA CXKu объединяет данные наблюдений датчиков в C-, X- и Ku-диапазонах, включая SSM/I F08, F11, F13, F17, TRMM TMI, AMSR-E, Windsat, AMSR2 и GPM GMI. Это ежедневные данные с пространственным разрешением 0,25° и временным охватом 1987–2021 гг.
🔹 VODCA L объединяет наблюдения VOD со SMOS MIRAS и радиометра SMAP. Периодичность данных 10 суток, пространственное разрешение — 0,25°, временной охват — 2010–2021 гг..

В VODCA v2 маскированы ошибки наблюдений, вызванные замерзшей землей, снегом и радиочастотными помехами. Данные созданы с использованием новой схемы взвешенного слияния, основанной на автокорреляции первого порядка исходных наборов данных.

🌍 На Google Earth Engine данные представлены в виде двух коллекций: VODCA CXKu и VODCA L.

#данные #GEE
Бесшовные композиты данных Landsat 7 и Landsat 8, охватывающие Амазонию

В статье предложен метод создания бесшовных безоблачных композитов спутниковых данных на основе медоидов и созданы композиты данных Landsat 7 и Landsat 8, покрывающие территорию Амазонии в 2013–2021 гг. Данные получены и обработаны с помощью Google Earth Engine (GEE).

🛢 Данные: Amazonian Landsat 7 ETM+ and Landsat 8 OLI composites July to October 2013 to 2021

📊 Схема обработки данных Landsat

🌍 Код GEE для обработки данных:

🔹 Landsat 7
🔹 Landsat 8

#данные #бразилия #GEE #landsat
EU Deforestation Regulation и Whisp

Правила ЕС по борьбе с обезлесением, EU Deforestation Regulation (EUDR), требуют от компаний, торгующих крупным рогатым скотом, какао, кофе, масличной пальмой, каучуком, соей и древесиной, а также продукцией, полученной из этих товаров, проверять цепочки создания стоимости, чтобы убедиться, что товары не являются результатом недавнего (после 31 декабря 2020 года) обезлесения, деградации лесов или нарушения местного экологического и социального законодательства.

Под обезлесением (deforestation) в EUDR понимается перевод лесов в сельскохозяйственные угодья. Деградация леса (forest degradation) означает превращение первичных лесов или естественно восстанавливающихся лесов в плантационные леса или в другие лесные угодья.

EUDR вступают в силу 30 декабря 2025 года (для крупных и средних компаний). С этого момента компании, размещающие соответствующую продукцию на рынке ЕС, берут на себя ответственность за соответствие продукции требованиям EUDR.

Оставим в стороне “узкие места” EUDR, а также возможную политизированность этих правил (компании из списка стран, который должна составить Еврокомиссия, будут проходить проверку соответствия требованиям EUDR по упрощенной процедуре). Ясно, что для проверки требований EUDR понадобятся данные дистанционного зондирования.

Так, для проверки deforestation (будем писать так, имея в виду определение обезлесения, принятое в EUDR) понадобится карта лесов по состоянию на 31 декабря 2020 года. Такая карта позволит показать, что продукция не была получена из районов, которые были покрыты лесом до указанной даты. Для проверки forest degradation понадобится карта первичных и естественно восстанавливающихся лесов на 31 декабря 2020 года. Кроме того, понадобятся регулярно обновляемые карты нарушений лесного покрова.

Подобных карт существует много и все они содержат ошибки. Чтобы уменьшить число ошибок, был предложен подход Whisp (“What is in that plot”), в котором выводы делаются на основании взвешенной суммы оценок, полученных из всех имеющихся открытых наборов данных (карт).

🖥 Whisp — открытое решение, разработанное под зонтиком Open Foris (https://openforis.org).

📖 Описание: D’Annunzio, R. et al. 2024. Towards a digital public infrastructure for deforestation-related trade regulations - What is in that plot? (Whisp) solution to implement convergence of evidence. Rome, FAO. https://doi.org/10.4060/cd0957en

🌍 📸 Демка: Whisp on EarthMap

📊 Whisp в табличном виде: Whisp Dashboards

Ну и конечно:

🔗 Данные, которые использует Whisp для оценки риска обезлесения.

#лес #данные #GEE
This media is not supported in your browser
VIEW IN TELEGRAM
Непрерывные спутниковые данные о ночной освещенности

Регулярные измерения ночной освещенности из космоса проводились спутниками американской военной метеорологической программы Defense Meteorological Satellite Program (приборы Operational Linescan System) и продолжили осуществляться с помощью приборов Visible Infrared Imaging Radiometer Suite (VIIRS) уже на гражданских метеоспутниках NOAA.

1️⃣ Кросс-сенсорная калибровка двух этих наборов данных позволила получить непрерывные данные о ночной освещенности Global NPP-VIIRS-like nighttime light (2000–2023), которые можно использовать для мониторинга динамики демографической и социально-экономической активности.

🌍 Global NPP-VIIRS-like nighttime light (2000–2023) на GEE

📖 Chen Z. et al. An extended time series (2000–2018) of global NPP-VIIRS-like nighttime light data from a cross-sensor calibration, Earth Syst. Sci. Data, 13, 889–906, https://doi.org/10.5194/essd-13-889-2021, 2021.

2️⃣ В данных Global Annual Simulated NPP-VIIRS Nighttime Light Dataset (1992–2023) кросс-сенсорная калибровка выполнялась с помощью нейросети архитектуры U-Net (NTLSRU-Net). В результате удалось получить данные, охватывающие 32 года наблюдений, с пространственным разрешением 15’’ (~500 м). Они обеспечивает глобальное покрытие от -180° до 180° долготы и от 65° ю.ш. до 75° с.ш. широты.

🌍 Global Annual Simulated NPP-VIIRS Nighttime Light Dataset (1992–2023) на GEE

📖 Chen X. et al. Q. (2024). A global annual simulated VIIRS nighttime light dataset from 1992 to 2023. Scientific Data, 11(1380). https://doi.org/10.1038/s41597-024-04228-6

#GEE #данные #dnb
GEE-48. Функциональное программирование в Earth Engine

Google Earth Engine (GEE) использует параллельную обработку данных на большом количестве машин. Чтобы обеспечить такую обработку, GEE использует приемы, принятые в функциональном программировании.

Основная концепция, которая отличает функциональное программирование от процедурного, — функции без побочных эффектов. Такие функции не используют данные, находящиеся за пределами функции, и не обновляют их.

Посмотрим как можно переработать задачу так, чтобы она решалась с помощью функций без побочных эффектов.

Циклы for. В GEE не рекомендуется использовать циклы for. Вместо циклов используем операцию map(). Внутри map() указываем функцию, которая независимо применяется к каждому элементу коллекции. Это позволит GEE распределять обработку по разным машинам.

Ниже показано, как при помощи map() создать из списка чисел список с квадратами этих чисел:

// Создаем список чисел от 1 до 10.
var myList = ee.List.sequence(1, 10);

// Задаем функцию, которая будет применяться
// к каждому числу из списка.
var computeSquares = function(number) {
// Возведение в степень с помощью GEE API.
return ee.Number(number).pow(2);
};

// Применим функцию computeSquares к каждому
// элементу списка myList с помощью map().
var squares = myList.map(computeSquares);

print(squares); // [1, 4, 9, 16, 25, 36, 49, 64, 81]


Условный оператор if. Другой распространенной проблемой, с которой сталкиваются пользователи, привыкшие процедурному программированию, является применение условного оператора if в GEE. Он как бы есть (ee.Algorithms.If()), но его лучше не использовать.

Вместо условного оператора рекомендуется использовать фильтры и map().

Допустим, в приведенном выше примере нужно вычислить квадраты только нечетных чисел. Рассмотрим функциональный подход к решению этой задачи:

// Функция-фильтр, разделяющая четные и нечетные числа.
var getOddNumbers = function(number) {
// Преобразуем число в ee.Number,
// чтобы потом применить mod.
number = ee.Number(number);
// Возвращает 0 если число четное и 1, если оно нечетное.
var remainder = number.mod(2);
// Вместо четных чисел возвращаются нули,
// а вместо нечетных - сами эти числа.
return number.multiply(remainder);
};

// Преобразуем myList в список,
// где четные числа заменены нулями.
var newList = myList.map(getOddNumbers);

// Удалим из списка нули.
var oddNumbers = newList.removeAll([0]);

var squares = oddNumbers.map(computeSquares);

print(squares); // [1, 9, 25, 49, 81]


Если вы хотите применить к коллекции алгоритм, основанный на некотором условии, нужно отфильтровать коллекцию по этому условию, а затем для каждого из полученных подмножеств использовать свою функцию map(). Это позволит системе распараллелить операцию.

// Импортируем коллекцию снимков Landsat 8 TOA за 2018 год.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
.filterDate('2018-01-01', '2019-01-01');

// Разделим ее на два подмножества,
// в зависимости от угла возвышения Солнца.
var subset1 = collection.filter(ee.Filter.lt('SUN_ELEVATION', 40));
var subset2 = collection.filter(ee.Filter.gte('SUN_ELEVATION', 40));

// Применим к каждому подмножеству свою функцию:
// снимки из subset1 умножим на 2;
// снимки subset2 оставим без изменений.
var processed1 = subset1.map(function(image) {
return image.multiply(2);
});
var processed2 = subset2;

// Объединим коллекции в одну.
var final = processed1.merge(processed2);

print('Original collection size', collection.size());
print('Processed collection size', final.size());


#GEE
GEE-48. Функциональное программирование в Earth Engine (продолжение)

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

❗️ iterate() выполняется последовательно и, следовательно, для "больших" операций будет работать медленно. Используйте его только тогда, когда не можете применить map() и фильтры.

Создадим с помощью iterate() последовательность чисел Фибоначчи. Каждое число в этой последовательности является суммой двух предыдущих чисел. iterate() принимает два аргумента: функцию (алгоритм) и начальное значение. Самой функции также передаются два значения — текущее значение в итерации и результат предыдущей итерации.

var Fibonacci = function(current, previous) {
previous = ee.List(previous);
var n1 = ee.Number(previous.get(-1));
var n2 = ee.Number(previous.get(-2));
return previous.add(n1.add(n2));
};

// Вычислим 10 итераций.
var numIteration = ee.List.repeat(1, 10);
var start = [0, 1];
var sequence = numIteration.iterate(Fibonacci, start);

print(sequence);
// [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]


Примеры взяты отсюда.

#GEE