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

Обратная связь: @sputnikDZZ_bot
加入频道
Области спектра, в которых ведется дистанционное зондирование Земли

Таблица из: Коберниченко, В. Г. Радиоэлектронные системы дистанционного зондирования Земли. – Екатеринбург : Изд-во Урал. ун-та, 2016.
GEOINT

Геопространственная разведка (GEOINT, от Geospatial Intelligence) — это разведывательная деятельность, основанная на анализе изображений и геопространственных данных. GEOINT описывает, оценивает и визуально изображает физические особенности человеческой деятельности с географической привязкой.

В США GEOINT оформилась в 1950-е годы, в ходе наблюдений за территорий СССР с самолетов-шпионов U-2. Основная организация — National Geospatial-Intelligence Agency (NGA). Подчиняется Министерству обороны и насчитывает около 14 500 сотрудников.

Список государственных агентств геопространственной разведки. На русском языке о GEOINT есть небольшая статья про NGA, написанная еще в 2019 г.

Пройти курс по GEOINT можно в университете или в компании, из числа тех, что борются за мир на деньги министерства обороны (к примеру, в такой). Так, в Pennsylvania State University есть курс для новичков и продвинутый. Может и нам стоит подумать над расширением университетских программ по геоинформатике?

#война #справка
GEE-3. Структуры данных Earth Engine

Для хранения геопространственных данных Earth Engine использует типы данных Image и Feature.

Image — это растровые данные: снимки или карты. Они состоят из набора каналов (bands) и свойств (метаданных). Добавьте print(image) в код и посмотрите, как выглядит такой объект.

Feature — векторные данные, которые состоят из описания геометрии объекта Geometry (точки, линии, полигона) и его свойств (атрибутов).

Несколько снимков образуют коллекцию ImageCollection. Коллекция векторных данных называется FeatureCollection.

Есть еще Dictionary, List, Array, Date, Number и String. Все эти типы данных начинаются с ee. и создают серверные объекты. Реальные данные этих объектов хранятся где-то далеко, на серверах Google. В этом их отличие от объектов JavaScript, которые хранятся на вашей (клиентской) машине, и от карты — объекта Map, которую Earth Engine также создает на вашей машине.

Чтобы отравить данные Google, нужно поместить их в контейнер — ee.объект:

// Зададим строку и поместим ее в EE-контейнер.
var clientString = 'To the cloud!';
var eeString = ee.String(clientString);
print('Where to?', eeString);

Проверка показывает, что мы создали обычный string, а затем превратили его в серверный объект (object):

print(typeof clientString);
print(typeof eeString);

Данные на сервере обрабатываются очень быстро. У вас на машине, надеюсь, тоже. Самые большие потери времени приходятся на обмен данными между сервером и клиентом. Поэтому:

* Старайтесь всю работу проводить на сервере. К себе на машину перегоняйте только готовый результат.
* Не смешивайте в коде серверные и клиентские объекты. Сначала одно, потом другое. Примеры здесь.

Код примера: https://code.earthengine.google.com/f1588794e7d3e8dc923d7c5019b6c6e5

#GEE
Бесплатные спутниковые снимки

Основой массив бесплатных спутниковых данных составляют снимки, находящиеся в открытом доступе. Как правило, это снимки среднего (10–10 м) и низкого (свыше 100 м) пространственного разрешения. Самые популярные данные такого рода — снимки спутников Sentinel, Landsat и прибора MODIS (спутники Terra и Aqua). Если снимков требуется много, нужен сервис с доступом по API.

1. NASA Earthdata Search: спутниковые снимки (не только NASA, есть все Sentinel’и), аэрофотоснимки, данные наземных платформ. Поиск по темам (Keywords) и по инструментам. Есть снимки с геостационарных спутников. Самый широкий выбор снимков, но нет доступа по API.

2. Copernicus Browser дает возможность скачивать данные Sentinel-1 (GRD, SLC, OCN, L0), Sentinel-2 (L1C, L2A), Sentinel-3 (OLCI, SLSTR, SRAL, MWR), и Sentinel-5P (L1B и 12 видов данных 2-го уровня обработки), а также Copernicus DEM (30 метров и 90 метров) и ESA WorldCover. Есть доступ по API.

3. Alaska Satellite Facility (ASF): радарные данные. Можно заказать обработку снимков Sentinel-1 и получить готовые к работе данные, в том числе InSAR (интерферограммы, карты когерентности). Есть доступ по API. Работает регистрация с Earthdata.

4. USGS Earth Explorer. Изюминка: рассекреченные данные разведывательных спутников Key Hole.

5. Amazon Web Services (AWS) satellite data. Коллекции открытых спутниковых данных, в том числе с избранные данные коммерческих спутников (пример). Сервис удобен для получения данных в промышленных масштабах. Данные: Sentinel -2, Landsat 8, MODES (Terra)/(Aqua), Worldview, SRTM (30m), GOES и др. Есть доступ по API.

Во всех случаях требуется бесплатная регистрация на сервисе.

О том как посмотреть и получить бесплатно снимки высокого разрешения мы поговорим в будущем.

#данные
GEE-4. Фильтрация коллекции снимков

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

Код примера: https://code.earthengine.google.com/c6958a766c88d0b180e0700f6e2a52c2

Сформулируем требования к снимкам:
// ROI.
var ROI = ee.Geometry.Point([39.9222496922294, 43.41360517855418]).buffer({'distance': 5000}).bounds();

// Промежуток времени.
var START_DATE = '2022-03-22';
var END_DATE = '2022-07-10';

// Максимальная доля облачности снимка.
var CLOUD_MAX = 35;


ROI — это region of interest, то есть интересующий район.

Отберем снимки из коллекции Sentinel-2 Level 2A:

var S2_SR = ee.ImageCollection("COPERNICUS/S2_SR")
.filterDate(START_DATE, END_DATE)
.filterBounds(ROI)
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', CLOUD_MAX));


filterDate и filterBounds — специализированные фильтры: для дат и для области пространства, filter — универсальный фильтр, внутри которого задается условие.

Условие ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', CLOUD_MAX) означает, что левый аргумент (доля облачности) должен быть меньше (lt – less then) заданного порога CLOUD_MAX.

Детали синтаксиса нужного объекта или функции можно узнать поиском во вкладке Docs редактора кода.

На первых порах удобно добавлять фильтры постепенно и оценивать состав полученной коллекции при помощи print-ов.

'CLOUDY_PIXEL_PERCENTAGE' — это одно из свойств снимка: процент площади снимка, покрытой облаками. Заметим, что это доля облачности на всем снимке, а не в интересующем районе. Мы подобрали порог достаточно высоким, чтобы не пропустить хорошие снимки, где ROI чист от облаков, несмотря на высокую долю облачности в остальной части снимка.

Снимкам нужна небольшая предварительная обработка, с которой мы познакомились здесь. Так как операция выполняется много раз, превратим ее в функцию:

function applyScaleFactors(image) {
var bands = image.select('B.').multiply(0.0001);
return image.addBands(bands, null, true);
}


image.addBands(bands, null, true) добавляет в снимок новые каналы, значения пикселей в которых умножены на 0.0001. Каналы переписываются поверх одноименных старых.

Теперь обработаем коллекцию

S2_SR = S2_SR.map(applyScaleFactors);


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

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

Чтобы получить доступ к произвольному снимку по его номеру, превратим коллекцию в список (List):

var colList = S2_SR.toList(S2_SR.size());


с числом элементов

var n = colList.size().getInfo();

Создадим карту, и в цикле будем добавлять на нее слои со снимками.

for (var i = n-1; i > -1; i--) {
var image = ee.Image(colList.get(i));
var date = image.date().format("YYYY-MM-dd").getInfo();
Map.addLayer(image.clip(ROI), visRGB, date);
}


colList.get(i) означать “взять i-й элемент списка colList“. Нумерация элементов начинается с 0.

date() извлекает из снимка дату съемки, format("YYYY-MM-dd") преобразует формат даты в календарный, а getInfo() превращает объект типа date в строку — для выдачи на легенде к карте.

#GEE
Спутники на сверхнизких орбитах

Сверхнизкие околоземные орбиты (Very Low Earth Orbit, VLEO) — это орбиты, лежащие ниже орбиты МКС (около 400 км). Сопротивление атмосферы на них гораздо выше, чем на традиционных орбитах спутников ДЗЗ (500–700 км), а значит время существования спутников будет гораздо меньшим. Но есть у VLEO и множество плюсов.

* Уменьшение высоты полета спутника с 650 до 160 км приводит к 64-кратному снижению мощности радара, 16-кратному снижению мощности антенны связи и 4-кратному уменьшению оптической апертуры для достижения того же разрешения съемки. Грубо говоря, можно создать маленький спутник с возможностями как у большого.

* Считается, что VLEO-спутники позволят производить фотосъемку поверхности Земли с разрешением 10 см на пиксель.

* Выводить спутники на VLEO дешевле, а значит сократятся затраты на запуск. Требования к носителю будут ниже, а работы по запуску ракет с неподготовленных площадок уже ведутся.

* Сопротивление атмосферы будет очищать VLEO от космического мусора.

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

Что есть сейчас? Европейская миссия GOCE (255 км, 4.5 года) и японская SLATS (200 км, почти 2 года). Вполне успешные, но большие и дорогие.

В настоящий момент успешными хотят стать американские стартапы Skeyeon, Albedo и Earth Observant, а также европейский гигант Thales Alenia Space. Все они хотят только хорошего: охранять природу, поддерживать сельское хозяйство и обеспечивать устойчивое развитие. Правда, Earth Observant собирается делать это на деньги ВВС США, но так тоже бывает.

У GOCE и SLATS высота орбиты поддерживалась ионным двигателем на ксеноне. Как будут решаться проблемы поддержания орбиты сейчас — пока не известно. Но стартапы что-то знают. Первые пуски на VLEO намечены: на 2023 год у Earth Observant и на 2024 год у Albedo. Будем следить за развитием событий.

Впрочем, есть заказчики, которые понимают окупаемость по-своему. Earth Observant как бы намекает. Напомним, что орбиты разведывательных спутников CORONA лежали ниже 160 км.

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

#VLEO #keyhole
Вот как может выглядеть снимок с 10-сантиметровым разрешением. Фото из Spacenews.
Спутниковое ДЗЗ в военном бюджете США на 2023 год

Закон об оборонном бюджете США на 2023 год уже подписан Байденом. Что там в части ДЗЗ?

На Космические силы выделено $26.3 млрд, что почти на $1.7 млрд больше, чем первоначально запрашивал Пентагон. Более $500 млн дополнительных средств приходится на Агентство космического развития (SDA). SDA создано Пентагоном в 2019 году чтобы помочь Космическим силам эффективнее использовать коммерческие спутниковые технологии (гусары молчать!). SDA приобретает сотни коммерческих спутников и соответствующих наземных систем, чтобы создать на низкой околоземной орбите группировку для обнаружения пусков и отслеживания баллистических и гиперзвуковых ракет. Кроме того, SDA создает группировку низкоорбитальных спутников связи для передачи военными данных по всему миру.

В добавление к низкоорбитальной группировке от SDA, Космические силы еще в мае 2021 года заключили контракты с Raytheon Technologies на $727 млн и с Millennium Space Systems на $412 млн для создания прототипов спутников, способных обнаруживать и отслеживать гиперзвуковые и баллистические ракеты со средней околоземной орбиты. В ноябре 2022 на эти разработки выделены дополнительные $605 млн. Предполагается, что спутники будут запущены в 2026 году.

$50 млн предназначены для программы "Тактически отзывчивый космос". Отзывчивость космоса состоит в том, что Пентагон будет использовать малые коммерческие ракеты-​носители для быстрого пополнения своей спутниковой группировки.

#война #США
GEE-5. Экспорт данных

Google Eаrth Engine является одним из лучших источников бесплатных спутниковых снимков. При этом можно выбрать только нужный фрагмент снимка и только нужные его каналы. Или наоборот — составить мозаику из нескольких снимков. В общем сейчас — про то, как получить данные из GEE.

Код примера: https://code.earthengine.google.com/de5e0930a83f9781ef0f27fb68fb0ea2

Отфильтруем коллекцию снимков Sentinel-2 L2A и сортируем ее по доле облачности 'CLOUDY_PIXEL_PERCENTAGE':

var S2_SR = ee.ImageCollection("COPERNICUS/S2_SR")
...
.sort('CLOUDY_PIXEL_PERCENTAGE', true);


true означает сортировку по возрастанию, так что первым будет самый чистый снимок. Узнаем, какая доля площади этого снимка покрыта облаками:

var cpp = S2_SR.first().get('CLOUDY_PIXEL_PERCENTAGE');
print('The cloudy pixel percentage of clearest image: ', cpp);


Скачаем этот снимок на свой Гугл-диск:

// Экспорт снимка
Export.image.toDrive({
image: image.select('B.*'),
description: 'S2_'.concat(date),
scale: 10,
region: ROI,
fileFormat: 'GeoTIFF',
});


* Из снимка выбраны только его каналы B1 – B12. Маски и другая вспомогательная информация нам не нужны.
* Пространственное разрешение всех каналов будет равно 10 м (scale). При этом каналы B5 – B7, B8A, B11 и B12 (оригинальное разрешение 20 м) и каналы B1, B9, B10 (60 м) будут ресемплированы к разрешению 10 м.
* Имя готового файла: ‘S2_ + дата снимка’ (YYYY-mm-dd).
* Снимки сохраняются в формате GeoTIFF.

Можно экспортировать несколько снимков, преобразовав коллекцию в список, и поместив экспорт в цикл:

for (var i = n-1; i > -1; i--) {
var image = ee.Image(colList.get(i));
var date = image.date().format("YYYY-MM-dd").getInfo();

Export.image.toDrive({
image: image.select(['B4', 'B3', 'B2']),
description: date,
scale: 10,
region: ROI,
fileFormat: 'GeoTIFF',
});
}


Здесь выбираются только RGB каналы снимков.

Код примера: https://code.earthengine.google.com/296383d01c624eae1bb4793326b8d068

#GEE #данные
Векторные карты административных границ

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

* Global Administrative Areas (GADM) — наборы данных об административных границах для всех стран мира.

* Humanitarian Data Exchange предоставляет доступ к векторным картам Office for the Coordination of Humanitarian Affairs (OCHA) Common Operational Datasets (CODs), которые используются для гуманитарных миссий ООН. Как правило, эти карты точнее GADM.

* OpenStreetMap (OSM) создаются инициативной общественностью. Нередко эти карты являются лучшими среди общедоступных по точности и актуальности. Можно скачать копию полной базы данных OpenStreetMap, объемом свыше 100 Гб, или сравнительно небольшую область — при помощи Overpass API.

* geoBoundaries — глобальная база данных административных границ, вплоть до 5 уровня (подробности). Данные публикуются в структурированной форме, что позволяет интегрировать geoBoundaries в сервисы крупномасштабного сбора данных. Помимо собственных данных, сервис предлагает данные OCHA CODs и UN SALB. Сервис не создает карт, а отбирает их среди существующих, указывает источник и информацию об открытой лицензии. Инструмент geoContrast позволяет сравнить границы, построенные по разным картам.

Алгоритм выбора карт

1. Выбираем лучшие из доступных карт в инструменте geoBoundaries Visualize & Compare Boundaries. Качество проверяем по подложке, составленной из спутниковых снимков. Если карт OSM в geoBoundaries нет или они устарели, получаем актуальные при помощи Overpass API.
3. Для выбранных карт проверим несколько участков границы, сравнивая их с Bing Aerial (QGIS) или Google Maps (QGIS, Google Earth). Маловероятно, чтобы граница неоднократно разделяла на части сельскохозяйственные поля, пересекала дороги или шла свозь сплошной лес. Выбираем карты, содержащие меньшее число ошибок в интересующем нас регионе.

Карты GADM стоит использовать только если не существует других карт региона.

#данные #границы
Сравнение границ Атбасарского района Казахстана по данным OCHA (синий цвет), GADM (красный) и OSM (черный).
Граница из данных OSM (желтый цвет) выглядит самой логичной. Только она проходит по дороге, лежащей между полями или вдоль русла реки.
Мониторинг нарушений состояния растительности: OPERA_L3_DIST-ALERT-HLS_PROVISIONAL_V0

JPL и лаборатория GLAD разработали новый продукт — данные OPERA* Land Surface Disturbance Alert. Они показывают нарушения состояния растительности, опираясь на уменьшение доли растительности в пикселе или изменения в спектре. Алгоритм разработан в GLAD и продолжает многолетнюю цепочку работ этой лаборатории.

Мониторинг нарушений основан на гармонизированных данных Landsat 8/9 и Sentinel-2 A/B (HLS) с пространственным разрешением 30 м. В идеале, промежуток между съемками составит 2–4 суток.

Аналогичные продукты от GLAD уже существовали, но были ограничены тропическими регионами, снимками с одного спутника, и предназначались для обнаружения нарушений состояния леса (на Global Forest Watch это — GLAD Alerts и GLAD-S2 Alerts). Теперь речь идет о глобальном покрытии и любой растительности. Например, можно посмотреть на уменьшение доли зеленой биомассы в период созревания и уборки сельскохозяйственных культур.

Продукт состоит из 19 слоев, реализованных в виде отдельных файлов GeoTiff. Начать можно со слоя VEG-DIST-STATUS — классификации состояния растительности.

Данные совсем свежие (V0!), информации об их точности нет. Будем изучать.

Поиск/скачивание: https://search.earthdata.nasa.gov/search?q=C2517904291-LPCLOUD
Описание: https://d2pn8kiwq2w21t.cloudfront.net/documents/ProductSpec_DIST_HLS.pdf
Алгоритм: https://lpdaac.usgs.gov/documents/1579/OPERA_DIST_ATBD_V1.pdf

*The Observational Products for End-Users from Remote Sensing Analysis (OPERA) — проект JPL, направленный на создание продуктов для оперативного мониторинга.

#данные #растительность
Беспородный пёс Уголёк — единственный, кто прокатился в космос с Ветерком
GEE-6. Импорт данных

Огромный плюс Earth Engine состоит в том, что он позволяет обрабатывать не только собственные данные, но и данные, загруженные пользователем. Импортировать можно растровые данные в формате GeoTIFF, векторные данные (SHP) и таблицы (CSV). Посмотрим, как это работает, на примере продукта DIST-ALERT.

Код примера: https://code.earthengine.google.com/a5102e9a2325ab0de05af494aebc0776

Рассмотрим нарушения состояния растительности, вызванные пожаром в окрестности пика Отшельника в Национальном лесу Санта-Фе. Пожар начался 6 апреля 2022 года и на момент съемки (28 мая 2022 года) был локализован только на ~48%. Данные можно получить на Earthdata. Мы взяли один слой (файл), в котором указано состояние растений: VEG-DIST-STATUS.

Для импорта данных во вкладке Assets последовательно выбираем Assets > New > GeoTIFF. Указываем загружаемый файл и присваиваем ему имя, под которым он будет хранится на GEE. Имя исходного файла: OPERA_L3_DIST-ALERT-HLS_T13SDV_20220528T173909Z_20220615T143100Z_S2B_30_v0.1_VEG-DIST-STATUS. Точки в имени файлов GEE не допускает, так что сохраним файл как VEG-DIST-STATUS.

Обращение к загруженному файлу будет таким же, как к “родным” данным GEE:

var image = ee.Image('projects/ee-sputnikdzz/assets/VEG-DIST-STATUS');


Можно было бы сразу поместить файл на карту. Но мы не будем спешить. Во-первых, наш файл содержит не непрерывный интервал значений, а 5 классов с оценками состояния растительности:

* 0 – нет нарушений
* 1 – предварительный <50%
* 2 – подтвержденный <50%
* 3 – предварительный ≥50%
* 4 – подтвержденный ≥50%

Статус “предварительный” означает, что нарушение выявлено на одном снимке. Подтвержденным оно становится после того, как будет найдено на следующих снимках. <50% — это небольшое нарушение состояния (болезнь). ≥50% — значительное нарушение, например вырубка леса. В итоге, у нас 4 класса нарушений. Значит для их отображения понадобится палитра с соответствующим числом цветов. Статус “нет нарушений” отображать не имеет смысла: он будет занимать большую часть снимка и просто скрывать лежащий ниже слой карты.

Зададим палитру:

var vdPalette = [
'F1C40F', // 1: предварительный <50%
'F39C12', // 2: подтвержденный <50%
'BA4A00', // 3: предварительный ≥50%
'E74C3C' // 4: подтвержденный ≥50%
];


Цвета следуют от желтого к красному — по мере увеличения серьезности нарушений. Они подбирались в HTML Color Codes.

Управление отображением слоя задаем так:

var vis = {
min: 1,
max: 4,
palette: vdPalette,
opacity: 0.7
};


Минимальное и максимальное значения на карте следуют из значений классов. Добавляем палитру и opacity — непрозрачность. По умолчанию, opacity = 1, то есть слой полностью непрозрачен. Уменьшая opacity, мы увеличиваем прозрачность слоя. Это позволит увидеть карту или спутниковый снимок, составляющие подложку, и лучше ориентироваться в данных.

Подробнее, о визуализации изображений в GEE.

Наконец, нужно удалить со снимка значения, соответствующие классу 0 — ненарушенному состоянию растительности. Для этого создадим маску, то есть поставим логическое условие: image.neq(0). Условие истинно для пикселей с нарушениями и ложно для ненарушенных. В результате применения маски к исходному снимку, на нем останутся только пиксели с нарушениями:

image = image.updateMask(image.neq(0));


GEE может маскировать снимок на основе его собственных данных, считая нулевые значения результатом применения маски. Это дает более короткий код:

var image = image.selfMask();


Как видно, кроме значительных и подтвержденных, на снимке есть много мелких нарушений в виде отдельных пикселей. Это могут быть ложные срабатывания алгоритма или же что-то полезное — данные DIST-ALERT совсем свежие и требуют изучения.

#GEE #данные
Больше спутников, четче снимки

Или: “космическая отрасль развертывает больше спутников, которые обеспечивают более четкие изображения” — такую тенденцию обнаружила компания Quilty Analytics на рынке снимков сверхвысокого разрешения. Наверняка Квилти ухватили глубинную суть явления, просто не смогли ее донести. К счастью, есть и выводы попроще. Перейдем к ним.

В числе признанных мировых игроков на рынке изображений сверхвысокого разрешения. Квилти называют: Airbus (штаб-квартира в Германии), Imagesat International (Израиль), Maxar Technologies (США) и SI Imaging Services (Южная Корея). Новые игроки — это BlackSky, Planet (обе — США) и Satellogic (всё сложно). Начинали они с данных среднего разрешения, но теперь стараются повысить его, чтобы потягаться с лидерами.

Есть перспективы возникновения нового сектора отрасли, в котором спутниковые группировки будут разворачивать ближе к Земле, на сверхнизких орбитах (ниже 400 километров). Квилти считают, что это даст возможность получать коммерческие снимки с разрешением от 10 до 35 сантиметров. В ближайшие годы развернуть свои группировки на сверхнизких орбитах планируют три стартапа — Albedo, Earth Observant и Skeyeon.