Точность прогноза погоды зависит от многих факторов — в том числе от данных, на основе которых и проводятся вычисления. Поэтому мы постоянно добавляем новые источники информации, которые используем в Яндекс Погоде. Три года назад мы представили технологию Метеум 2.0, которая учитывала не только профессиональные метеостанции, но и подсказки пользователей наших приложений. С помощью «зонтиков» нам удалось повысить качество прогноза осадков в районах с низкой плотностью размещения метеостанций и радаров.
Сегодня мы запускаем OmniCast — новую технологию в составе Метеума. Она повысит точность прогноза температуры с помощью пользовательских метеостанций, подключить которые может любой желающий по API. Благодаря новым источникам данных сервис стал в 36 раз чаще получать данные о температуре. В районах с плотным покрытием такими станциями Яндекс Погода сможет прогнозировать температуру с точностью до квартала. Если раньше мы прогнозировали температуру для ячеек с минимальным размером 2х2 километра, то теперь разрешение повысили в 16 раз — до 500х500 метров.
Но одних данных недостаточно, чтобы построить более детализированный прогноз. Поэтому в этой статье мы расскажем о том, как при помощи фильтра Калмана и комбинации двунаправленной и однонаправленной LSTM-нейросетей нам удалось улучшить качество прогноза температуры.
Какую проблему мы решаем
Для начала давайте напомним, как Яндекс Погода рассчитывает прогноз погоды. Прогнозирование температуры, влажности, давления, ветра и осадков на ближайшие 10 дней при помощи технологии Метеум производится так: на вход модели машинного обучения передаются численные прогнозы от мировых поставщиков и различные дополнительные фичи, например, высота солнца над горизонтом или тип подстилающей поверхности. В качестве таргета для обучения используются данные с профессиональных метеостанций. ML-модель обучается на архиве показаний с метеостанций и учится воспроизводить показания в точках метеостанций. Затем обученная модель применяется для каждой ячейки регулярной сетки, покрывающей весь мир. В итоге мы получаем прогноз на сетке 2×2 км над сушей и 10×10 км над океаном на 10 дней вперёд.
Правильно показывать «погоду за окном сейчас» — важнейшая составляющая доверия к качеству погодного сервиса. И это не самая простая задача. Мы можем достаточно оперативно получать измерения с профессиональных метеостанций, настроенных специалистами. Основные проблемы в пространственном и временном разрешении — станций мало (обычно всего несколько штук на крупный город) и они редко осуществляют измерения: например, метеостанции в населённых пунктах — обычно раз в 3 часа, а метеостанции в аэропортах — раз в полчаса.
Первоначально информацию о текущей погоде мы брали с ближайшей доступной метеостанции, и в результате могли сильно ошибаться. Например, в Екатеринбурге две метеостанции: одна — в центре города, измеряет раз в 3 часа, другая — в аэропорту Кольцово в 20 км от центра, измеряет раз в полчаса. В утренние/вечерние часы или в мороз температура в аэропорту может отличаться от температуры в центре города на целых 13 (!) градусов (это явление называется «городским островом тепла»). В итоге метеостанция в центре города слишком редко обновляется и не успевает оперативно отслеживать изменения, поэтому мы использовали данные с метеостанции в аэропорту и могли ошибаться с текущей температурой и другими погодными параметрами.
Раз уж вариант показа измерений напрямую с метеостанций нам не подошёл, мы решили изменить свой подход. Выделили отдельную ML-модель, которая будет сконцентрирована именно на прогнозе на «сейчас», и добавили в наш стандартный вектор фичей актуальные измерения с метеостанций. Эксперимент основывался на том, что модель сама сможет выучить, когда стоит выдать прогноз ближе к результату измерения на станции, а когда больше полагаться на расчёты численных моделей. Мы пробовали развивать такой подход, добавив фичи расстояния до станции по пространству и времени, ввели корректировку температуры, если высота метеостанции отличалась от высоты точки прогноза. Но последующие замеры метрик показали, что добавление данных со станций в таком виде не даёт никакого статистически значимого преимущества, и мы отказались от такого подхода.
Параллельно мы занимались улучшением качества нашей базовой CatBoost-модели, которая прогнозирует температуру и на текущий момент, и на первые 72 часа. В конце концов, за счёт использования комбинации нескольких CatBoost-ов, тщательного подбора фичей и гиперпараметров, нам удалось достаточно хорошо улучшить качество прогноза температуры. Такая модель долгое время использовалась для расчёта «погоды за окном».
К сожалению, численные модели прогноза погоды иногда ошибаются. Наша ML-модель использует ансамбль поставщиков и различную дополнительную информацию, но тоже не защищена от ошибок. А значит, нужно научиться использовать самые свежие показания с метеостанций чтобы скорректировать актуальный прогноз.
Технология OmniCast
Основная проблема использования измерений с метеостанций для «погоды за окном сейчас» была в том, что мы применяли интерполяцию методом ближайшего соседа. Проще говоря, измерения с метеостанции мы распространяли на все ячейки сетки 2×2 км, покрывающей интересующий нас город. Нам нужен другой алгоритм пространственной интерполяции, который бы учитывал:
прогноз нашей ML-модели в каждой ячейке сетки;
рельеф местности;
затухание влияния станции в зависимости от расстояния;
умел учитывать одновременно несколько станций, которые стоят близко друг к другу.
Используемая нами технология интерполяции основывается на фильтре Калмана. Чтобы было проще объяснить саму идею алгоритма, давайте начнём с одномерного случая. Допустим, у нас есть динамическая модель системы . Если мы знаем состояние системы на момент времени , то динамическая модель сможет сделать прогноз того, как система будет выглядеть в момент времени .
Так как модель может ошибаться, добавим в уравнение некоторую случайную величину , характеризующую ошибку модели. В итоге получим .
С другой стороны, у нас есть возможность измерить состояние системы в момент времени с некоторой погрешностью . В итоге уравнение измерения системы выглядит так:
Задача фильтра Калмана состоит в том, чтобы используя одновременно и смоделированное состояние системы в момент времени и измерения этого состояния в момент определить хорошее приближение для истинного состояния, учитывая ошибки модели и измерений.
Теперь зададим вес K, который определяет, чему мы больше доверяем — модели или измерениям. Тогда уравнение для нахождения оптимального значения состояния системы в момент будет выглядеть так:
Коэффициент К называется усилением Калмана, можно вывести итерационную формулу для его вычисления или подобрать подходящее константное значение.
Теперь немного усложним задачу. Выше рассматривалась одномерная задача, но на самом деле мы имеем дело с многомерными данными. Возьмём регулярную сетку определённой размерности, покрывающую земной шар. Причём нужно ещё учитывать рельеф земной поверхности, потому что высота влияет на температуру.
Наша ML-модель умеет в каждой ячейке сетки вычислять прогноз температуры. Сложим все ячейки сетки в один большой вектор размерности = {количество широт * количество долгот}. Обозначим этот вектор как , где означает, что этот вектор представляет собой background (состояние системы).
С другой стороны, у нас есть измерения температуры с метеостанций и метеодатчиков, сложим их в вектор размерности и обозначим как . И раз у векторов разная размерность, нам нужно уметь делать отображение вектора состояния в вектор измерений. То есть нам нужно понять, к какой ячейке сетки относится та или иная метеостанция.
Обозначим такое отображение как . Оно вычисляется с использованием метода интерполяции ближайшим соседом с учётом разницы высоты точки метеостанции и центра ячейки.
Усиление Калмана в данном многомерном случае — это матрица (так называемая Kalman gain matrix) размерности ( — количество ячеек сетки, — количество измерений с метеостанций). При расчёте усиления Калмана учитывается не только сама разница между модельным и измеряемым значением, но и ошибки как модели, так и измерений. Причём вес источника измерений зависит от надёжности: профессиональной метеостанции мы доверяем больше, чем персональным метеодатчикам. Поправка из точки метеостанции распространяется по пространству по определённому закону.
В нашем случае это функция Гаусса, которая задаёт степень корреляции между ячейками сетки. Параметрами функции мы можем регулировать скорость убывания в зависимости от расстояний по горизонтали и вертикали.
Таким образом, наша задача сводится к следующему. Мы знаем состояние системы, хранящееся в векторе и нам нужно скорректировать это состояния с учётом измерений, хранящихся в векторе . Формула для нахождения оптимального значения состояния системы для многомерного случая выглядит так:
где — Kalman gain matrix, а — отображение вектора состояния в вектор измерений.
Стоит упомянуть, что оригинальный алгоритм Калмана состоит из двух повторяющихся фаз:
Прогноза, который делается динамической моделью системы.
Корректировки прогноза за счёт измерений.
Следующая итерация алгоритма учитывает те значения, что были рассчитаны на предыдущем шаге. В нашей технологии Omnicast используется только часть алгоритма Калмана. Мы делаем только корректировку состояния системы за счёт измерений, причём не итеративно. То есть каждый момент времени рассчитывается независимо от предыдущих. В таком виде алгоритм часто используется в ассимиляции данных и носит название оптимальная интерполяция.
Метод оптимальной интерполяции основывается на гипотезе, что данные со станций репрезентативны для некоторого ограниченного пространства вокруг (так называемая локализация). В нашем случае это означает, что для каждой ячейки сетки мы используем данные только с нескольких ближайших метеостанций и метеодатчиков в заданном радиусе. Такое допущение позволяет значительно сократить время расчётов, потому что при вычислении усиления Калмана нужно в том числе делать обращение матриц, на что требуются большие вычислительные мощности.
Нам нужно, чтобы измерения с метеостанций и метеодатчиков как можно скорее вносили корректировку в значения температуры, которую мы показываем пользователям. При резком изменении температуры измерения со станции быстро теряют актуальность.
Чтобы обеспечить оптимальную скорость, мы используем распределенные вычисления. Регулярную сетку, покрывающую земной шар, мы делим на части. Каждая часть обрабатывается отдельно Map-операцией, где усваиваются отфильтрованные и обработанные данные с метеостанций и метеодатчиков, а также корректируется значение температуры в каждой ячейке сетки. Затем все части обратно склеиваются в большую сетку Reduce операцией. В среднем каждые 5 минут MapReduce-операция обрабатывает более 100 000 новых измерений с датчиков температуры.
Если мы возьмём данные с метеостанций и метеодатчиков и скорректируем температуру, мы поправим только текущее состояние. В случаях, когда прогноз температуры, рассчитанный нашей ML-моделью на ближайшие несколько часов, заметно отличается от измерения на станции, в таймлайне прогноза появится резкий скачок.
Чтобы избежать таких проблем, нужно продлить влияние измерения со станции в будущее. Для этого мы разработали модель, которая принимает на вход историю измерений температуры с метеостанции и экстраполирует на ближайшие 3 часа.
Когда речь заходит об экстраполяции временного ряда, первыми на ум приходят методы семейства ARIMA (autoregressive integrated moving average). С неё мы и начали экспериментировать. В итоге удалось подобрать параметры модели, при которых ошибка экстраполированной температуры RMSE получалась в районе 1,5 градуса.
Качество экстраполяции нас устраивало, но у такого подхода есть один большой недостаток. Параметры модели ARIMA стоит рассчитывать отдельно для каждой станции. Мы используем измерения примерно с 16 000 профессиональных метеостанций, а если сюда добавить ещё и остальные метеодатчики, получается очень много отдельных моделей. Таким образом решение с моделью ARIMA получается немасштабируемым.
Чтобы сделать одну модель под все станции, мы перешли от классических методов к нейронным сетям. В качестве бейзлайна мы взяли LSTM, как популярный вариант обработки временных рядов. В процессе экспериментов усложняли архитектуру и в итоге пока остановились на комбинации biLSTM и однонаправленной LSTM.
Использование двунаправленной LSTM даёт преимущество за счёт того, что входная последовательность просматривается с начала до конца и с конца до начала. Тем самым нейронная сеть получает более репрезентативное представление входной последовательности.
На данный момент наша модель экстраполирует температуры на 3 часа вперёд и выигрывает по качеству у модели ARIMA. Мы тем временем экспериментируем с другими подходами, чтобы расширить выходную последовательность на сутки вперёд.
Заключение
В этой статье мы рассказали о проблеме перепада температур между разными районами города, из-за чего любой сервис метеопрогнозирования может существенно ошибаться в своих прогнозах. Мы показали, как учимся преодолевать эту проблему с помощью новой технологии OmniCast и расширенного числа источников метеоданных, и планируем использовать такой подход для других погодных параметров.
Тем не менее, прогнозировать погоду сложно, поэтому мы будем рады любой помощи. Если у вас есть любительская метеостанция, то подключить её к нашему сервису можно по API. Так вы сможете повысить качество прогноза Яндекс Погоды не только для себя, но и для тысяч ваших соседей по району.
Комментарии (39)
zabanen2
22.08.2024 08:32+2качество статьи настолько высокое, что можно и в журнал публиковаться.
поправьте если я неправ: вы пытаетесь сгладить функцию по датчикам так, чтобы определить температуру + нейронка с историей для определения температуры в на некоторое время вперед. все будет работать хорошо, пока не появятся какие-то глобальные сдвиги? грубо говоря, сможете ли вы потом рассчитывать климат на месяцы, годы вперед? в этом году весной ударил мороз, убив много урожая. возможно потери можно было бы сгладить, если бы можно было бы верить вашим прогнозам. допустим, смски мчса уже никто не читает. для примера, недавно вышла статья, что к 2050-му году климат изменится и будет совсем плохо. если это так, то уже не огородникам, а целым странам нужно готовиться заранее.
и личный вопрос: прыгнули ли вы выше российских академических сред? хоть у них и существуют школы, но вряд ли они имеют такие мощности и математиков (и зарплаты хехе)
lanium Автор
22.08.2024 08:32+2Конечно мы занимаемся и разрабатываем технологии и более долгосрочного прогноза, в которых заинтересован в первую очередь бизнес.
Что касается академических сред, то у нас нет цели соперничать, а скорее налаживать взаимовыгодное сотрудничество
zuek
22.08.2024 08:32в этом году весной ударил мороз, убив много урожая. возможно потери можно было бы сгладить, если бы можно было бы верить вашим прогнозам.
Ну, справедливости ради, мои урожаи в этом году почти не пострадали - и в майские и в июньские заморозки я поверил прогнозу погоды (пользуюсь данными от rp5, они на отрезке в пару дней, по моим наблюдениям, практически не ошибаются - интересно - какой моделью пользуются?) и предпринял превентивные меры, так что пользу прогнозы приносят.
san_russia
22.08.2024 08:32+1Когда решите вопрос с неправильным местоположением в приложении? Приложение показывает местоположение места там, где я был 20-30 минут назад. Особенно в дороге это заметно. И эта проблема на разных телефонах, что на андроид, что на ios.
lanium Автор
22.08.2024 08:32+2А подскажите, пожалуйста, где территориально обычно у вас происходит эта проблема? В целом, в случае возникновения проблем с определением геолокации, вы можете отправить нам информацию через кнопку "Написать разработчикам" в настройках приложения
JediPhilosopher
22.08.2024 08:32У меня часто бывает такая фигня. Если выключить GPS то погода начинает улетать. Причем улетать очень капитально - в локацию где я вроде бы был, но давно (дни или недели назад). То в Москве начинает погоду показывать (я из СПб), то еще где-то. То есть там точно не срабатывает логика "показывать погоду последнего места где она была доступна".
И кстати тот баг, что я вам уже когда-то репортил, у вас похоже опять появился. В Питере в дни зимнего солнцестояния, когда закат и рассвет умещаются на одном экране, приложение отображает только одно из них. В прошлом году точно был, в этом надо будет снова проверить.
Я думал, баг связан с тем, что вы не подумали о кейсе когда они попадают вместе в один экран (между восходом и заходом всего часов 5-6), что случается где-то вот от широты Питера и севернее. Но для Карелии, где оно еще короче, внезапно все работало, а в Питере глючило вот.
lanium Автор
22.08.2024 08:32+1Спасибо за фидбэк, если сможете сообщить платформу и версию приложения - это очень поможет решению проблемы
JediPhilosopher
22.08.2024 08:32+3Я так и не понял, личные метеодатчики кто угодно может ставить? Если да, то это какой-то очень сильный тык пальцем в небо. Кажется, никто это не использует в мире, потому что точность у этих датчиков просто ужасная.
Во-первых, сами датчики часто говняные и с огромной погрешностью. Для бытового использования плюс-минус градус-другой не важно, для предсказания погоды - уже плохо.
Во-вторы, даже идеальный датчик нужно правильно разместить. Повесив термометр за окно на солнце, в летний день вы за счет солнечного нагрева получите +5 и более градусов. А вам же надо измерить температуру воздуха, а не солнечный нагрев. Повесить в тени? Можно, но если неправильно выбрать место, то под вашим градусником может оказаться солнечное пятно асфальта, который будет нагревать и генерировать локальный восходящий теплый поток, что опять даст погрешность. В общем, даже правильно повесить градусник, чтобы измерить температуру воздуха (а не прилегающей поверхности или стены) это уже нетривиально. На метеостанциях для этого используют специальные будки, походие на ульи, которые защищают от прямого солнечного нагрева, обеспечивают хорошую вентиляцию и изолируют от нагрева со стороны земли.
Что там с ветром я вообще молчу, как парапланерист я знаю, как сильно локальные особенности влияют на воздушные потоки. Эффекты Вентури, ротора за препятствиями и турбулентность вам вообще не дадут нормально ветер в городской застройке померять
Поэтому к этой идее со скептицизмом отношусь.
У нас питерские метеорологи пару лет назад меряли сбываемость прогнозов разных моделей, у них выходило что Яндекс на последнем месте. То есть громкие слова про ИИ - на самом деле не работают. Ну точнее так, все эти постобработки нейросетями и так все используют, нового принципиально в этом ничего нет.
https://vk.com/@pogoda812-sravnenie-tochnosti-prognozov-v-2020-godu
lanium Автор
22.08.2024 08:32Личные метеодатчики действительно может ставить кто угодно. В нашем случае проблема качества данных решается при помощи предварительной фильтрации и использования большого кол-ва источников, за счет чего можно извлекать полезный сигнал из шумных данных
freeExec
22.08.2024 08:32+1Не уж-то яндекс не может раздать эти датчики всем желающим для размещения в нужных местах?
JediPhilosopher
22.08.2024 08:32+1Я выше указал, что раздать датчики это еще полдела, правильно разместить датчик, чтобы он правильно измерял то что надо - это тоже непросто. Так что наверное смысла нет заморачиваться, данные все равно будут шумные и ненадежные
freeExec
22.08.2024 08:32+1Вся статья посвящена тому, что вау, мы подключили 100500 "шумных и не надёжных" датчиков и всё стало бодрее.
iShrimp
22.08.2024 08:32+1Совершенно правильное и логичное направление развития!
Для ещё более точных прогнозов, мне кажется, было бы полезно добавить ещё 2 источника информации:
Народный мониторинг, narodmon.ru - удобный и доступный агрегатор данных с пользовательских метеостанций;
Камеры наблюдения и домофоны, на которых видно небо. Эти данные гораздо труднее получить (технически и юридически), но зато они дадут самую точную информацию о погоде и облачности в реальном времени.
iShrimp
22.08.2024 08:32У многих людей есть контроллеры умного дома, теплицы и т.д. с уличным датчиком температуры, принимает ли ваша система показания с таких датчиков? Понятно, что они ещё менее информативны, чем любительские метеостанции. Но при достаточной заинтересованности пользователей они могут дать плотное покрытие, не только в городах, но и в дачных и коттеджных посёлках.
P.s. у вас в API требуется передавать время измерения в Unix-формате. Можно адаптировать API для МК, не имеющих RTC? В идеале, хорошо бы, если бы была библиотека для Arduino IDE, реализующая все функции передачи данных (а взамен дающая доступ к прогнозу погоды от Яндекса).
xaosxaos2
22.08.2024 08:32+2Я.погода это так смешно - за этот год весна, лето. Совпадает прогноз только когда ничего не происходит стабильно в течении длительного времени. А если изменения ни разу ни попали, пишут в течении недели будут грозы чуть ли не потоп, ни капли дождя ну упало :) Показывают ближайшие два часа осадков не будет, смотришь а там поливает так что соседнего дома не видно :)
P.S. О а сколько туда впихнули рекламы, что если раньше грузилось пару секунд, сейчас надо полминуты обождать.
Keroro
22.08.2024 08:32Часто нарывался на такую проблему этим летом: допустим, яндекс-погода говорит что все выходные день будет дождь. Я: решаю сидеть дома, раз такое дело. В итоге, покапало 1 раз, остальное время погода была вполне приятная. Или наоборот: рисует, что будет дождь. Я, помня предыдущий кейс, иду гулять, не взяв даже зонтик. В итоге ливень с градом, буря столетия, все плавает. При том что я живу не так далеко от аэропорта, и там по любому есть какие-нибудь метео-радары. Неужели для современных айти технологий такая проблема предсказать, что если грозовая туча идет на город со скоростью 10 километров в час, и ветер дует в такую-то сторону, то в такое-то время она окажется прямо у меня над головой? Неужели такая проблема на ближайшие 12 часов хотя бы это предсказать?
TimurRyabinin
22.08.2024 08:32Здравствуйте! Я из Яндекса. Понимаю, хочется заранее знать погоду наверняка, ведь неожиданные её перемены могут вмешаться в планы на день.
Увы, предсказать погоду на 100% невозможно — физика атмосферных процессов не поддаётся точным просчётам. Мы стремимся к максимально верным показателям и для этого комбинируем разные источники информации и прогнозы в технологии Метеум 2.0: https://yandex.ru/pogoda/meteumОднако в любой модели есть небольшие погрешности. Вы также можете помочь нам улучшить технологию:
— отмечайте ответы в опросах на карте осадков: https://ya.cc/t/sZHIAkc75Cb3Gm
— нажимайте кнопку «За окном другая погода? Сообщить» в приложении
— сообщайте об ошибках в прогнозе через специальную форму: https://ya.cc/t/7DucfVAo5Cb3QP.
Так наша команда сразу получит все нужные данные и сможет скорректировать показатели, чтобы прогнозы становились точнее.
Aeternamens
22.08.2024 08:32+1Показать прогноз за окном сейчас может домашний термометр и банально выглянуть за окно. Смысл прогноза в том, чтобы он сбывался хотя бы за несколько дней. А не как сейчас.
tedvlee
22.08.2024 08:32Самый неактуальный прогноз по моему району - от Яндекса. У них - дождь у меня идет, у меня - + 30 и прячешься от солнца.
FBykov
22.08.2024 08:32В одной статье про фильтр Калмана и LSTM. Если вспомнить формулы LSTM, то можно прийти к интересному наблюдению: LSTM - обобщение фильтра Калмана
Интересно, уточняли ли и если да, то как координаты метеостанций ? Большинство этих координат в словарях ВМО не уточнялись лет так 50 и все еще округлены до угловых минут - чуть меньше 2 км. Если вы даёте на выходе 500 м, то эти погрешности весьма существенны
Javian
22.08.2024 08:32+1Точные прогнозы только со спутника. Запускаю ventusky и вижу где циклон, антициклон. Как и куда дует ветер. И получаю достоверный прогноз на две недели.
vikarti
22.08.2024 08:32+1А не планируется фиксить баг:
яндекспогода с рустора 24.7.21
Pixel 6a с GrapheneOS (потому что секурность и прочее, установка по штатной процедуре - с блокировкой загрузчика и прочего), Play Store/Play Services и все что ему надо - тоже установлено и все запрошенные доступы(включая постоянную геолокацию для Погоды и для Play Services) - выданы
по мнению погоды - я в Москве. Руками локацию выбрать можно но зачем просить доступ к геолокации если он реально не работает
-
допустим 2GIS видит реальную локацию(~3k километров на восток). Яндекс.Go тоже находит реальную локацию
den-electric
22.08.2024 08:32+2Как я понял из статьи, вы используете прямоугольные сетки. Почему бы не попробовать разбиение на шестиугольники? Это снизит краевые эффекты, фильтр Калмана будет более естественно ложиться на сетку, увеличит количество смежных клеток, границы атмосферных явлений получатся более плавными.
Kill_Voice
Какой профит запускающему у себя такую станцию?
lanium Автор
Это возможность повысить качество прогноза и для себя, и для соседей по району
Kill_Voice
То есть просто бесплатно увеличить доход Яндекса от продажи доступа к API?) Звучит как план
KorDen32
И увеличить доход от рекламы в мобильном приложении, которой сейчас напихано просто прорва - чего стоит один бесконечный рекламный скролл на главной.
Это уже давно приложение рекламы с мелкими вкраплениями погоды, а не наоборот
Kill_Voice
Там жадность уже давно не знает границ. Ранее можно было для своих pet проектов или умного дома, получить тестовый токен к API погоды до 10000 тысяч запросов в месяц, а теперь это стоит от 54 000 рублей
lanium Автор
Если вы хотите поделиться данными любительской метеостанции - ключ доступа к API нужен только для того, чтобы идентифицировать вас как пользователя. Можно бесплатно пользоваться API Пользовательских станций по Триальному ключу доступа, не привязывая платёжные реквизиты.
Касаемо доступа к API в целом - спасибо за фидбэк, обсудим с коллегами как можно сделать API более доступным для физических лиц
gudvinr
Так может вы не только брать будете, но и сами что-то взамен дадите?
Если вам пользователи данные отдают бесплатно, дайте и вы бесплатный доступ к API тем, кто ва данные предоставляет.
lgorSL
Для пет проекта использую open weather map и ещё какой-то сервис (не помню названия, если интересно могу потом написать), оба сервиса бесплатно дают погоду по всему миру и лимиты у них порядка тысяч запросов в день, чего мне за глаза хватает. Кроме температуры дают информацию о пыли pm2.5, ветре, влажности и прочем.
Возможно данные у них не супер точные, но зато минимум головной боли с их получением.
У Яндекс погоды был шанс, но я почитал условия и даже не стал пробовать.
Kill_Voice
Да это понятно дело что можно и тот же Гисметео использовать. У Яндекса действительно интересный алгоритм, особенно с параметром «по ощущениям», но условия использования сразу перечеркивают все плюсы
gudvinr
С версии 3.0 требуют подключить карту (и обещают не списывать деньги до лимитов, честно-честно).
vagonovozhaty
Пользуйтесь секретной версией для стран первого мира, где нет ни рекламы, ни даже русского языка