Рубрики
Без рубрики

Смешивание данных о Авиабилетах с данными о погоде

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

Автор оригинала: Dmitry Vasilev.

Привет, сообщество Codementor!

Когда-то у меня было свободное время в выходные, и я решил сделать для себя какой-нибудь питомец-проект/микро-хакатон. В Москве уже пару месяцев не было солнечной погоды, когда я решил это сделать. Поэтому я решил разобраться!

билеты и погода

Вот как я это сделал:

  • Шаг 1: Я припарковал координаты города из map.aviasales.ru

  • Шаг 2: Я обогатил его данными о погоде, взятыми из openweathermap.org .

  • Шаг 3: Я нарисовал его на Google maps в виде тепловой карты! Выглядит красиво…но это не очень полезно – на распределение цвета повлияла близость точек, а не их температура.

  • Шаг 4: Я попытался построить его в виде цветных кругов, где цвета были рассчитаны как градиент HSL. Он тоже выглядит нормально, но был немного слишком отстающим с 3K очками.

Для таких случаев у Google maps есть классная функция, в настоящее время это альфа-версия – Fusion Tables.

  • Шаг 5: Я загрузил в него свои данные, построил график – супер, не лагает.

Веб-интерфейс Fusion Tables также позволяет настраивать маркеры для диапазонов данных. Он был не слишком гибким, может быть, это из-за альфа — состояния-в JS тоже есть хакерские обходные пути, но теперь мне этого достаточно!

Веб-интерфейс Fusion Tables также позволяет настраивать маркеры для диапазонов данных. Он был не слишком гибким, может быть, это из-за альфа — состояния-в JS тоже есть хакерские обходные пути, но теперь мне этого достаточно!
  • Шаг 6: Я проанализировал map.aviasales.ru опять же для цен на билеты туда и обратно, затем слегка отфильтрованные результаты:
places = [place for place in Place.objects.all() if 17 <= place.weather['temp'] < 25 and place.price and place.price < 20000]
  • Шаг 7: с помощью уродливого JS я добавил его в качестве второго слоя пользовательских маркеров на карту:

  • Шаг 8: Я завернул весь проект с помощью Docker (django, uwsgi, nginx, postgres в один контейнер) и выкатил его на свой VPS в Нидерландах!

Вот оно!

Чтобы просмотреть результат, посетите сайт: http://catchthesummer.scythargon.ru

источники: https://github.com/scythargon/catch_the_summer

Затраченное время: менее 15 часов

Жаль, что aviasales.ru/calendar не принимает GET-параметры:)

Любые комментарии очень приветствуются!