21 февраля — международный день открытых данных (Open Data Day, ODD). О том, что такое открытые данные можно узнать в Википедии. Здесь же рассказ про действо, которое прошло в Москве.
В этом году ODD проводился традиционно под патронажем НП «Информационная Культура» и Российского отделения фонда Открытых знаний. Эти организации были опять же традиционно представлены Иваном Бегтиным и Ириной Радченко соответственно. Посвящен хакатон был визуализации данных. Формальный отчет уже составлен Ириной. Мне же хочется раскрыть то, «как это было» с точки зрения участников.
Происходил хакатон в Impact Hub Moscow. Он в центре Москвы. Но замаскирован изрядно, так что я (и не только) долго стояли во дворе и искали, в какую же дверь войти. Так что когда я пришел, действо уже началось. Мест почти не было — я с трудом нашел стул в первом ряду. Все остальные места были заняты.
На хакатон я пришел с уже готовой идеей. Идея была в визуализации на карте расходов школ. И немного данных притащил готовых тоже. Очень потом жалел, что заранее побольше не собрал и не обработал. Еще у меня была более-менее отстроена среда разработки (pycharm).
В общем, прослушав вводное сообщение Ивана Бегтина, мы с товарищами пошли на задние столы делать наш проект. Как ни странно, таких как мы было достаточно мало — в основном все остальные остались слушать. Как выяснилось потом, именно на хакатон пришли немногие — большинство просто послушали или поговорили. А вот делать… Но может это и хорошо — столов было не очень много, слишком большому количеству разработчиков не усидеть.
Обмен данными мы с товарищем наладили через Яндекс.Диск, кодом практически не обменивались — он занимался получением данных, я визуализацией. Но все равно git завели и в него код периодически сохраняли. Общение и перекидывание ссылок через чат в Google Hangouts.
Наш проект активно использует открытые данные. Для начала мы взяли списки лучших школ с сайт Департамента Образования города Москвы. Затем соединили это с общим реестром школ с Портала открытых данных Правительства Москвы (датасет №747). А уже эти данные соединили с данными госзакупок через mashape-API сайта ГосЗатраты. Ну и все эти данные геокодировали через API Яндекса и вывели на карту красивыми круговыми диаграммами и линиями.
Впрочем, вернемся к временной линии. В содержательной части первым был обзорный доклад Ивана Бегтина про различные инструменты визуализации бюджетов и бюджеты вообще. Честно — слушал вполуха. Уже погрузился в разработку. Но даже так — доклад интересный. Правда в основном не разработчикам, а пользователям — перечислено очень много разных инструментов визуализации. Затем была Ирина Радченко и Ростислав Яворский, но их я вообще как-то пропустил. Работал с данными.
В чем состоит работа с данными? Ну, это их получение, изучение(«разведка»), трансформация, дополнение, связывание с другими данными и наконец сохранение в готовый формат. Для этого один из наилучших инструментов — это OpenRefine (бывший Google Refine). В нем удобно открыть большой фаил, посмотреть что там за данные, пофильтровать, поизменять их массово, добавить новые (к примеру, из геокодинга) и затем сохранить в json к примеру.
Мой товарищ в это время трудился над изучением и работой с API через mashape — собирал следующую порцию данных. А я от данных перешел к их визуализации. Благодаря openrefine у меня уже был массив в json, и я его активно на карту наносил. Делал это на LeafletJS. Тут собственно подошло и мое время выступать — я тоже заявился заранее, в начале свободной трибуны выступить. Рассказывал о том же — тематические карты на leafletjs для начинающих. После меня была «свободная трибуна», без презентации выступили от сообщества openstreetmap и еще другие люди.
С проектом не все получалось, как у меня, так и у товарища. Ну да для хакатона это характерно — не стоит пытаться сделать там много. Лучше немного, да красиво. Я залез в дебри leaflet-dvf — плагина для LeafletJS и закопался в нем. Время тикало. Голова кипела.
Потом у меня резко все получилось более-менее, а вот у товарища — нет. В результате визуализация была практически готова, а вот данных не было. Я стал экспериментировать в функционале немного, и это сильно помогло — в результате, когда данные пришли и оказались не совсем такими, на которые я рассчитывал, эксперименты помогли под них приспособится.
Тем временем началась опять движуха — прямое включение с Пермью. Там тоже проходило аналогичное мероприятие. Но только там с созданием проектов было еще тише, чем у нас. Просто собрались-поговорили. Во всяком случае, я о своем проекте в видеомосте рассказал, а вот оттуда никто ни о чем не рассказал.
Вот тут как раз пришли данные, и я стал адаптировать свой js под них, а данные — под js. Все равно времени не хватило до конца, и показывали проект с черно-белой круговой диаграммой вместо красивой цветной. Впрочем, он и так понравился.
Выводы в целом: готовится к хакатону надо лучше. Идеально — чтобы вопросов не было, а оставалось только «сесть и сделать». Но это недостижимый идеал. Наладить общение и общую среду разработки — или четко разделить задачи сразу. Лучше второе. Жестко ограничить функционал приложения — чтобы успеть вовремя. И если что-то получилось — не расслабляться и отдыхать, а работать дальше, экспериментировать, не выпадать из «потока».
Автор: mithron