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

Окрім візуалізації нідерландських будівель є схожі проекти: Бруклін, Нью-Йорк, Москва.
Хлопці з MapBox візуалізували 1500000 треків RunKeeper - пробіжки, прогулянки, поїздки на велосипедах. Добре видно популярні місця для прогулянок. Я навіть знайшов веломаршрути з дому працювати влітку.
Хороший приклад у якому поєдналися дані, технології та дизайн - Watercolor Maps від Stamen Design, каліфорнійської дизайн-студії, яка давно і дуже успішно займається картографічними візуалізаціями. У разі цієї карти можна з упевненістю стверджувати, що вийшов чудовий арт-об'єкт.
Жодна карта не може бути картою, якщо вона не містить даних. Дані отримують приставку «гео» у той час, коли в інформації з'являється прив'язка до місцевості і його можна відобразити на карті. Зазвичай прив'язку об'єкта до місцевості здійснюють за допомогою географічних координат - довготи та широти, а там, де потрібне тривимірне уявлення, вказують ще й висоту.
Геодані поділяють на два основні типи: растрові та векторні.
Растрові геодані, як неважко здогадатися, це звичайні растрові зображення з геоприв'язкою. Найбільш знайомий усім приклад растрових геоданих – супутникові знімки.
Крім супутникових знімків, растр використовується для цифрових моделей рельєфу, де кожен піксель зображення містить інформацію про висоту над рівнем моряцій точці місцевості. Для кращої впізнаваності частин міста я доповнив картинку сіткою основних вулиць.
Векторні геодані описуються набором або послідовністю координат, геометрією та атрибутивними значеннями. Є три основні типи векторних даних:
- точки- для завдання точкового об'єкта достатньо пари координат, приклад точкових об'єктів на карті - POI (points of interest)
- лінії- геометрія лінії задається послідовністю пар координат, найбільш знайомий приклад лінійних об'єктів - дороги на карті
- полігони- задаються координати вершин, будівлі - приклад полігональних геоданих
Крім типу геометрії та розташування не менш важлива атрибутивна інформація. У векторних даних кожен об'єкт може містити додаткову атрибутивну інформацію. Використовуючи ці атрибути, можна робити вибірки об'єктів і застосовувати до них різні стильові правила. На прикладі шару доріг з OpenStreetMap: за атрибутом "type" можна вибрати дороги зі значенням "primary" і виділити їх на карті особливим стилем.
Для зручності роботи з атрибутами у більшості інструментів можна переглядати дані у вигляді таблиці. До речі, атрибути можуть заповнюватися заздалегідь, а можуть і обчислюватися залежно від будь-яких параметрів об'єкта. Картинка обкладинки до цієї посади – будівлі з OpenStreetMap у центрі Москви, колір яких залежить від площі будинку.
Для векторних геоданих було розроблено велику кількість різноманітних форматів, розповім про найбільш популярні:
Інструменти
Тема картографії тільки здається специфічною, складною та заплутаною, зараз все більше і більше різних технологій та інструментів для «побутової картографії» стають доступними для звичайних користувачів.Спробую дати стислий огляд того, чим часто користуюся сам.
QuantumGIS
Quantum GIS (скорочено QGIS) - справжня ГІС у класичному розумінні. Продукт кросплатформовий з відкритим вихідним кодом і є чудовою альтернативою дорогим ГІС-пакетам.

У скринкасті про CartoDB я показав як можна за кілька хвилин створити анімовану візуалізацію землетрусів (за 30 днів, за даними USGS). У CartoDB дуже зручно все зроблено для того, щоб користувач з будь-яким рівнем підготовки зміг би розібратися з сервісом, а для тих, кому потрібна допомога, хлопці стартували спеціальний сайт The Map Academy на якому публікують приклади та скринкасти, які навчають роботі з сервісом, а в блозі публікується найкраща карта тижня створена за допомогою цього сервісу. Для більш просунутих можливостей CartoDB має API.
Насправді компанія MapBox, яка розробила TileMill* за ці пару років вже втекла далеко вперед: для кастомізації карт випустили більш функціональний продукт Design Studio, онлайн-сервіс теж має багаті можливості роботи з геоданими, а для розробників пропонується широкий спектр API. У своєму блозі команда регулярно публікує вражаючі приклади візуалізації.
MapBox як і CartoDB дозволяє зберігати ваші геодані у хмарі та публікувати їх на різних платформах. Основна відмінність: CartoDB дозволяє стилізувати та відображати їх поверх вже будь-якої готової карти, а в сервісах MapBox можна кастомізувати і карту, і об'єкти, які хотілося б на ній відобразити. При цьому в CartoDB можна підключити тайли карти, підготовленої в MapBox.
Основна ідея стилізації карт у TileMill полягає в наступному: ви додаєте дані по шарахна карту, і можете стилізувати налаштувати стиль відображення шару за допомогою CartoCSS - мови налаштування зовнішнього вигляду, дуже схожого на CSS. Картинки в пості про типи даних, або картинка для обкладинки якраз готувалися в TileMill, і якщо один раз розібратися та зрозуміти принцип, робиться це зручно, швидко та легко.

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

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

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

Це, звичайно, далеко не всі можливості API. За бажанням можна зібрати на основі API Карт досить цікавий інтерактивний проект. Знайти цікаві приклади візуалізацій можна у блозі, клубі розробників, «пісочниці» чи документації.
Тема картографії нескінченна, і чим більше я поринаю в неї, тим більш безмежною мені здається цей картографічний всесвіт. Особливо уважні читачі, напевно, помітили, що розповідь вийшла про дані та про технології, а про дизайн у цій історії сказано мало. У цю пригоду вирушимо пізніше — поки що я збираю матеріали на тему, структурую і осмислюю зібране.
Отже, найважливіші посилання для подальшого занурення в тему візуалізації геоданих.
Посилання та робочі файли для прикладів: github.com/minikarma/geotalk
Для обговорення теми я стартував гурт у Фейсбуці – «Побутова картографія». Дуже добре буде знайти однодумців та обговорювати подібні теми там, ділитися експериментами та досвідом.
Планую продовжити поповнювати матеріали в міру можливості і буду радий доповненням та побажанням.
Підготовляючи інформацію до курсу, я назбирав певний набір посилань для самостійного вивчення. Ділюсь і з вами. Буде чудово, якщо поділіться в коментарях чимось цікавим зі мною.
Хардкорна конфа за С++. Ми запрошуємо лише профі.