- PVSM.RU - https://www.pvsm.ru -
Всем привет! Меня зовут Георгий Айзель, и сегодня я хочу вам рассказать про свой проект OpenForecast [1], посвященный прогнозированию речного стока. На этих выходных (21–22 марта 2026 года) на многих реках Европейской территории России ожидается первый пик половодья, поэтому я очень рассчитываю, что моя система вам пригодится. Например, можно сгонять в эти дни в Поленово [2] и с высокого берега Оки посмотреть, как вода поднимается до высоких отметок, а потом вернуться летом, чтобы прочувствовать природный контраст между меженью и половодьем.
Тема речной воды и её весеннего разлива лично тронула меня еще в детстве, когда река Томь вышла из берегов и затопила сотни гаражей, среди которых был и гараж моего брата (с красной Маздой 626 1988 года выпуска). Помню как мы переживали, а после этого брат каждую весну отгонял машину подальше от реки как только начинал трещать лед. Потом я пошел учиться на кафедру Гидрологии суши Географического факультета МГУ и закрутилось. И вот я делаю прогноз расходов весеннего половодья, которым пользуется мой брат — гараж всё тот же, а вот машина в нём уже другая.
Знать количество воды в реке, нужно по нескольким причинам. Прежде всего, чтобы прикинуть, хватит ли воды на питьевое водоснабжение и хозяйственные нужды (сельское хозяйство, заводы), и будет ли её достаточно для разбавления городских стоков. Каждую весну интересно (да и в целом полезно) знать, затопит ли любимую дачу, набережную или, как в моей истории, гараж. А ещё многих рыбаков интересует расход и уровень воды в реке — так они понимают на какие места лучше ехать удить.
Ну в общем вы поняли: «вода — всему голова», «глоток воды открывает двери рая» и прочие цитаты про значимость, бла-бла-бла.
Это количество протекающей воды в реке в единицу времени через сечение русла. Основная единица измерений — кубометры в секунду. В научных работах также распространены миллиметры в день: для этого нужно «размазать» суточную сумму стока в кубометрах по всей площади водосбора в квадратных метрах. В итоге получим слой стока, который удобно сравнивать со слоями выпавших и испарившихся осадков.
Измерить расход воды в реке не так-то просто: как минимум, нужно уметь запускать поплавки, делать промеры глубины русла и скачать наставление гидрометеорологическим станциям и постам [5] в котором написано, как это всё поженить для получения заветной цифры.
Смотрите на карте OpenForecast [6]! Выбирайте заинтересовавший вас участок реки, переходите на интерактивный виджет и оценивайте динамику речного стока за прошедшую и будущую неделю. Для некоторых участков рек также доступны уровни воды.
На интерактивном виджете две части: голубая и темно-синяя. Голубая показывает среднее значение за прошедшую неделю, а темно-синяя — за будущую. Полоса вокруг линий — это разброс различных реализаций модельных расчетов: в прогнозе всегда заложена неопределенность, здесь мы её можем примерно оценить. На графике видно, что половодье на Оке начнется совсем скоро, с первым (но единственным ли?) пиком на выходных.
Принципиальная схема выглядит так:
На исторических данных для каждого водосбора настраиваем модель формирования стока. На вход модель получает температуру воздуха, сумму осадков и величину суммарного испарения по данным европейского реанализа ERA5 [7], а на выход отдает величину речного стока.
Теперь переходим в оперативный режим. Каждый день нам нужно подавать в модель актуальный прогноз погоды по входным параметрам: для этого используем глобальную модель ICON [8] Немецкой службы погоды. Для сохранения устойчивости и актуальности запусков, мы также постоянно подгружаем обновления ERA5, к которому и подцепляем наиболее свежие данные ICON.
Подробно можно прочитать в научных статьях в рецензируемых изданиях (осторожно, английский): раз [9], два [10], три [11].
Принципиальная схема проекта хоть и выглядит просто, но на самом деле для меня это была большая, последовательная работа. Началось всё с того, что я переписал на Python известную гидрологическую модель HBV [12], код которой нашел в одной научной статье. Следом за ней были переписаны три модели семейства GRXJ и модель SymHYD [13].
В качестве упражнения в систематизации знаний и публикации результатов в открытом доступе, я выложил код моделей и набор инструментов для работы с ними на Гитхаб [14]. Даже сейчас, по прошествии 10 лет с публикации, я продолжаю получать благодарности от участников гидрологического сообщества: код моих моделей используется в соревнованиях и хакатонах, для написания дипломных и кандидатских работ, и даже (только никому!) в продакшн-среде оценки рисков затоплений одного крупного банка.
Но модели — это только часть работы. Огромная её часть — взаимодействие с метеорологическими и гидрологическими данными, а именно с их стабильным получением и обработкой. В эпоху без LLM приходилось вникать в суть документации и кода, но это полностью окупилось — OpenForecast ни разу не упал из-за бага в собственных процессах. За семилетнюю историю сервиса прогноз не обновлялся только пару дней — и то по причине проблем на стороне поставщиков метеоданных.
Фан-факт: ядро OpenForecast было использовано мной на хакатоне в ECMWF [15] (создатели реанализа ERA5, крупнейший мировой погодный центр). Цель — спрогнозировать состояние британских рек при погодном сценарии [16], описанном в книге «Сто лет одиночества» Габриэля Гарсиа Маркеса: «Дождь лил четыре года одиннадцать месяцев и два дня».
Позалипать на графики можно на странице с результатами [16].
К сожалению, нет. С момента выхода OpenForecast в 2019 году, он так и остался первой российской открытой системой краткосрочного прогнозирования речного стока.
Тем не менее, есть несколько популярных направлений мониторинга ситуации на реках:
Веб-сайты региональных управлений управлений Гидрометслужбы. Например, ЦУГМС собирает свои сводки по весенним половодьям и паводкам [17].
Веб-камеры. Например, на вот вид [18] с опоры моста через реку Томь в городе Новокузнецке.
Телеграм-бот [19] Приморского УГМС. Предоставляет информацию об измеренных уровнях воды в бассейнах рек Уссури, озера Ханка и Японского моря.
Подробной информации по использованию системы у меня нет. Знаю только, что на главную в период половья (март–май) могут заходить до нескольких тысяч человек в день. Среди них — прогнозисты Росгидромета, которые хоть и вынуждены в своей работе использовать часто устаревшие методы, но краем глаза сверяются и с OpenForecast.
Но главным мои пользователем остается брат, который теперь отгоняет машину из гаража не загодя, а сверяясь с моим прогнозом. Как-то раз получил от него такое сообщение: «Работает твоя программа, прям можно сказать до сантима прогноз верный». Одобрение старшего брата для меня не только необходимое каждому признание хорошей работы, но и подтверждение реальной пользы, которую приносит мой сервис.
Планов, конечно, громадьё. Конечный образ результата видится таким: прогноз речного стока в любой точке речной сети на следующий час, день, месяц или даже век (почему бы и нет). Но пока это только планы.
Зима в Центральной России была снежной (в два раза выше нормы по многим областям, включая Московскую, Калужскую, Рязанскую), а значит весной и половодье должно быть выраженным и интенсивным. А где за ним следить [1] вы уже знаете :)
Если хотите быть в курсе новостей из области гидрологии, подписывайтесь на мой телеграм-канал «Всё в сток [20]».
OpenForecast не был бы возможен без вклада и поддержки моих друзей, коллег и знакомых, а также (ныне расформированного) Российского фонда фундаментальных исследований (РФФИ). Наташа Варенцова, Оксана Ерина, Всеволод Морейдо и Дмитрий Соколов были в первой рабочей группе проекта. Люба Курочкина помогла масштабировать проект до сотен водосборов, а Дима Абрамов — поддержать оценку качества прогнозов. Написать эту статью мне помогла Наташа Которева. Спасибо вам!
Автор: hydrogo
Источник [21]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/modelirovanie/447367
Ссылки в тексте:
[1] OpenForecast: https://openforecast.github.io/
[2] Поленово: https://yandex.ru/maps/-/CPFn6-mY
[3] https://openforecast.github.io: https://openforecast.github.io/map
[4] https://www.city-n.ru/view/464334.html: https://www.city-n.ru/view/464334.html
[5] наставление гидрометеорологическим станциям и постам: https://mgmtmo.ru/edumat/rd/nast_gmsp_6_1.pdf
[6] OpenForecast: https://openforecast.github.io/map.html
[7] ERA5: https://cds.climate.copernicus.eu/datasets/reanalysis-era5-single-levels
[8] ICON: https://www.icon-model.org/
[9] раз: https://doi.org/10.3390/geosciences12020067
[10] два: https://doi.org/10.3390/hydrology8010003
[11] три: https://doi.org/10.3390/w11081546
[12] гидрологическую модель HBV: https://www.geo.uzh.ch/en/units/h2k/Services/HBV-Model.html
[13] SymHYD: https://ewater.atlassian.net/wiki/spaces/SD50/pages/50135548/SIMHYD+-+SRG
[14] Гитхаб: https://github.com/hydrogo/LHMP
[15] ECMWF: https://www.ecmwf.int/
[16] погодном сценарии: https://hydrogo.github.io/4Y11M2D/
[17] сводки по весенним половодьям и паводкам: https://cugms.ru/gidrologiya/vesennee-polovode-i-dozhdevye-pavodki-2026/
[18] вид: https://www.vdk.ru/operational_information/uroven_vody_v_reke/
[19] Телеграм-бот: https://t.me/MoussonBot
[20] Всё в сток: https://t.me/vsevstok
[21] Источник: https://habr.com/ru/articles/1013200/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1013200
Нажмите здесь для печати.