Спутник ДЗЗ
3.56K subscribers
2.69K photos
147 videos
203 files
2.44K links
Человеческим языком о дистанционном зондировании Земли.

Обратная связь: @sputnikDZZ_bot
加入频道
Vegetation Health Index
3. Объединение коллекций и вычисление VHI

Теперь, зная VCI и TCI, мы можем объединить эти коллекции для расчета VHI. Последний вычисляется по формуле:

VHI = α * VCI + (1 - α) * TCI,

то есть является взвешенным средним значений VCI и TCI. Повышенная температура и плохое состояние растительности (низкий NDVI) являются признаками наступившей засухи, что вполне логично.

Для простоты, примем α = 0.5.

Объединяем коллекции изображений VCI и TCI, и вычисляем VHI, как показано здесь

var filter = ee.Filter.equals({leftField:'system:time_start', rightField:'system:time_start'});
var join = ee.Join.saveFirst('match');

var bothCol = ee.ImageCollection(join.apply({primary: VCI,
secondary: TCI,
condition: filter}))
.map(function(img) { return img.addBands(img.get('match')).set('date', img.date().format('YYYY_MM_dd')) });

var VHI = bothCol.map(function(img){
return img.addBands(
img.expression('a/2 + b/2', {
'a': img.select('VCI'),
'b': img.select('TCI'),
}).rename('VHI'));
}
);


Код выполняет левое внешнее объединение коллекций VCI и TCI с помощью функции ee.Join.saveFirst(). В результате создается коллекция, содержащая пары изображений VCI и TCI, у которых совпадают свойства 'system:time_start'.

К полученной коллекции применяется функция map(). Она используется для добавления к каждому изображению нового канала (ee.Image.addBands()), содержащего совпадающее изображение из другой коллекции. Используем ee.Image.get() для получения совпадающего изображения.

После этого выполняем еще один map(), чтобы вычислить VHI с помощью ee.Image.expression().

В итоге, получим коллекцию изображений, каждое из которых содержит каналы VCI, TCI и VHI.

Код скрипта

Индексы VCI и TCI предложены Феликсом Коганом в работе: Kogan, F. N. (1995). Application of vegetation index and brightness temperature for drought detection. Advances in Space Research, 15(11), 91–100. https://doi.org/10.1016/0273-1177(95)00079-t Там же была предложена формула для вычисления VHI, хотя название индекса Коган придумал позже.

Первоначально, индексы использовались для наблюдений, сделанных прибором AVHRR — Advance Very High Resolution Radiometer, летавшим на спутниках семейств GOES, METEOSAT, MTSAT и DMSP. Сейчас эти данные находятся на странице STAR - Global Vegetation Health Products. Они являются глобальными, начинаются с 1981 года, имеют пространственное разрешение 4 км (Very High Resolution того времени!) и используются в виде 7-суточного композита.

#GEE #индексы
Напомним, что проекты и примеры кода, не вошедшие в учебник по Google Earth Engine, находятся здесь. Всё вместе можно найти по тегу #GEE
Forwarded from РИА Новости
This media is not supported in your browser
VIEW IN TELEGRAM
Облако пепла от извергающегося вулкана Безымянный на Камчатке видно из космоса. Последствий для главного аэропорта Камчатки - "Елизово" - быть не должно, всё работает штатно, рассказали РИА Новости в воздушной гавани
На Google Earth Engine появились данные Harmonized Landsat Sentinel-2 TOA

О данных Harmonized Landsat Sentinel-2 (HLS) на канале говорилось уже не раз (например, здесь и здесь). HLS — это попытка объединить данные нескольких сенсоров, а именно: Landsat 8 OLI, Landsat 9 OLI-2 и Sentinel-2A/2B MSI. Вместе они позволят проводить глобальные наблюдения с периодичностью 2–3 суток.

Для получения бесшовных продуктов HLS на основе данных OLI и MSI используется набор алгоритмов, включающий атмосферную коррекцию, маскировку облаков и теней, корегистрацию, топографическую коррекцию и коррекцию угла съемки, а также радиометрическое выравнивание снимков. Ссылки на алгоритмы есть здесь.

Данные HLS существуют в двух уровнях обработки: Top of Atmosphere (уровень 1) и Surface Reflectance (уровень 2). Все данные имеют пространственное разрешение 30 метров.

Раньше данные HLS можно было найти на NASA Earthdata Search и Sentinel Hub EO Browser. И вот теперь к ним добавился Google Earth Engine.

Продукт HLSL30: HLS-2 Landsat Operational Land Imager Surface Reflectance and TOA Brightness Daily Global 30m — это скорректированные данные 1-го уровня обработки, полученные на основе сенсоров спутников Landsat. Чтобы добиться периодичности 2–3 суток, их нужно дополнить аналогичными данными Sentinel-2 — HLSS30.

Временное покрытие данных HLS начинается с момента запуска: для Landsat — с 2013 года (запуск Дфтвыфе 8), для Sentinel-2 — c 2015 г.

Возможно, что еще не все данные размещены на GEE. Проверить это можно с помощью кода.

#GEE #sentinel2 #landsat #данные
This media is not supported in your browser
VIEW IN TELEGRAM
Satellites.pro — это свободный агрегатор спутниковых изображений и карт. Он позволяет выбирать данные из нескольких источников:

* Apple Maps
* OpenStreetMap
* Google Maps
* Yandex Maps

Все они, кроме OpenStreetMap, доступны в вариантах Satellite View (спутниковые изображения) и Plan (карта). OpenStreetMap предоставляет только карты.

Satellites.pro сообщает информацию о погоде и ее прогноз в рассматриваемом районе. Для этого, щелкните на значке погоды, в левой нижней части экрана.

Здесь находится Python-пакет для выкачивания данных из satellites.pro. Нами в работе не тестировался.

#данные
14 октября 2023 года произошло кольцеобразное солнечное затмение, наблюдавшееся на территории США, Центральной Америки, Колумбии и Бразилии.

Кольцеобразные солнечные затмения — самый редкий вид затмений. На их долю приходится всего 5% затмений. Кольцеобразные затмения случаются, когда лунный диск проецируется на солнечный и, имея видимый угловой диаметр меньше последнего, не закрывает Солнце целиком, а оставляет узкое, не затмившееся яркое красно-оранжевое кольцо (рисунок 1️⃣).

На снимке 2️⃣, полученном прибором EPIC спутника DSCOVR (Deep Space Climate Observatory) в 16:58 по всемирному времени, видно, как тень от Луны падает на юго-восточное побережье Техаса.

#снимки
Учебники проекта SEOS

Science Education through Earth Observation for High Schools (SEOS) — проект по использованию данных ДЗЗ из космоса в старших классах школы. В рамках проекта было разработано 17 учебных пособий по основам дистанционного зондирования и его применению в разных областях науки и техники.

Учебники переведены на несколько европейских языков, причем один из них — Начала дистанционного зондирования — на русский язык. Уровень изложения — школьный.

Учебникам больше 10 лет, но они — про основы, которые с тех пор не изменились.

#основы
Извержение вулкана Безымянный

Камчатский полуостров, расположенный вдоль Тихоокеанского огненного кольца, насчитывает более 300 вулканов. Снимок извержения вулкана Безымянный, которое началось 16 октября, был сделан в тот же день спутником Landsat 8.

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

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

16 октября KVERT отметила рост активности на вулкане Безымянный, когда со склонов горы сошли лавины обломков. На снимке этот вулкан расположен в центре внизу. Безымянный также извергает шлейф газа, пара и пепла — гораздо больше, чем у Ключевского, но трудно различимый из-за облачного покрова на снимке.

#вулкан
На этой неделе будет много R. Хочется поскорей перейти к работе с пространственными данными и снимками, но без знакомства с основами языка толку не будет.

Основ будет немного — примерно на одну университетскую пару, нарезанную на кусочки отдельных постов. R будет по утрам. Кому он не нужен — потерпите немного. Про другое будет вечером.
Арифметические операции и переменные

Арифметические операции в R выглядят так же, как и во многих других языках программирования:

3+2
2*(4-1)/6
3^2; sqrt(4) # ';' служит для разделения выражений в строке
1/0


А вот запись операции присваивания имеет особенности. Она обозначается стрелкой влево (<-) или знаком равенства (=)

{r}
a = 3
a

b <- "XOR"
(b <- 5)

"ФЕИ" -> c # можно и так!


Стрелка используется для совместимости с очень старыми версиями R, так что можете спокойно использовать =.

Мы будем использовать стрелку: 1) по привычке, 2) чтобы отличать присваивание от других операций. Например, от задания значений по умолчанию для аргументов функций — там всегда используется =.

Комментарий начинается с #. Блочных комментариев нет.

Если нужно вывести в консоль значение переменной, то строку, в которой это значение присваивается, окружают скобками: (b <- 5).

При назначении имен переменных и функций придерживаются правил:

1. Использовать для имен только латинские буквы, символ подчеркивания `'_', цифры и точку '.'`.
2. Имя не должно начинаться с цифры или точки: `plot_new2` и `plot.new` — правильно, а `.plot` и `2plot` — неправильно.
3. Не давать объектам имена, занятые распространенными функциями или ключевыми словами (особенно это касается `T`, `F`, `NA`, `NaN`, `Inf`).

Еще одна особенность R состоит в том, что в именах переменных можно использовать точку (.). Точку применяют для разделения смысловых частей имени, как символ подчеркивания в других языках. Например, функция install.packages() служит для установки новых пакетов расширений. Это именно функция, а не метод packages() объекта install.

R чувствителен к регистру: Var, var и VAR — это разные имена.

#R
Тексты про пространственные данные и R собираем вместе (см. ниже) и помещаем в закреп.
Работа с пространственными данными в R

Начало работы

* R Онлайн
* Установка R и RStudio на локальный компьютер
* Первый скрипт

Основы языка

* Арифметические операции и имена
* Типы данных: числовые, строковые, логические
* Особые величины
* Структуры данных (обзор):
векторы — часть 1, часть 2, часть 3
матрицы и массивы
списки
таблицы
* Управление ходом вычислений
условные операторы
циклы
* Базовая графика
* Функции, функциональное программирование

Пространственные данные

* Растровые данные
* Чтение растровых данных. Метаданные
* Создание растровых данных
* Арифметические и логические действия с растровыми данными
* Многослойные растровые данные
* Охват (экстент)
* Изменение пространственного разрешения
* Замена системы координат
* Слияние и изменение размеров
* Применение функций к слоям данных
* Применение функций к слоям данных-2: app, lapp, tapp и xapp
* Категоризация значений: classify
* Доступ к ячейкам данных
* Фильтрация
* Отображение растровых данных
* SpatRasterDataset и SpatRasterCollection

* Векторные данные
* Создание векторных объектов: точки, линии и полигоны
* Чтение и запись данных
* Преобразование координат
* Работа с элементами SpatVector
* Логические операции
* Пространственные отношения между объектами

* Взаимодействие растров и векторов
* Обрезка и маскирование растров по векторным данным
* Извлечение значений растров

...

Основные пакеты R для работы с пространственными данными
Справка по функциям пакета terra
Ссылки по работе с пространственными данными в R

#R
Спутниковую группировку наблюдения Земли “Грифон” включат в проект “Сфера”

ТАСС сообщил, что проект "Грифон" включат в программу создания многоспутниковой группировки "Сфера".

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

Программа "Сфера" предполагает создание на орбите пяти спутниковых группировок, предоставляющих телекоммуникационные услуги, и еще пяти группировок дистанционного зондирования Земли. Одной из таких группировок станет “Грифон”.

"Грифон" — проект спутниковой группировки наблюдения Земли, которая будет включать 136 космических аппаратов на базе платформы CubeSat. Она позволит получать данные каждые 30 часов с территории России и не реже 38 часов по всему миру, — сообщает ТАСС. Вероятно, речь идет о том, что территория России будет полностью покрыта данными спутниковой съемки за 30 часов.

Ранее, Роскосмос сообщал, что инициатором создания группировки “Грифон” является головной институт госкорпорации — ЦНИИмаш, “в партнерстве с ведущими ВУЗами страны”.

ComNews сообщает, что группировка "Грифон" будет состоять из космических аппаратов, ведущих обзорную съемку. Она должна дополнять группировку сверхвысокодетального мониторинга "Беркут".

Источник рисунка

#россия
This media is not supported in your browser
VIEW IN TELEGRAM
Числовые данные

В R три числовых типа данных:

* numeric — вещественные двойной точности (= double);
* integer — целые;
* complex — комплексные.

Числа по умолчанию создаются вещественными

a <- 1 # или a <- 1.0
class(a)
str(a)


Функция class отвечает на вопрос, к какому типу данных (классу) относится объект. Функция str возвращает структуру объекта: тип данных, к которому относится объект и его значение.

Чтобы создать целое число, его запись нужно завершить буквой L.

b <- 10L
class(b)


Целое число можно преобразовать из вещественного с помощью функции as.integer:

b <- as.integer(a)


Для проверки принадлежности к тому или иному типу данных используют функции is.*

is.integer(b)
is.integer(a)
is.numeric(a)


Комплексное число получается добавлением к целому или вещественному мнимой части, обозначенной символом i:

c <- sqrt(-1)     # так не пойдёт!
str(c)
c <- sqrt(-1+0i) # правильный способ
class(c)


Неявное приведение числовых типов данных выполняется по схеме:

integer -> numeric -> complex

Например, складывая целое и вещественное числа, мы получим в результате вещественное число, а добавляя к сумме комплексное число получим комплексный же результат.

Явное приведение типов данных выполняется при помощи функций as.*:

as.numeric(1.5+1i) # при потере мнимой части выдается предупреждение


#R
This media is not supported in your browser
VIEW IN TELEGRAM
Символьные (строковые) данные

Данные символьного типа character представляют собой строки, заключенные в одинарные или двойные кавычки

s1 <- "Text string."
s2 <- 'Another string.'
s12 <- paste(s1,s2)
str(s12)


Соединение строк (конкатенация) выполняется функцией paste.

Кавычки одного типа могут находиться внутри кавычек другого типа:

"First 'attempt'"
'Second "attempt"'


Если тип кавычек совпадает, то внутренние кавычки нужно экранировать при помощи '\':

"Third \"attempt\""


Выделить подстроку позволяет функция substr:

substr("abcdefg",3,5) # выделить подстроку с 3-го по 5-й элемент


Функции sub и gsub заменяют часть строки, соответствующую заданному образцу. sub заменяет только первое вхождение, а gsub выполняет глобальную замену подстроки

# sub("что_заменять", "на_что_заменить", "где_искать")
sub("a","A","rama") # sub = substitute
gsub("a","A","rama") # gsub = global substitute
sub("a","A",c("mama","rama","banana"))


#R
This media is not supported in your browser
VIEW IN TELEGRAM
Логические данные

Данные, относящиеся к логическому типу logical, имеют всего два значения: TRUE ("истина") и FALSE ("ложь").

Чаще всего, данные этого типа возникают при сравнении переменных:

x = 2; y = 5
z = x > y # x больше y?
z # напечатаем полученное логическое значение
class(z)


Основные логические операции: & (И), | (ИЛИ) и "!" (НЕ):

a = TRUE; b = FALSE # Можно короче: a = T; b = F
a & b # u И v
a | b # u ИЛИ v
!a # НЕ-u


Находясь в одном выражении с числами, данные логического типа приводятся к соответствующему числовому типу данных: FALSE представляется как 0, а TRUE — как 1

1 + FALSE
1 + TRUE
class(as.integer(1) + TRUE)


Схема неявного приведения типов в R выглядит так:

logical -> числовые типы -> character

Например:

paste(FALSE, 1.0, "test")


Явное приведение типов выполняется функциями семейства as.*, а проверку можно выполнить с помощью функций is.*.

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

#R