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

Обратная связь: @sputnikDZZ_bot
加入频道
GEE-10. Библиотека Awesome Spectral Indices

Код примера

В прошлый раз мы вычисляли вегетационные индексы. Есть способ сделать это еще проще — с помощью библиотеки Awesome Spectral Indices (документация).

Создадим коллекцию снимков Sentinel-2 L2A, покрывающих интересующий район (ROI — region of interest):

var col = ee.ImageCollection('COPERNICUS/S2_SR')
.filterDate('2021-06-01', '2021-09-01')
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',10))
.filter(ee.Filter.bounds(ROI))
.select('B.*');

Вычислим медиану коллекции и обрежем ее по границам ROI. Медиана коллекции — снимок, каналы которого являются медианами соответствующих каналов коллекции (вычисления в каждом канале происходят попиксельно). В итоге получим некий типичный летний снимок Небраски.

var image = col.median().clip(ROI);

Загружаем библиотеку Awesome Spectral Indices. Путь к ней указан в параметре функции require.

var spectral = require("users/dmlmont/spectral:spectral");

Awesome Spectral Indices — сторонняя библиотека. Она создана не разработчиками Earth Engine, а пользователем с ником dmlmont. Вы можете создать свою библиотеку и загрузить ее на GEE, но об этом поговорим позже. Сейчас же масштабируем значения пикселей.

var image = spectral.scale(image, "COPERNICUS/S2_SR");

Помните, у нас была функция applyScaleFactors для масштабирования значений пикселей? scale из библиотеки spectral делает то же самое.

Зададим параметры для расчета индексов. Мы хотим рассчитать NDVI, NDWI и EVI. Для этого понадобится несколько каналов и числовых констант.

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

var parameters = {
"N": image.select("B8"),
"R": image.select("B4"),
"G": image.select("B3"),
"B": image.select("B2"),
"L": 1,
"g": 2.5,
"C1": 6,
"C2": 7.5
};

Вот формула для расчета EVI:

2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))

А вот как она выглядит в списке:

g * ((N - R) / (N + C1 * R - C2 * B + L))

Думаю, принцип понятен. Зеленый канал нужен нам для расчета NDWI.

spectral.computeIndex вычисляет индексы по списку и добавляет к снимку.

var image = spectral.computeIndex(image, ["NDVI","NDWI","EVI"], parameters);

Для GEE Python API есть несколько библиотек, реализующих расчет спектральных индексов.

#GEE #индексы
Обнаружился пакет R для доступа к немецким метеоданнымrdwd. Хотя, там все и так просто.

Python’овский пакет тоже есть: Wetterdienst. Он служит для доступа к открытым метеоданным разных стран (список). В R это делается с помощью отдельных пакетов для каждого источника.

#R #python #погода
⭐️ СТРАНЫ / КОМПАНИИ / СПУТНИКИ

Страны: #австралия #германия #индия #иран #испания #канада #китай #португалия #россия #США #япония и т. п.
Но:
#корея обозначает Северную и Южную Кореи
#РБ — Республика Беларусь
#UK — Великобритания

Компании: #planet #maxar

Спутники: #landsat #sentinel1 #sentinel2

⭐️ ДЗЗ

Методы и приборы
#альтиметр
#гиперспектр — гиперспектральная оптическая съемка
#лидар
#оптика — мультиспектральная оптическая съемка
#радиометр — микроволновой радиометр
#dnb — ночная съёмка (day / night band)
#SIF — солнечно-индуцированная флуоресценция хлорофилла
#ro — радиозатменный метод
#SAR — радарная съемка
#InSAR — радарная интерферометрия
#LST — съемка в тепловом инфракрасном диапазоне
#GNSSR — ГНСС-рефлектометрия
#sigint — радиоэлектронная разведка

Виды орбит: #ГСО — геостационарная, #VLEO — сверхнизкая

#основы — обучающие материалы по ДЗЗ
#обучение курсы, обучающие сервисы и т. п.
#история — в основном, история ДЗЗ
#индексы — спектральные индексы
#комбинация — комбинации каналов

Данные
#данные — коллекции данных ДЗЗ, наземных данных, карты и т.п.
#датасет — набор данных для машинного обучения
Дополнительные хештеги, описывающие данные:
#LULC — Land Use & Land Cover
#осадки
#SST — Sea Surface Temperature
#nrt — (near real time) изображения, получаемые в режиме, близком к реальном времени
#debris — космический мусор
#границы — административные границы
#DEM — цифровая модель рельефа (ЦМР)
#keyhole — рассекреченные снимки разведспутников

Литература, справочная информация
#справка — спектральные каналы, орбиты спутников, поиск данных и т.п.
#обзор
#книга — текст книги прикреплён к сообщению.
#журнал — статьи по ДЗЗ, опубликованные в выпуске журнала
Дополнительные хештеги:
#наблюдение — ресурсы для наблюдения спутников и орбиты спутников
#космодромы

#конференции — анонс конференций/семинаров/школ, посвященных ДЗЗ и анализ их материалов.
#конкурсы — анонс конкурсов/чемпионатов/олимпиад.
#МВК — материалы заседаний Межведомственной комиссии (МВК) по использованию результатов космической деятельности.

#снимки — поучительные (хоть в чем-то интересные) снимки, первые снимки

Программные инструменты / Языки
#нейронки #софт #GEE #R #tool #python #ГИС
#ИИ #FM — Foundation Model (Remote Sensing Foundation Model)

⭐️ ОТРАСЛИ / ТЕМАТИЧЕСКИЕ ЗАДАЧИ

#археология #атмосфера #вода #война #засуха #климат #лед #лес #нефть #океан #оползни #наводнение #пожары #почва #растительность #севморпуть #сельхоз #снег
#AGB — надземная биомасса
#ЧС — мониторинг стихийных бедствий и катастроф
#GHG — парниковые газы
Отдельные газы: #CO2 #NO2
#энергетика — космическая энергетика
#SSA — Space Situational Awareness
This media is not supported in your browser
VIEW IN TELEGRAM
Python-библиотека StreamJoy (https://ahuang11.github.io/streamjoy/) создаёт анимации MP4/GIF на основе списка изображений, каталогов, xr.Dataset, pd.DataFrame, hv.DynamicMap/HoloMap и даже напрямую из URL.

Анимация снимков геостационарного спутника Himawari:

from streamjoy import stream

if __name__ == "__main__":
URL_FMT = "https://www.goes.noaa.gov/dimg/jma/fd/vis/{i}.gif"
resources = [URL_FMT.format(i=i) for i in range(1, 11)]
stream(resources, uri="goes.gif") # .gif and .mp4 supported


#python
DeepForest (https://deepforest.readthedocs.io/en/latest/) — это пакет на языке Python для обнаружения и классификации объектов на RGB-снимках (сверх)высокого пространственного разрешения. Он использует сети глубокого обучения и построен на основе модуля обнаружения объектов из пакета torchvision.

DeepForest предназначен для упрощения обучения моделей обнаружения природных объектов, в частности, деревьев. Разработчики старались сделать его простым, настраиваемым и модульным, скрывая ненужные сложности от пользователя. Вот, например, как выглядит разметка снимка предобученной моделью:

from deepforest import main
from deepforest import get_data
import matplotlib.pyplot as plt

model = main.deepforest()
model.use_release()

sample_image_path = get_data("OSBS_029.png")
img = model.predict_image(path=sample_image_path, return_plot=True)

plt.imshow(img[:,:,::-1])


DeepForest содержит две предобученные модели: Bird Detection и Tree Crown Detection.

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

🖥 Пример работы DeepForest в Google Colab (с инсталляцией пакетов)

В документах есть ссылки на публикации с описанием DeepForest, использованные для обучения снимки находятся в открытом доступе. Есть и “сторонние” примеры использования DeepForest:

🔗 Tree crown detection using DeepForest

#нейронки #python #лес
Joerd (https://github.com/tilezen/joerd) — консольная программа для загрузки, объединения и создания тайлов из цифровых моделей рельефа.

🗺 В документации есть список ссылок на источники ЦМР: https://github.com/tilezen/joerd/blob/master/docs/data-sources.md

#DEM #данные #python
CoastSat

CoastSat (http://coastsat.wrl.unsw.edu.au) — это набор программных средств с открытым исходным кодом на языке Python (https://github.com/kvos/CoastSat), который позволяет пользователям получать временные ряды положения береговой линии на любом побережье по всему миру за 39 лет (и далее) на основе общедоступных спутниковых снимков.

#python
Статистика открытых радарных данных Capella [ссылка]

Mark Litwintschik описывает процесс получения открытых данных радарных спутников Capella и классифицирует доступные снимки по регионам мира, форматам, уровням обработки, типу поляризации и т. п.

🌍 Распространение открытых данных спутников Capella.

#SAR #capella #python
This media is not supported in your browser
VIEW IN TELEGRAM
Новые возможности geemap

Д-р. Qiusheng Wu, автор питоновского пакета geemap (https://geemap.org) для работы с Google Earth Engine (GEE) через Python API, сообщил об обновлении пакета.

Теперь с помощью geemap можно создавать интерактивные графики для различных типов данных GEE: feature, image, array, list и table.

#GEE #python
Введение в ГИС-программирование на Python

Д-р. Qiusheng Wu, создатель нескольких известных пакетов Python 🐍 для работы с пространственными данными — geemap, leafmap и segment-geospatial — создал официальный сайт своего курса 📖 “Introduction to GIS Programming“ (https://geog-312.gishub.org/) по обучению применению языка Python для работы с пространственными данными.

Семестровый курс предполагает всестороннее изучение ГИС-программирования на языке Python. Студенты начнут с изучения основ языка, освоят использование библиотек и фреймворков, необходимых для обработки, анализа и визуализации пространственных данных. В частности, научатся создавать интерактивные веб-карты с помощью Leafmap, визуализировать векторные и растровые данные с помощью MapLibre, получат практический опыт работы с GeoPandas, Rasterio, WhiteboxTools, Geemap, SAMGeo, HyperCoast, DuckDB, Xarray и другими библиотеками.

📹 Видеоматериалы курса

#python #основы