Перейти к содержимому

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

  • автор:

Прогноз погоды на Python

Нужно сделать именно прогноз погоды, НЕ ТЕКУЩУЮ погоду в определенном месте, как это делает pyowm, а именно прогноз, например, хочу узнать погоду в Минске в 15:00 через 7 дней. На всякий случай прикрепляю код pyowm, где определяется именно текущая погода в определенном месте:

from pyowm import OWM owm = OWM('my API') while True: try: place = input('What city do you want to know the weather in? Enter correct city name: ') monitoring = owm.weather_manager().weather_at_place(place) weather = monitoring.weather status = weather.detailed_status print(f'It is in now.') break except: pass 

Отслеживать

задан 5 сен 2020 в 16:30

Ivan Shevtsov Ivan Shevtsov

21 1 1 серебряный знак 5 5 бронзовых знаков

ну берете и просто вместо метода weather_at_place() используете forecast_at_place , как это указанно в документации к pyowm .

Создание погодного приложения на Python Django

В ходе урока вы создадите полноценное приложение на Python и Django. Программа будет получать информацию про погодные условия в различных городах мира. Все значения будут храниться в базе данных.

Видеоурок

Полезные ссылки:

  1. API для погоды ;
  2. Официальный сайт Django ;
  3. Большой курс по Python ;
  4. Модуль requests .

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

Пишем программу погоды

Итак, давайте напишем консольную программу, которая будет показывать текущую погоду по нашим координатам. Чтоб не по IP-адресу как-то пытаться неточно вычислять местоположение, а именно по текущим реальным GPS-координатам. Чтобы программа показывала температуру за бортом, идёт ли там дождь/снег и время восхода-заката солнца. Для съёмки видео важно понимать, во сколько сегодня восход или закат солнца, чтобы ориентироваться на освещённость за окном.

Итак, в первую очередь, нам надо понять, как получить доступ к текущим координатам, есть ли такая возможность. Решение будет для MacBook, гуглим: python mac get gps coordinates . Первая ссылка говорит о программе whereami, которая печатает текущие координаты в консоль

whereami 

Отлично, теперь мы можем получать наши текущие координаты, отправить их в какой-то сервис погоды через API, получить оттуда погоду и отобразить её.

Команда работает по аналогии с whoami — та показывает, «кто я», а вот команда whereami показывает, «где я»:).

Давайте найдём какой-то сервис погоды. Поисковый запрос API прогноз погоды привёл меня на проект OpenWeather. У них есть бесплатный доступ. Еще есть Яндекс погода в России, Gismeteo, но там, насколько я понял, для получения API-ключа надо куда-то писать на почту, для наших целей это слишком долго. Воспользуемся OpenWeather.

Запрос на получение погоды по примерно моим координатам:

http https://api.openweathermap.org/data/2.5/weather\?lat\=55.7\&lon\=37.5\&appid\=7549b3ff11a7b2f3cd25b56d21c83c6a\&lang\=ru\&units\=metric 

httpie — это удобная утилита работы с веб-сервисами, такая вариация на тему curl , можно установить на Mac OS с помощью brew командой brew install httpie . Она выводит в раскрашенном виде JSON, например, что удобно.

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

< "base": "stations", "clouds": < "all": 61 >, "cod": 200, "coord": < "lat": 55.7, "lon": 37.5 >, "dt": 1651521003, "id": 529334, "main": < "feels_like": 9.26, "grnd_level": 993, "humidity": 74, "pressure": 1013, "sea_level": 1013, "temp": 10.25, "temp_max": 12.01, "temp_min": 8.55 >, "name": "Moscow", "sys": < "country": "RU", "id": 47754, "sunrise": 1651455877, "sunset": 1651511306, "type": 2 >, "timezone": 10800, "visibility": 10000, "weather": [ < "description": "облачно с прояснениями", "icon": "04n", "id": 803, "main": "Clouds" > ], "wind": < "deg": 180, "gust": 8.08, "speed": 2.69 >> 

Так, отлично, мы умеем находить текущие координаты и умеем по ним получать температуру, состояние погоды — дождь/снег/облака, а также получать время восхода и заката солнца.

Давайте напишем программу для этого! Чтобы запускаешь её и она писала наше местоположение и выводила эти данные — температуру, характеристику погоды (снег/облака/туман) и время восхода заката солнца.

DNDK / weather.py

Clone via HTTPS Clone with Git or checkout with SVN using the repository’s web address.

Learn more about clone URLs

Один из моих первых скриптов на python для получения прогноза погоды моего родного города

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

import requests
import time
rus =
»
>
par =
«lang» : «ru» ,
«lat» : 53 ,
«lon» : 30 ,
«appid» : «84061a2a5ff54b490d63bd38d557b06d» ,
«units» : «metric»
>
print ( «Соединение с сервером. » )
r = requests . get ( ‘http://api.openweathermap.org/data/2.5/weather?’ , params = par )
r_hourly = requests . get ( ‘http://api.openweathermap.org/data/2.5/forecast?’ , params = par )
«»» CURRENT «»»
print ( «——————-Погода сейчас——————-» )
data = r . json ()
print ( ‘***********’ , end = » )
descript = data . get ( «weather» )[ 0 ]. get ( «description» )
print ( descript , end = » )
print ( ‘***********’ )
temp = data . get ( «main» ). get ( «temp» )
#temp = round(1.8*(temp-273)+32)
#temp = round((5/9)*(temp-32))
print ( «Температура(*C)» , temp )
hum = data . get ( «main» ). get ( «humidity» )
print ( «Влажность» , hum , «%» )
wind_speed = data . get ( «wind» ). get ( «speed» )
print ( ‘Скорость ветра’ , wind_speed )
«»»BY HOURS»»»
print ( «——————-На ближайшее время——————-» )
forecast = r_hourly . json (). get ( ‘list’ )[: 5 ]
for i in forecast :
dt = i . get ( ‘dt_txt’ )
print ( dt , ‘:’ )
print ( «Будет <>» . format ( i . get ( «weather» )[ 0 ]. get ( «description» )))
print ( «Подробно:» )
print ( » Температура:» , i . get ( «main» ). get ( «temp» ), «*C» )
print ( » Влажность:» , i . get ( «main» ). get ( «humidity» ), «%» )
press = int ( i . get ( «main» ). get ( «pressure» ))
print ( » Давление(мм.рт.ст):» , press / 133 )
print ( «——————————————————————————» )
print ( «Данные от openweathermap.org» )

Добавить комментарий

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