Візуалізуй це

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

Про дизайн у картографії я вже розповідали ще розповідатиму, адже про це можна розповісти багато цікавого. У цій історії мова піде не про традиційні карти.

Я задумав зібрати що знаю про картографічні візуалізації та розповісти про це. У результаті вийшов онлайн-курс «Візуалізація геоданих» — серія міні-лекцій про загальні принципи та інструменти для роботи з геоданими. До кожної частини я зібрав посилання на додаткові матеріали та приклади робочих файлів, щоб можна було поринути у деталі та спробувати щось зробити самостійно. Ця посада зібрана з матеріалів курсу. Насправді, немає принципової різниці між звичайними паперовими картами та новомодними картографічними візуалізаціями — принцип будь-якої карти: наочне уявлення наших знань про реальний світ.

Я виділив би кілька характерних компонент хорошої картографічної візуалізації:

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

З'єднуючи добре підібрані дані,технології та дизайн можна зробити багато цікавих візуалізацій. Покажу кілька для прикладу:

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

дані
Всі будівлі в Нідерландах стилізовані за роками будівлі

Окрім візуалізації нідерландських будівель є схожі проекти: Бруклін, Нью-Йорк, Москва.

Хлопці з MapBox візуалізували 1500000 треків RunKeeper - пробіжки, прогулянки, поїздки на велосипедах. Добре видно популярні місця для прогулянок. Я навіть знайшов веломаршрути з дому працювати влітку.

Хороший приклад у якому поєдналися дані, технології та дизайн - Watercolor Maps від Stamen Design, каліфорнійської дизайн-студії, яка давно і дуже успішно займається картографічними візуалізаціями. У разі цієї карти можна з упевненістю стверджувати, що вийшов чудовий арт-об'єкт.

Жодна карта не може бути картою, якщо вона не містить даних. Дані отримують приставку «гео» у той час, коли в інформації з'являється прив'язка до місцевості і його можна відобразити на карті. Зазвичай прив'язку об'єкта до місцевості здійснюють за допомогою географічних координат - довготи та широти, а там, де потрібне тривимірне уявлення, вказують ще й висоту.

Геодані поділяють на два основні типи: растрові та векторні.

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

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

Векторні геодані описуються набором або послідовністю координат, геометрією та атрибутивними значеннями. Є три основні типи векторних даних:

  • точки- для завдання точкового об'єкта достатньо пари координат, приклад точкових об'єктів на карті - POI (points of interest)
  • лінії- геометрія лінії задається послідовністю пар координат, найбільш знайомий приклад лінійних об'єктів - дороги на карті
  • полігони- задаються координати вершин, будівлі - приклад полігональних геоданих

Крім типу геометрії та розташування не менш важлива атрибутивна інформація. У векторних даних кожен об'єкт може містити додаткову атрибутивну інформацію. Використовуючи ці атрибути, можна робити вибірки об'єктів і застосовувати до них різні стильові правила. На прикладі шару доріг з OpenStreetMap: за атрибутом "type" можна вибрати дороги зі значенням "primary" і виділити їх на карті особливим стилем.

Для зручності роботи з атрибутами у більшості інструментів можна переглядати дані у вигляді таблиці. До речі, атрибути можуть заповнюватися заздалегідь, а можуть і обчислюватися залежно від будь-яких параметрів об'єкта. Картинка обкладинки до цієї посади – будівлі з OpenStreetMap у центрі Москви, колір яких залежить від площі будинку.

Для векторних геоданих було розроблено велику кількість різноманітних форматів, розповім про найбільш популярні:

Інструменти

Тема картографії тільки здається специфічною, складною та заплутаною, зараз все більше і більше різних технологій та інструментів для «побутової картографії» стають доступними для звичайних користувачів.Спробую дати стислий огляд того, чим часто користуюся сам.

QuantumGIS

Quantum GIS (скорочено QGIS) - справжня ГІС у класичному розумінні. Продукт кросплатформовий з відкритим вихідним кодом і є чудовою альтернативою дорогим ГІС-пакетам.

візуалізуй
Налаштування візуалізації землетрусів у CartoDB

У скринкасті про CartoDB я показав як можна за кілька хвилин створити анімовану візуалізацію землетрусів (за 30 днів, за даними USGS). У CartoDB дуже зручно все зроблено для того, щоб користувач з будь-яким рівнем підготовки зміг би розібратися з сервісом, а для тих, кому потрібна допомога, хлопці стартували спеціальний сайт The Map Academy на якому публікують приклади та скринкасти, які навчають роботі з сервісом, а в блозі публікується найкраща карта тижня створена за допомогою цього сервісу. Для більш просунутих можливостей CartoDB має API.

Насправді компанія MapBox, яка розробила TileMill* за ці пару років вже втекла далеко вперед: для кастомізації карт випустили більш функціональний продукт Design Studio, онлайн-сервіс теж має багаті можливості роботи з геоданими, а для розробників пропонується широкий спектр API. У своєму блозі команда регулярно публікує вражаючі приклади візуалізації.

MapBox як і CartoDB дозволяє зберігати ваші геодані у хмарі та публікувати їх на різних платформах. Основна відмінність: CartoDB дозволяє стилізувати та відображати їх поверх вже будь-якої готової карти, а в сервісах MapBox можна кастомізувати і карту, і об'єкти, які хотілося б на ній відобразити. При цьому в CartoDB можна підключити тайли карти, підготовленої в MapBox.

Основна ідея стилізації карт у TileMill полягає в наступному: ви додаєте дані по шарахна карту, і можете стилізувати налаштувати стиль відображення шару за допомогою CartoCSS - мови налаштування зовнішнього вигляду, дуже схожого на CSS. Картинки в пості про типи даних, або картинка для обкладинки якраз готувалися в TileMill, і якщо один раз розібратися та зрозуміти принцип, робиться це зручно, швидко та легко.

даних
MapBox TileMill

* - користувачам MacOS 10.10 Yosemite потрібно завантажувати dev-версію

API Яндекс.Карт

дані

У скринкасті про API я завантажив інформацію про станції велопрокату в CSV форматі, сконвертував за допомогою QGIS ці дані в GeoJSON і далі візуалізував їх за допомогою API Яндекс.Карт декількома способами:

  • прості мітки зі стандартним стилем, у стандартних стилях ще є кілька пресетів;
  • мітки з вашим значком, а якщо у нас є дані щодо місткості велопрокатів, можна, наприклад, варіювати розмір значка залежно від місткості велостанції;
  • кластеризація міток, кластеризатор - дуже зручна штука, яка групує близько розташовані мітки в спеціальні групові мітки;
  • точки пунктів прокату можна відобразити у вигляді кіл з заданим у метрах радіусом;
  • за допомогою спеціального модуля велопрокати відобразити як теплові карти;
До речі, працювати з GeoJSON-файлами можна трохи більш витонченим способом, за допомогою ymaps.GeoQuery. Наприклад, всі завантажені об'єкти можна відразу додати до колекції геооб'єктів і керувати параметрами відображення для всього набору даних. Код цих прикладів можна знайти на GitHub у матеріалах до скринкасту.

можна
Кластеризація пунктів велопрокату

Кластеризацію та малювання кіл я використав в експерименті з візуалізацією громадських туалетів — кола мені дуже стали в нагодіпоказати 5-хвилинні радіуси, а модуль теплових карток я використав у проекті статистки роботи московського велопрокату.

даних
Теплова карта у проекті статистики московських Велобайків

Це, звичайно, далеко не всі можливості API. За бажанням можна зібрати на основі API Карт досить цікавий інтерактивний проект. Знайти цікаві приклади візуалізацій можна у блозі, клубі розробників, «пісочниці» чи документації.

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

Отже, найважливіші посилання для подальшого занурення в тему візуалізації геоданих.

Посилання та робочі файли для прикладів: github.com/minikarma/geotalk

Для обговорення теми я стартував гурт у Фейсбуці – «Побутова картографія». Дуже добре буде знайти однодумців та обговорювати подібні теми там, ділитися експериментами та досвідом.

Планую продовжити поповнювати матеріали в міру можливості і буду радий доповненням та побажанням.

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

Хардкорна конфа за С++. Ми запрошуємо лише профі.