КосмоХакатон 2026 · Благовещенск Sentinel-1 / Sentinel-2 · Амурская область

Река вышла из берегов, а облака её закрыли Река вышла из берегов а облака её закрыли

Радар видит воду сквозь облака, оптика показывает, что именно ушло под воду. Мы сводим пару снимков «до» и «на пике» в одну карту: где вода пришла, где ушла и сколько это гектаров. Ни нейросетей, ни ручной разметки — физика обратного рассеяния, рельеф и открытые данные Copernicus.

Метрика организаторов 0.4004 на 11 выданных парах
Пар «район × событие» 11 8 событий и 3 межени
Без пригодной оптики 4 пары идут тем же кодом
Расчёт района 43 сек процессор, 10 ядер
Радарный снимок Амура: вода на пике паводка и зона нового затопления

Как считаем

Что учитываем и чего не делаем
01 · радиолокация

Воду видно сквозь облака

Радар снимает поверхность в любую погоду: вода отражает сигнал зеркально и читается провалом яркости. Считаем не «цвет», а падение обратного рассеяния относительно сухих сцен того же района.

Предел: при сильной ветровой ряби вода ярче суши. Решение это распознаёт и вместо молча заниженной площади поднимает флаг непригодности наблюдения.

02 · второй свидетель

Оптика с поправкой на дату

Оптика показывает, что именно ушло под воду: поля, дороги, посёлки. Чем больше разрыв между съёмками, тем меньше её вес в общей оценке — на пяти сутках остаётся около пятой части.

Предел: у четырёх пар из одиннадцати пригодной оптики нет вовсе. Отдельной ветки для них нет — тот же расчёт, нулевой вес оптики.

03 · контекст

Рельеф и история вместо порогов

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

Предел: жёсткий порог HAND из рецепта организаторов срезает реальное затопление в широкой пойме Амура — у нас он мягкий и подстраивается под сцену.

Числа

Каждый механизм измерен абляцией
Вклад механизмов

Девять конфигураций, каждая отличается от предыдущей одним переключателем. Базовая точка — опубликованный рецепт организаторов: один порог на сцену и наивная разность масок. Полное решение — 0.4004.

КонфигурацияScoreПриростQfloodQpeakQpreSpec
0. Базовый рецепт: глобальный Оцу и разность масок0.36300.1420.4160.3001.000
1. + фильтрация спекл-шума0.3719+0.00890.1400.4410.3231.000
2. + порог под сцену по бимодальным тайлам0.3147-0.05710.0980.4250.3040.792
3. + рельеф и гидрология как мягкий априор0.3424+0.02770.1040.4410.3110.925
4. + физический потолок яркости воды0.3424+0.00000.1040.4410.3110.925
5. + связность с постоянной водой0.3532+0.01080.1030.4440.3630.941
6. + временной ряд радарных наблюдений0.3705+0.01730.1040.4410.4250.999
7. + исключение обычной воды из новой0.3969+0.02640.1620.4410.4251.000
8. Полное решение: + оптика с весом по разрыву дат0.4004+0.00350.1690.4430.4251.000
Калибровка

Свободных параметров два: сдвиг уверенности и минимальная картируемая единица. Они видят все события, кроме одного, — качество проверяется на отложенном.

ПроверкаКак считаетсяРезультат
Отложенное событие три фолда: 2019, июнь 2021, август 2021 выбран вариант «сдвиг 0.0, объект 200 пикс» — 2 га
Контроль ложных срабатываний три пары межени, где затопления нет доля ложных 0.000, Spec_base 1.000
Повторный прогон два полных расчёта подряд на одних данных 0.400381 и 0.400381, разница 0 при допуске 0.005
Работа без интернета собранный образ с отключённой сетью тесты, расчёт и валидатор проходят, метрика та же

Сервис

Карта, отчёт и выгрузки
Живая карта

Подложка — сам снимок, поверх вода на обе даты, новое затопление и убыль. Есть шторка сравнения «до / пик», анимация перехода, слой неуверенной классификации и сценарий подъёма уровня.

Открыть карту
Что отдаёмЧем
Карта динамики: вода на обе даты, прирост и убыль интерфейс на MapLibre, работает без внешних тайлов
Сводный отчёт: площади в га и км², доля района, разрез по покрову и бассейнам карточка в интерфейсе и GET /api/pairs/{id}/report (JSON, CSV)
Контуры воды и затопления с атрибутами GeoJSON и маска GeoTIFF
Пересчёт по новому радарному наблюдению POST /api/update: считаются только новая маска, прирост, убыль и отчёт
Пространственно-временной запрос POST /api/analyze: полигон или прямоугольник и пара дат

Пары

Результат, который ушёл в посылку
Площади по парам

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

Событие и районЗеркало «до», гаЗеркало на пике, гаНовое затопление, га
Контрольный период межени, сентябрь 2018
Благовещенск — слияние Амура и Зеи · контроль
10 167.429 601.1931.10
Контрольный период межени, сентябрь 2018
Константиновка — пойма Амура · контроль
9 602.887 874.0222.97
Контрольный период межени, сентябрь 2018
Свободный — среднее течение Зеи · контроль
4 853.782 000.880.00
Паводок в Приамурье, июль 2019
Белогорск — река Томь
943.89836.710.00
Паводок в Приамурье, июль 2019
Благовещенск — слияние Амура и Зеи
4 710.998 695.81141.43
Паводок в Приамурье, июль 2019
Константиновка — пойма Амура
7 135.397 335.16123.80
Паводок в Приамурье, июль 2019
Свободный — среднее течение Зеи
4 816.745 375.85299.99
Рекордный подъём Амура у Благовещенска, июнь 2021
Благовещенск — слияние Амура и Зеи
9 604.8313 305.802,809.11
Рекордный подъём Амура у Благовещенска, июнь 2021
Константиновка — пойма Амура
7 851.6617 739.527,974.84
Рекордный подъём Амура у Благовещенска, июнь 2021
Поярково — Михайловский район, Амур
6 533.2612 385.723,905.96
Наводнение на Зее и Селемдже, август 2021
Свободный — среднее течение Зеи
5 121.9410 474.044,875.46

Ограничения

Где решение ошибается и что с эталоном

Вода может быть не видна

При ветровой ряби спокойная вода ярче суши. Мы это измеряем: сцена помечается флагом, а оценка делается консервативной. Отсутствие съёмки не означает отсутствия воды.

Эталон противоречив

Набор собран автоматически, и мы измерили его границы: у одной пары заявленная площадь расходится с приложенной маской на 305 га, а при контрасте 3.8 дБ эталон видит 0.4 % постоянной воды. Метрика по таким парам шумит — говорим об этом прямо.

Что пока не покрыто

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

Проверка

Код, доказательства, критерии
Репозиторий

Код, отчёт по исследованию, презентация и все доказательства — в репозитории проекта (ветка main). Расчёт воспроизводится одной командой; интернет нужен только на шаге выгрузки снимков.

Проверка посылки — штатным валидатором: 11 пар, 0 ошибок, расхождение площадей 0 %. Два полных прогона дают одинаковую метрику, офлайн-прогон в контейнере — ту же.

Критерий кейсаГде смотреть
Схема решения и механика ошибок каналов разделы 4.1–4.5 отчёта, блок «Как считаем» выше
Работа с ограничениями данных раздел 2 отчёта: выгрузка, покрытие сцен, оптика, малый набор
Предметные и инженерные решения раздел 6 отчёта и таблица абляций на этой странице
Продуктовое видение раздел 8 отчёта, живая карта и таблица «Что отдаём»
Карта, отчёт, выгрузки живая карта, /api/pairs/{id}/report, GeoJSON и GeoTIFF
Эксперименты и калибровка разделы 5.1–5.4 отчёта, experiments/ablation.md, experiments/calibration.md
Оригинальность подхода раздел 9 отчёта: сухой ряд, исключение обычной воды, флаг непригодности
Критический анализ эталона и метрики раздел 7 отчёта, блок «Ограничения» выше
Воспроизводимость и ресурсоёмкость evidence/reproducibility.json, evidence/offline_run.log
Корректность сабмита и значение метрики таблица «Пары», outputs/validation.json, outputs/metrics.json