Желание понимать и предсказывать погоду было у людей с древних времен. Они замечали сотни знаков, пытались угадать, будет ли завтра дождь или снег, и все равно в большинстве случаев ошибались. Сегодня каждый может стать безошибочным оракулом. Более того, с помощью простого OpenWeatherMap API через RapidAPI вы можете наделить свои приложения почти сверхъестественной способностью точно предсказывать завтрашнюю погоду. Такая возможность полезна во многих отраслях, независимо от того, разрабатываете ли вы приложение для путешествий, систему управления событиями или внедряете управление инфраструктурой умного города.

Чтобы найти раздел API OpenWeatherMap, введите его название в поле поиска на сервисе RapidAPI или перейдите в категорию «Погода» из списка «Все категории» и выберите этот API из списка. Базовый API OpenWeatherMap через RapidAPI является бесплатным, поэтому вы можете использовать его свободно, но не более 60 вызовов в минуту.

Конечные точки OpenWeatherMap

Все разделы API в RapidAPI имеют такие подразделы, как Endpoints, API Details и Discussions. Основная информация о том, как использовать API, размещена в подразделе Endpoints. Если вам нужны дополнительные сведения, вы можете найти их в подразделе «Сведения об API». Кроме того, вы можете спросить поддержку или сообщество о чем-то, связанном с API, в подразделе «Обсуждения».

Функциональность API представлена ​​в подразделе Endpoints раздела API OpenWeatherMap. Окно разделено на три основные области. Первая область слева отображает список доступных конечных точек (задач), каждая задача отображает свой HTTP-метод. Для OpenWeatherMap API представлены следующие задачи:

  • Текущие данные о погоде.Используя такие запросы, вы можете получать данные о погоде в любом месте на Земле. Текущие данные о погоде обновляются онлайн на основе данных с более чем 40 000 метеостанций.
  • Прогноз погоды —вы можете получать прогноз погоды в любом месте на земле. Гибкий алгоритм расчета погоды предоставляет данные о погоде не только для городов, но и для любых географических координат. Это важно, например, для мегаполисов, где на противоположных окраинах города погода разная. Вы можете получать данные прогноза каждые 3 часа. Прогноз на 3 часа доступен в течение 5 дней. Все данные о погоде можно получить в форматах JSON или XML.
  • Поиск данных о погоде. Вы можете искать данные по названию города. Введите название города или его часть и получите список самых правильных городов мира. Пример — Лон, или Лондон, или Лондон. Чем точнее вы укажете название города, тем точнее будет список. Чтобы сделать его еще более точным, введите название города или его часть, затем поставьте запятую и напишите название округа или двухбуквенный код страны. Вы получите все нужные города в выбранной стране. Например — Лон, Великобритания или Лон, Великобритания или Лондон, Великобритания или Лон, Англия.

Для каждой конечной точки вы можете заполнить необходимые параметры во второй области окна подраздела Конечные точки и сразу протестировать ее, нажав кнопку «Проверить данные конечной точки». Ответ для текущей конечной точки будет отображаться в третьей области справа.

Левая и средняя области окна для конечной точки текущих данных о погоде показаны на изображении ниже.

А вот правая часть окна, показывающая пример ответа JSON:

Отдельно стоит упомянуть блок Request Snippet. Вы можете выбрать предпочитаемый язык программирования и сразу же получить код, реализующий задачу, которую вы только что протестировали. API OpenWeatherMap теперь доступен через RapidAPI для таких языков программирования, как:

Например, вот фрагмент NodeJS для получения текущей погоды через OpenWeatherMap API (Weather API Javascript):

unirest.get("https://community-open-weather-map.p.rapidapi.com/weather?callback=test&id=2172797&units=%22metric%22+or+%22imperial%22&mode=xml%2C+html&q=London%2Cuk") .header("X-RapidAPI-Host", "community-open-weather-map.p.rapidapi.com") .header("X-RapidAPI-Key", "4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") .end(function (result) { console.log(result.status, result.headers, result.body); });

Read more at: https://blog.rapidapi.com/weather-api-python/

Фрагмент Python для прогнозирования погоды через OpenWeatherMap API:

response = unirest.get("https://community-open-weather-map.p.rapidapi.com/forecast?q=london%2Cuk", headers={ "X-RapidAPI-Host": "community-open-weather-map.p.rapidapi.com", "X-RapidAPI-Key": "4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" } )

Read more at: https://blog.rapidapi.com/weather-api-python/

Фрагмент C# для поиска данных о погоде через OpenWeatherMap API:

Task> response = Unirest.get("https://community-open-weather-map.p.rapidapi.com/find?type=link%2C+accurate&units=imperial%2C+metric&q=london") .header("X-RapidAPI-Host", "community-open-weather-map.p.rapidapi.com") .header("X-RapidAPI-Key", "4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") .asJson();

Read more at: https://blog.rapidapi.com/weather-api-python/

Одна важная вещь, на которой мы хотим обратить ваше внимание, — это раздел «Параметры заголовка»:

Параметры X-RapidAPI-Host и X-RapidAPI-Key используются для идентификации и выставления счетов. Вы должны включать эти параметры во все запросы, созданные из любой среды. При просмотре конечных точек в браузере вы можете изменить проект RapidAPI, чтобы изменить ключ. Проекты (приложения) создаются на странице панели управления RapidAPI (вкладка «Добавить новое приложение»):

Панель RapidAPI Dashboard предоставляет дополнительные полезные функции. Вы можете отслеживать все вызовы API через RapidAPI в одном месте, анализировать ошибки и платежную информацию.

Как получить ключ API OpenWeatherMap?

Это просто. При регистрации бесплатной учетной записи пользователя RapidAPI вы получите единый ключ API для всех API на платформе, включая API OpenWeatherMap. Нажмите Подключиться к API, чтобы начать!

Как создать приложение погоды на Python

В этом кратком руководстве мы покажем вам, как создать приложение для оценки погодных условий по пунктам назначения (на примере OpenWeatherMap API).

Приложение для оценки лучших туристических направлений (по погодным условиям)

Чтобы продемонстрировать возможности OpenWeatherMap API, мы напишем небольшое приложение на Python, которое поможет нам выбрать лучший город для следующей поездки. На входе она получит список из нескольких городов, а на выходе покажет рейтинг лучших городов для путешествий (оценивая каждый город по количеству прогнозируемых безоблачных дней в ближайшее время и по будущей средней температуре ).

Шаг 1. Импорт данных о погоде в программу Python

Представьте, что мы выбираем один из трех городов: Лондон, Порту и Париж. Названия городов вместе с кодами стран будут храниться в списке городов.

Также обратите внимание, что мы немного изменили фрагмент Python, который создает службу RapidAPI для доступа к конечной точке. Мы заменили модуль unirest Python на запросы, так как unirest не полностью поддерживается в Python 3.

Поскольку мы прогнозируем погоду для нескольких городов, мы создадим функцию city_forecast, которая будет получать название города и с помощью конечной точки Прогнозировать данные о погоде возвращать словарь с прогнозом погоды для этого города. При вызове конечной точки мы укажем необходимые параметры (в нашем случае это наши учетные данные и параметр 'q', в который мы будем вводить код страны и название города, для которого мы хочу увидеть будущую погоду).

Учетные данные будут храниться в файле credentials.py. Учетные данные RapidAPI можно получить в разделе Мои приложения службы RapidAPI, создав новое приложение или скопировав их из подраздела «Безопасность» одного из уже созданных приложений.

Мы будем держать прогнозы погоды для городов в weather_dict.

Шаг 2. Подготовьте данные для оценки

Прогноз погоды для каждого города на ближайшие пять дней теперь доступен в словаре weather_dict [<city_name>] ['list']. Прогноз разбит на трехчасовые блоки, и в каждом блоке указано время (например, 21:00:00), на которое делается прогноз. Так как нас интересует среднесуточная температура, то нам нужны блоки с заданным временем с 10:00:00 до 19:00:00. Чтобы выбрать прогнозы только для дневного времени, мы используем регулярные выражения.

Мы создадим функцию get_day_weather, которая будет возвращать True, если время прогноза находится между 10:00:00 и 19:00:00. После этого помещаем его в функцию filter, выбираем прогнозы только дневной температуры и сохраняем их в day_weather словаре.

Шаг 3. Оцените лучший город для путешествия

Имея данные о дневных температурах и описание уровня облачности (которое находится по ключу ['weather'] [0] ['description'] в каждом блоке прогноза), мы можем создать функцию travel_estimator. После получения указанных данных эта функция рассчитает среднюю температуру, количество прогнозов безоблачной погоды для каждого города и вернет словарь с этой информацией.

Так как мы хотим как-то ранжировать наши города, мы отсортируем их по количеству прогнозов безоблачной погоды. Критерий сортировки может быть намного сложнее, мы могли бы рассчитать единый агрегированный показатель, учитывающий погоду, среднюю температуру и любые другие параметры, но для наших целей (а так как безоблачная погода для нас важнее всего) сортировка по безоблачности уровня достаточно.

Вывод приложения:

Porto,pt
Clear sky forecasts: 7
Average temperature: 16.74 C 
London,uk 
Clear sky forecasts: 4 
Average temperature: 18.36 C 
Paris,fr 
Clear sky forecasts: 3 
Average temperature: 19.07 C

Приложение готово! Теперь не будем тратить время на муки выбора и быстро узнаем, куда поедем в ближайшем путешествии. Кстати, Порту оказался победителем в нашем рейтинге. Неожиданная победа, ведь мы ставили на Париж.

Вывод

В этой статье мы показали, как быстро и легко встроить API погоды в наши приложения (в частности, Open Weather Map API), а также объяснили, когда это может быть полезно.

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

Дополнительные API погоды

Чтобы просмотреть больше лучших API-интерфейсов погоды, ознакомьтесь с этой записью в блоге, в которой перечислены лучшие бесплатные API-интерфейсы погоды (такие как AccuWeather API, DarkSky Weather API, Yahoo Weather API, NOAA Weather API и т. д.), которые помогут вам начать работу!

Первоначально опубликовано на https://blog.rapidapi.com 3 июня 2019 г.