Weather App — это веб-приложение для анализа погоды в нескольких городах, отображаемое на интерактивной карте. Пользователи могут вводить названия городов и получать текущую погоду для выбранных локаций. Кроме того, приложение позволяет добавлять дополнительные точки маршрута, автоматически выводя информацию о погоде для каждой точки. Визуализация погоды включает карты с маркерами и подробные прогнозы по критериям: температура, влажность, скорость ветра и вероятность осадков.
- Поиск погоды в нескольких городах: Пользователь вводит названия городов, и приложение находит их координаты с помощью геокодера.
- Получение данных о текущей погоде: Используется API для получения актуальной информации о погоде для каждого города.
- Анализ погоды: Приложение анализирует параметры погоды (температура, влажность, скорость ветра, вероятность осадков) и выдает рекомендацию (например, "Хорошая погода" или "Плохая погода").
- Отображение данных на интерактивной карте: Погода для каждого города показывается на карте с маркерами и краткой информацией.
- Добавление промежуточных точек: Пользователи могут добавлять дополнительные города, и их погода будет отображаться на той же карте.
Скачайте проект на локальную машину:
git clone https://github.com/affame/suprojectpy.gitУбедитесь, что у вас установлен Python 3.8 или выше, затем установите все необходимые библиотеки:
pip install -r requirements.txtДля работы с географическим API Яндекса (получение координат городов) необходимо получить API токен. Для этого:
Перейдите в Яндекс.Карты API и получите API токен. Вставьте полученный токен в переменную YANDEX_API_KEY в файле services/yandex_geo.py:
YANDEX_API_KEY = 'ваш_токен_яндекса'Запустите приложение командой:
python app.pyПосле этого приложение будет доступно по адресу: http://127.0.0.1:5000/ в вашем браузере.
- Перейдите на главную страницу приложения.
- Введите названия двух городов в соответствующие поля.
- Нажмите кнопку "Получить прогноз".
- Приложение отобразит результаты по погоде для выбранных городов, включая карту с маркерами.
- Добавьте дополнительные города, чтобы увидеть погоду для промежуточных точек маршрута.
На главной странице пользователь может ввести начальный и конечный города маршрута, а также промежуточные города. После отправки формы происходит следующее:
- Получение координат: Приложение использует API Яндекса для получения координат (широта и долгота) каждого города.
- Загрузка прогноза погоды: Для каждого города приложение делает запрос к API погоды (Open-Meteo) для получения прогноза на заданное количество дней (по умолчанию 3 дня).
После отправки формы пользователь перенаправляется на страницу с картой маршрута. Маршрут между городами отображается на карте с помощью библиотеки Dash и Leaflet. Пользователь может:
- Кликать на маркеры: Для каждого города на карте размещен маркер, при клике на который появляется информация о погоде для этого города.
- Графики прогноза погоды: Для каждого города доступен график, который можно настроить для отображения температуры, скорости ветра или осадков.
Для выбранного города и выбранной метрики (температура, скорость ветра или осадки) строится график, отображающий данные за указанный период (по умолчанию 3 дня). График строится с помощью библиотеки Plotly и включает:
- Ось X: даты прогноза.
- Ось Y: значения выбранной метрики (например, температура или скорость ветра).
Если при обработке данных возникла ошибка (например, если введен некорректный город), будет отображена страница с ошибкой с сообщением типа:
Этот бот помогает пользователю узнать прогноз погоды для маршрута, включая начальный, конечный и промежуточные города. Бот использует API для получения координат городов и прогнозов погоды. Для его установки требуется проделать те же шаги, что указаны сверху, но в дополнение необходимо получить Telegram Bot API token.
- При запуске бота с командой
/start, он приветствует пользователя и объясняет, как использовать функционал. - Пользователь может получить прогноз погоды для маршрута, введя начальный и конечный город, а также промежуточные города (если они есть).
- Бот покажет пользователю прогноз погоды для каждого города на выбранный период (1, 3, 5 или 7 дней).
- Бот использует Yandex Geocoder API для получения координат городов и Open Meteo API для получения прогноза погоды.
Для работы бота вам понадобятся два токена:
-
Telegram Bot API Token: Чтобы создать бота и получить его токен:
- Перейдите в BotFather в Telegram.
- Создайте нового бота, следуя инструкциям. После создания вы получите уникальный токен для вашего бота.
-
Yandex Geocoder API Key: Для получения координат городов через Яндекс API:
- Перейдите в Yandex API и создайте новый ключ API для сервиса геокодирования.
BOT_TOKEN = "your_telegram_bot_token_here"
YANDEX_API_KEY = "your_yandex_geocoder_api_key_here"Замените your_telegram_bot_token_here и your_yandex_geocoder_api_key_here на соответствующие значения.
После того как вы настроили все переменные, вы можете запустить бота с помощью следующей команды:
python bot.pyБот будет работать в режиме polling и будет готов принимать команды от пользователей.
/start— Приветственное сообщение и описание функционала бота./help— Справка по командам./weather— Запуск процесса прогнозирования погоды для маршрута. Пользователь вводит начальный город, конечный и промежуточные города, и бот предоставляет прогноз погоды.
После запуска команды /weather бот попросит ввести:
- Начальный город.
- Конечный город.
- Промежуточные города через запятую (если есть, если нет — введите "нет").
- Выберите период прогноза (1, 3, 5 или 7 дней).
Бот вернет прогноз погоды для каждого города на выбранный период.
- Если бот не может найти координаты города, он сообщит об этом пользователю.
- Если данные API недоступны или некорректны, бот также информирует об ошибке.
/weather-app
│
├── app.py # Основной файл приложения, обработка запросов
├── bot/
│ ├── __init__.py # Пустой файл для инициализации пакета
│ ├── bot.py # Бот прогноза погоды для черного проекта
├── services/
│ ├── __init__.py # Пустой файл для инициализации пакета
│ ├── model.py # Функции для анализа погоды
│ ├── weather.py # Функции для получения данных о погоде
│ └── yandex_geo.py # Файл для работы с геокодированием (получение координат по городам)
├── templates/
│ ├── error.html # Страница ошибки
│ ├── index.html # Главная страница (форма ввода)
│ └── result.html # Страница с результатами
├── requirements.txt # Файл с зависимостями
├── answers.txt # Файл с ответами на вопросы
└── README.md # Этот файл
- Flask: Для создания веб-приложения.
- geopy: Для геокодирования (получение координат по названиям городов).
- requests: Для отправки HTTP-запросов к API.
- folium: Для отображения интерактивной карты с маркерами.
Проект предоставляет простое и удобное средство для анализа погоды в различных городах, с возможностью добавления нескольких точек маршрута и отображения погоды на карте. Наслаждайтесь использованием!