Інтерактивна карта пасажирських перевезень Укрзалізниці

Нашим завданням було створити медіарезонанс навколо даних Укрзалізниці, проаналізувати закономірності руху поїздів, купівлі та повернення квитків, розробити інтерактивну візуалізацію даних та дати до неї змістовний коментар.

Цільова аудиторія

У кожної складової проекту була своя аудиторія.

  • Інтерактивна карта — для широкої аудиторії, всіх читачів «Текстів».
  • Інтерактивні графіки пасажиропотоків у розрізі станцій, днів тижня і годин доби були задумані як продукт для малого бізнесу.
  • Проект в цілому зацікавив активістів і транспортних аналітиків (Центр реформ транспортної інфраструктури, Громадський контроль Укрзалізниці, Центр транспортних стратегій).

Процес

З жовтня 2015 року ми реалізували три проекти на основі даних Укрзалізниці і працюємо далі.

Дані пасажирських перевезень Укрзалізниці за 2014–2015 роки ми отримали ексклюзивно від Міністерства інфраструктури у жовтні 2015 року. Передбачалося, що ці дані згодом будуть публічно доступні для всіх (відповідно до Постанови Кабміну про відкриті дані), а наш проект допоможе привернути до них увагу. У грудні ми випустили інфографіку про те, куди українці їдуть на свята, а в березні 2016 року — основний проект із двома інтерактивними візуалізаціями, експертною аналітикою, статичними графіками і маніфестом відкритих даних. У квітні на основі цих даних вийшло окреме розслідування про те, як Партія регіонів використовувала залізницю під час Майдану. Дані Укрзалізниці не оприлюднені й досі.

Первинна обробка даних

Жовтень 2015 року

Дані ми отримали у вигляді дампу з бази, за кожен місяць вони були представлені в окремому plain text файлі. Перед закиданням у власну базу застосували невеличкий скрипт для трансформації даних (наприклад, зміни кодування та формату дат).

Розвідковий аналіз

Листопад 2015 року

На початку проекту нас цікавило дуже багато аспектів даних: розподіл вагонів за власникам, кількість і час руху вагонів і потягів, розподіл пасажирських перевезень у просторі й часі, закономірності купівлі і продажу квитків і пільгові перевезення. Тож ми спробували зрозуміти, яка інформація нам потрібна для цих досліджень, оцінити, що з цього вже є у нашій базі даних, а що потрібно запитати у Міністерства інфраструктури та Укрзалізниці.

У результаті ми дозапитували такі дані:

  • Таблиці відповідності числових кодів деяких категорій даних. Частина полів (код держави продажу, тип вагона, вид операції і т.д.) у базі даних кодована числами. Без словників або таблиць відповідності ми не могли дізнатися, що стоїть за цими числами.
  • Інформацію про маршрути потягів та відстані між станціями.
  • Довідник назв станцій, їх географічні координати (врешті ми взяли їх у відкритих джерелах).

Перші виклики

Перш ніж переходити до аналізу, ми мали ще розібратися із способом врахування транзакцій у базі даних. Скажімо, якщо ми хочемо порахувати реальну кількість пасажирів за якийсь період, мусимо знати кількість придбаних квитків та кількість повернутих (і відняти друге від першого).

Проблема в тому, що транзакції повернення квитків у базі даних не враховуються зі знаком «мінус» (як і всі інші транзакції, котрі не стосуються придбання квитків). Тому нам ще слід було трохи переробити базу даних та додати знак «мінус» до певних категорій транзакцій («повернення», «відмова від придбання» і т.д.). Розібратись із тим, як враховувати різні категорії транзакцій, нам допоміг колишній аналітик Укрзалізниці.

До того ж, нам — для кращого розуміння даних — ще потрібно було розібратись із тим, що всі ці категорії транзакцій означають, тобто яким реальним життєвим ситуаціям вони відповідають.

Окрім того, ми мали прибрати суперечності у базі даних. Скажімо, ми виявили, що змінні «Повнота тарифу» та «Код пільги» конфліктують між собою: ми можемо мати транзакції із значенням змінної «Повнота тарифу» — «повний», які при цьому позначені як пільгові у полі «Код пільги». Потрібно було визначитись, яку з цих змінних використовувати для обчислення, а яку просто відкинути як невалідну.

Перша інфографіка

Грудень 2015 року — січень 2016 року

Одночасно ми вивчали нечисленні приклади візуалізації маршрутів (Індійської залізниці, метро в Бостоні на ілюстрації далі, російських залізничних маршрутів). Один із них, робота New York Times про маршрути американців на День подяки, надихнув нас на першу спробу — розробку статичної карти новорічних поїздок українців.

Консультація експертів

Січень 2016 року

У цей період ми поспілкувалися з аналітиком Укрзалізниці Євгеном Дмитриченком та радником Міністерства інфрастурктури Іваном Макушенком.

Євген пояснив, які дані є в Укрзалізниці, як їх коректно інтерпретувати, які висновки з них можна робити, а які — навіть не варто намагатись. Іван застеріг, що аналізувати рух пасажирських потягів і говорити про якусь оптимізацію розкладу чи маршрутної сітки можна тільки з урахуванням вантажних перевезень (щодо яких ми не мали даних).

Так ми остаточно визначились, які види аналізу можемо застосувати та які проекти можемо реалізувати на наявних даних. Вирішили зосередитись на:

  • розподілі пасажирських потоків;
  • дослідженні популярних напрямків;
  • завантаженості станцій впродовж днів тижня і годин доби;
  • пільгових перевезеннях;
  • закономірності придбання квитків.

Геокодування даних

Середина січня — лютий 2016 року

Щоб зробити карту, ми мали геокодувати кожну залізничну станцію з нашої бази, себто приписати для неї широту та довготу. Оскільки Укрзалізниця проігнорувала наш запит щодо координат станцій, довелось їх шукати у відкритих джерелах. Всі великі станцій знайшлись без особливих проблем, а от частину дрібних довелось вишукувати довгенько.

Деякі міста мають кілька залізничних станцій. На карті ми вирішили показувати дані в розрізі саме міст, а не станцій, тому нам потрібно було об’єднати кілька станцій з одного міста в один запис.

Прототипування

Січень – лютий 2016 року

Після експерименту з новорічною візуалізацією ми зрозуміли, що першим нашим великим продуктом на цих даних може стати інтерактивна карта, яка покаже загальну картину розподілу пасажирських потоків — тобто відповідатиме на питання «коли, звідки і куди».

У нас була вже готова основа карти і зрозуміле дизайн-рішення. Залишалося зробити його інтерактивним, щоб читачі могли обирати місто на карті і бачити вхідний-вихідний трафік, а також обирати різні часові інтервали.

Треба було додати слайдер для вибору часового інтервалу, а також зробити кожне місто на карті клікабельним і міняти графіку залежно від обраного міста. Ми мали вирішити, як масштабувати дуги під час зміни часового інтервалу, як розташувати підписи міст на карті, аби вони не накладались один на одний та не створювали візуального шуму, а також як зробити легенду простою і функціонально ефективною.

Окреме питання — вибір кольорової гами. Для підбору палітри Влад Герасименко створив простий інструмент, котрий дозволяв кожному охочому запропонувати свій набір кольорів та одразу побачити, як виглядатиме карта в цих кольорах. У такий спосіб відібрали контрастні, але водночас не дуже обтяжливі кольори.

У випадку з цією картою основним фрейморком була JavaScript бібліотека D3.

А от карта і графіки пасажиропотоків у розрізі станцій, днів тижня та годин доби були написані мовою R із використанням бібліотек leaflet та ggplot2. Сам веб-застосунок побудований за допомоги бібліотеки shiny. Оскільки мова R використовувалась і в процесі дослідження та аналізу даних, то розробка цього веб-застосунку не зайняла багато часу.

Допрацювання функціоналу

Кінець лютого — початок березня 2016 року

Після закінчення основної роботи над візуалізаціями розпочалося тестування, виявлення проблем, допрацювання та шліфування деталей. На цьому етапі до однієї з карт додали ще й міжнародний трафік (але лише до Росії та Білорусі, оскільки в даних Укрзалізниці враховане не все міжнародне сполучення), а також інтерактивну інструкцію з користування.

Сторітелінг

Березень 2016 року

Але не візуалізаціями єдиними. До двох інтерактивних карт ми вирішили додати статтю економічного географа Сергія Данилова з інтерпретаціями даних Укрзалізниці, а також маніфест «Чому Укрзалізниця має відкрити свої дані» (оскільки на той момент стало зрозуміло, що УЗ їх відкривати відмовляється).

Для всього проекту створили окрему сторінку «Громадяни пасажири», з якої вже можна було потрапити на сторінки із візуалізаціями та статтями. На ній дали загальну інформацію про аналіз бази пасажирських перевезень, трохи аналітики щодо купівлі квитків (за часом придбання та типами вагонів), популярних напрямків та доходів Укрзалізниці від продажу квитків різного типу.

З останнім довелось попрацювати трохи довше. У базі даних не зазначена вартість квитка, натомість є кілька змінних, із яких вона складається. І от до частини цих змінних ще треба додати ПДВ, а частину — враховувати так, як записано в базі.

Щоб зрозуміти, що і як нам потрібно враховувати, ми знайшли кілька своїх старих квитків, відшукали їх у базі даних, та порівняли, що записано у квитку, а що в базі. Виявилося, що ми можемо легко підсумувати всі складові вартості квитків, крім касового збору на повернення (близько 11 грн). Ціни на квитки пораховані з цією єдиною похибкою.

Результати

  1. Питання одного з читачів навело нас на думку зробити розслідування у жанрі журналістики даних про перевезення провокаторів у Київ у січні — лютому 2014 року.
  2. Українські медіа завдяки нашому інструменту дослідили окремі аспекти роботи залізниці в регіонах (ua-travels.in.ua, Громадське радіо, shepetivka.com.ua, «Геопростір України»).
  3. Про візуалізації написали в міжнародних медіа: Visualoop, MapsMania (нашу роботу відзначили як карту місяця).
  4. Нам вдалося розпочати діалог із Укрзалізницею. Ми організували прес-конференції з тодішніми начальниками пасажирських перевезень, а також із тодішнім ВО голови правління УЗ й одним із директорів пасажирських перевезень. Зараз ми маємо попередні домовленості із Міністерством інфраструктури про нові дослідження даних Укрзалізниці.

Розвиток проекту

У майбутньому ми плануємо випустити кілька проектів вужчого спрямування:

  1. Ізохронну карту, себто карту, яка показує, куди можна дістатись за певний проміжок часу з певної обраної точки — станції чи міста. В такий спосіб, наприклад, можна буде планувати поїздки.
  2. Візуалізацію поїздок із пересадками — тобто таких поїздок, коли людям, аби дістатись, скажімо, із Костянтинівки до Львова, треба їхати з пересадкою через Київ і брати два квитки замість одного. Маючи таку візуалізацію, можна буде розпочати дискусію щодо маршрутної сітки на Укрзалізниці.
  3. Дослідження тривалих зупинок потягів (наприклад, таких випадків, коли потяг стоїть на проміжній станції маршруту годину або більше).
  4. Графік швидкості проходження поїздів між станціями — інструмент для порівняння маршрутів, а в майбутньому — й оцінки ефективності доріг.
  5. Для більшості цих проектів потрібні додаткові дані: розклад Укрзалізниці, база даних вантажних перевезень, дані про стан колій.
Анімація демонструє, куди можна дістатись з Києва за певну кількість годин.

Висновки

Найцікавіше — спробувати розгледіти за масивом даних людську історію, поведінкові паттерни: як люди купують квитки, куди найбільше їздять, як пов’язані між собою різні регіони країни, як на пасажиропотік вплинула анексія Криму та війна на сході України.


19512