- PVSM.RU - https://www.pvsm.ru -

Визуализируй это

Несколько лет назад я делал сайт о рыбалке и публиковал на нём карту окресностей города, отмечая интересные места. Я так увлёкся картами, что и сегодня занимаюсь дизайном геосервисов, а на досуге экспериментирую с картографическими визуализациями. Недавно я визуализировал статистику работы московского велопроката [1], а ранее опубликовал высотную модель города [2] в виде разноцветной сетки улиц.

Это здорово, когда большие массивы данных об окружающем нас мире становятся визуальными, осязаемыми. Привлекает меня в этом не множество разноцветных линий или точек на тёмном фоне, а возможность наглядно показать и рассказать окружающим интересную историю, сделать эти данные полезными для людей. Мне хочется, чтобы увлечённых этой темой людей становилось больше — делиться знаниями друг с другом, обсуждать идеи.

Визуализируй это - 1
Дома в центре Москвы разного цвета в зависимости от площади здания.
Данные: © Участники OpenStreetMap [3]

О дизайне в картографии я уже рассказывал [4]и ещё буду рассказывать, ведь об этом можно рассказать много интересного. В этой истории, речь пойдёт не про традиционные карты.

Я задумал собрать что знаю про картографические визуализации и рассказать об этом. В итоге, у меня получился онлайн-курс «Визуализация геоданных» [5]  —  серия мини-лекций об общих принципах и инструментах для работы с геоданными. К каждой части я собрал ссылки на дополнительные материалы и примеры рабочих файлов, чтобы можно было погрузиться в детали и попробовать что-то сделать самостоятельно. Этот пост собран из материалов курса.

На самом деле, нет принципиальной разницы между обычными бумажными картами и новомодными картографическими визуализациями  —  принцип любой карты: наглядное представление наших знаний о реальном мире. 

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

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

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

Один из ярких примеров хорошей истории с геоданными  —  визуализация всех голландских зданий по годам постройки [6]. Помимо зрелищности, на этой карте очень наглядно рассказывается история — как застраивались города.

Визуализируй это - 2
Все здания в Нидерландах [6] стилизованные по годам постройки

Помимо визуализации нидерландских зданий есть похожие проекты: Бруклин [7], Нью-Йорк [8], Москвa [9].

Ребята из MapBox визуализировали 1 500 000 треков RunKeeper  [10] —  пробежки, прогулки, поездки на велосипедах. Хорошо видны популярные места для прогулок. Я даже нашёл веломаршруты из дома на работу летом.

Визуализируй это - 3
1 500 000 треков RunKeeper  [10]Данные карты: © Участники OpenStreetMap [3]

Хороший пример в котором соеденились данные, технологии и дизайн  — Watercolor Maps [11] от Stamen Design [12], калифорнийской дизайн-студии, которая давно и очень успешно занимается картографическими визуализациями. В случае с этой картой можно с уверенностью утверждать, что получился великолепный арт-объект.

Визуализируй это - 4
© Watercolor Maps от Stamen [11]. Данные карты: © Участники OpenStreetMap [3]

Геоданные

Ни одна карта не может быть картой, если она не содержит данных. Данные получают приставку «гео» в тот момент, когда у информации появляется привязка к местности и её можно отобразить на карте. Обычно привязку объекта к местности осуществляют с помощью географических координат — долготы и широты, а там, где требуется трёхмерное представление, указывают ещё и высоту.

Геоданные разделяют на два основных типа: растровые и векторные. 

Растровые геоданные, как нетрудно догадаться, это обычные растровые изображения с геопривязкой. Наиболее знакомый всем пример растровых геоданных — спутниковые снимки.

Визуализируй это - 5
«Облачные улицы» на Чёрном море, снимок 8 января 2015 года © NASA Earth Observatory [13]

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

Визуализируй это - 6
Высотная модель Москвы © U.S. Geological Survey [14], SRTM30, данные карты © Участники OpenStreetMap [3]

Растровые данные могут быть и не статичными картинками, технологии позволяют встраивать видео [15] в интерактивную карту. 

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

  • точки  —  для задания точечного объекта достаточно пары координат, пример точечных объектов на карте  —  POI (points of interest)
  • линии  —  геометрия линии задаётся последовательностью пар координат, наиболее знакомый пример линейных объектов — дороги на карте
  • полигоны  —  задаются координаты вершин, здания  —  пример полигональных геоданных

Помимо типа геометрии и расположения не менее важна атрибутивная информация. В векторных данных каждый объект может содержать дополнительную атрибутивную информацию. Используя эти атрибуты можно делать выборки объектов и применять к ним различные стилевые правила. На примере слоя дорог из OpenStreetMap: по атрибуту «type» можно выбрать дороги со значением соответствующему «primary» и выделить их на карте особым стилем. 

Визуализируй это - 7
Пример слоя дорог, по значению атрибута «type» выделены главные улицы. Данные карты © Участники OpenStreetMap [3]

Для удобства работы с атрибутами в большинстве инструментов есть возможность просматривать данные в виде таблицы. К слову сказать, атрибуты могут заполняться заранее, а могут и вычисляться в зависимости от каких-либо параметров объекта. Картинка обложки к этому посту — здания из OpenStreetMap в центре Москвы, цвет которых зависит от площади дома.

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

  • Shapefiles [16] — изначально этот формат использовался только для ГИС-пакетов компании Esri, но оказался удобен в использовании и стал стандартом и для других геоинформационных приложений;
  • KML [17] (Keyhole Markup Language) — язык разметки геоданныз на основе XML. Очень долгое время Google Earth был самым доступным инструментом работы с геоданными в интернете, поэтому KML-файлы получили широкое распространение в интернете и картографических сервисах;
  • GPX [18] — текстовый формат, опять же на основе XML, в основном активно используется для записи GPS-треков. Пример GPX-файла можно экспортировать из RunKeeper;
  • GeoJSON [19] — текстовый формат, за счёт удобства применения этого формата в JavaScript в последнее время стал активно использоваться для интерактивной картографии;
  • CSV [20] — за счёт своей простоты текстовый формат распространённый формат хранения геоданных, координаты указываются в колонках таблицы и как правило, CSV используется для точечных объектов. 

Инструменты

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

QuantumGIS

Quantum GIS [21] (сокращённо QGIS)— настоящая ГИС в классическом понимании. Продукт кроссплатформенный c открытым исходным кодом и является прекрасной альтернативой дорогостоящим ГИС-пакетам. 

Работая с картографией, QGIS стал для меня незаменимым инструментом для работы с геоданными. В первую очередь это возможности просмотра, редактирования, импорта и экспорта различных форматов, а также возможности анализа и работы с выборками объектов. Например, мне часто требуется отфильтровать объекты по какому-либо признаку или выбрать их в какой-либо конкретной области. 

Визуализируй это - 8
Quantum GIS 2.6.1: Слой зданий © OpenStreetMap [3] c категориями по площади, просмотр атрибутов объекта.

Кроме этого у QGIS есть возможности стилизации карты, экспорта изображения карты для печати и публикации в интернете. У Квантума большое сообщество разработчиков, заинтересованных в развитии проекта, и на сегодняшний день разработано большое количество плагинов, которые значительно расширяют функциональные возможности программы.

CartoDB

CartoDB [22] — онлайн сервис работы с вашими геоданными, по сути хостинг [23] геоданных с возможностями визуализации и публикации ваших же данных. Основная схема работы с сервисом такая: требуется загрузить данные, настроить их отображение и уже можно использовать готовую визуализацию — опубликовать ссылку на проект или разместить карту на сайте. 

Визуализируй это - 9
Настройка визуализации землетрясений в CartoDB

В скринкасте про CartoDB [24] я показал как можно за несколько минут создать анимированную визуализацию землетрясений (случившихся за 30 дней, по данным USGS). У CartoDB очень удобно всё сделано для того, чтобы пользователь с любым уровнем подготовки смог бы разобраться с сервисом, а для тех, кому требуется помощь ребята стартовали специальный сайт The Map Academy [25] на котором публикуют примеры и скринкасты, обучающие работе с сервисом, а в блоге публикуется лучшая карта недели [26] созданная с помощью этого сервиса. Для более продвинутых возможностей у CartoDB есть API.

TileMill

На самом деле, компания MapBox [27], которая разработала TileMill [28]* за эти пару лет уже убежала далеко вперёд: для кастомизации карт выпустили более функциональный продукт Design Studio [29], онлайн-сервис тоже имеет богатые возможности работы с геоданными, а для разработчиков [30] предлагается широкий спектр API. В своём блоге [31] команда регулярно публикует впечатляющие примеры визуализаций.

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

Основная идея стилизации карт в TileMill заключается в следующем: вы добавляете данные по слоям на карту, и можете стилизовать настроить стиль отображения слоя с помощью CartoCSS [32]  — языка настройки внешнего вида, очень похожего на CSS. Картинки в посте про типы данных, или картинка для обложки как раз готовились в TileMill, и если один раз разобраться и понять принцип, делается это удобно, быстро и легко.

Визуализируй это - 10
MapBox TileMill

Подготовленную карту можно экспортировать или как статичную картинку, или опубликовать в облачное хранилище для дальнейшего использования карты в интернете или на мобильных устройствах. Хранение данных в MapBox — платный сервис по подписке, при этом есть бесплатный тарифный план, которого хватает для знакомства с базовыми возможностями сервиса. 

 * — пользователям MacOS 10.10 Yosemite нужно скачивать dev-версию [33]

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

API Карт от Яндекса [34] — невероятно богат на различные возможности карты. Для первого знакомства с JavaScript API рекомендую посмотреть на примеры из «Песочницы [35]» — тут можно довольно быстро разобраться как добавить интерактивную карту на страницу с различными параметрами, настроить поведение карты или же добавить различные объекты. 

Визуализируй это - 11

В скринкасте про API я скачал информацию о станциях велопроката [36] в CSV формате, сконвертировал с помощью QGIS эти данные в GeoJSON и далее визуализировал их с помощью API Яндекс.Карт несколькими способами:

К слову сказать, работать с GeoJSON-файлами можно чуть более изящным способом, при помощи ymaps.GeoQuery [44]. Например, все загруженные объекты можно сразу добавить в коллекцию геообъектов [45] и управлять параметрами отображения уже для всего набора данных.
Код этих примеров можно найти на GitHub в материалах к скринкасту [46].

Визуализируй это - 12
Кластеризация пунктов велопроката [41]

Кластеризацию и рисование кругов я использовал в эксперименте с визуализацией общественных туалетов [47] — круги мне очень пригодились показать 5-минутные радиусы, а модуль тепловых карт я использовал в проекте статистки работы московского велопроката [1].

Визуализируй это - 13
Тепловая карта в проекте статистики московских Велобайков [1]

Это, конечно же, далеко не все возможности API. При желании можно собрать на основе API Карт достаточно интересный интерактивный проект. Найти интересные примеры визуализаций можно в блоге [48], клубе разработчиков [49], «песочнице [35]» или в документации [50].


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

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

Видезаписи скринкастов:

  1. «Введение в курс и примеры [51]» (2:25)
  2. «Типы и форматы геоданных [52]» (3:50)
  3. «Quantum GIS [53]» — обзор базовых возможностей (9:51)
  4. «CartoDB [24]» — онлайн-сервис визуализации данных (11:38)
  5. «MapBox TileMill [54]» — стилизация карты с CartoCSS (19:27)
  6. «API Яндекс.Карт [55]» — показ точек на карте в JavaScript (10:25)

Ссылки и рабочие файлы для примеров: github.com/minikarma/geotalk [56]

Для обсуждения темы я стартовал группу в Фейсбуке  — «Бытовая картография [57]». Очень здорово будет найти единомышленников и обсуждать подобные темы там, делиться экспериментами и опытом.

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

Ссылки

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

Интересные примеры:

Блоги и сайты:

Общеобразовательное про карты:

Доступные данные:

Про форматы данных:

Автор: karmatsky

Источник [103]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/kartografiya/84540

Ссылки в тексте:

[1] статистику работы московского велопроката: http://getwalk.me/velo/

[2] высотную модель города: http://getwalk.me/hills/

[3] Участники OpenStreetMap: http://openstreetmap.org

[4] уже рассказывал: http://habrahabr.ru/company/yandex/blog/185952/

[5] онлайн-курс «Визуализация геоданных»: https://github.com/minikarma/geotalk#Привет

[6]  визуализация всех голландских зданий по годам постройки: http://code.waag.org/buildings/#52.3599,4.8898,14

[7] Бруклин: http://bklynr.com/block-by-block-brooklyns-past-and-present/

[8] Нью-Йорк: http://io.morphocode.com/urban-layers/

[9] Москвa: http://msk.mercator.ru/

[10] визуализировали 1 500 000 треков RunKeeper : https://www.mapbox.com/blog/runkeeper-million-routes/

[11] Watercolor Maps: http://maps.stamen.com/watercolor/

[12] Stamen Design: http://stamen.com

[13] NASA Earth Observatory: http://earthobservatory.nasa.gov/NaturalHazards/view.php?id=85056

[14] U.S. Geological Survey: http://usgs.gov

[15] встраивать видео: https://www.mapbox.com/mapbox-gl-js/example/video-on-a-map/

[16] Shapefiles: https://ru.wikipedia.org/wiki/Shapefile

[17] KML: https://ru.wikipedia.org/wiki/KML

[18] GPX: https://ru.wikipedia.org/wiki/GPX

[19] GeoJSON: http://geojson.org

[20] CSV: https://ru.wikipedia.org/wiki/CSV

[21] Quantum GIS: http://qgis.org

[22] CartoDB: http://cartodb.com

[23] хостинг: https://www.reg.ru/?rlink=reflink-717

[24] скринкасте про CartoDB: https://vimeo.com/album/3200558/video/119947593

[25] The Map Academy: http://academy.cartodb.com/

[26] лучшая карта недели: http://blog.cartodb.com/categories/map-of-the-week/

[27] MapBox: http://mapbox.com

[28] TileMill: https://www.mapbox.com/tilemill/

[29] Design Studio: https://www.mapbox.com/mapbox-studio/#darwin

[30] для разработчиков: https://www.mapbox.com/developers/

[31] своём блоге: https://www.mapbox.com/blog/

[32] CartoCSS: https://www.mapbox.com/tilemill/docs/manual/carto/

[33] скачивать dev-версию: https://github.com/mapbox/tilemill/issues/2439

[34] API Карт от Яндекса: http://tech.yandex.ru/maps/

[35] Песочницы: https://tech.yandex.ru/maps/jsbox/2.1/

[36] информацию о станциях велопроката: http://data.mos.ru/datasets/918

[37] простые метки: http://getwalk.me/experiments/chapter6/simple.html

[38] несколько пресетов: https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/option.presetStorage-docpage/

[39] метки c вашим значком: http://getwalk.me/experiments/chapter6/custom.html

[40] варьировать размер значка: http://getwalk.me/experiments/chapter6/custom-sizes.html

[41] кластеризация меток: http://getwalk.me/experiments/chapter6/cluster.html

[42] в виде окружностей: http://getwalk.me/experiments/chapter6/circles.html

[43] специального модуля: https://github.com/yandex/mapsapi-heatmap

[44] ymaps.GeoQuery: https://tech.yandex.ru/maps/jsbox/2.1/data_load_jquery

[45] сразу добавить в коллекцию геообъектов: http://getwalk.me/experiments/chapter6/collection.html

[46] в материалах к скринкасту: https://github.com/minikarma/geotalk/tree/master/chapter6

[47] визуализацией общественных туалетов: http://getwalk.me/toilets/

[48] в блоге: http://ymapsapi.ya.ru/posts.xml

[49] клубе разработчиков: http://clubs.ya.ru/mapsapi/

[50] в документации: https://tech.yandex.ru/maps/doc/jsapi/2.1/quick-start/tasks/quick-start-docpage/

[51] Введение в курс и примеры: https://vimeo.com/album/3200558/video/116383646

[52] Типы и форматы геоданных: https://vimeo.com/album/3200558/video/117672975

[53] Quantum GIS: https://vimeo.com/album/3200558/video/119700155

[54] MapBox TileMill: https://vimeo.com/album/3200558/video/120291299

[55] API Яндекс.Карт: https://vimeo.com/album/3200558/video/120961028

[56] github.com/minikarma/geotalk: http://github.com/minikarma/geotalk

[57] Бытовая картография: https://www.facebook.com/groups/geoviz/

[58] Space Station Maps: https://www.mapbox.com/blog/space-station-earth/

[59] Burningmap Stamen: http://maps.stamen.com/burningmap/?#10/55.789/37.881

[60] Pinterest maps: https://a.tiles.mapbox.com/v3/pinterest.map-ho21rkos/page.html%2313/40.7345/-73.9709%E2%80%8A

[61] Foursquare Pulse: https://foursquare.com/infographics/pulse

[62] 6 миллиардов твитов: https://www.mapbox.com/blog/twitter-map-every-tweet/

[63] Анимированная визуализация погодных условий: http://earth.nullschool.net/

[64] 1.5 миллиона треков из RunKeeper: https://www.mapbox.com/blog/runkeeper-routes/#9/51.5002/-0.0934

[65] здания Амстердама по годам: http://code.waag.org/buildings/#52.373,4.9183,13

[66] Такси в Нью-Йорке: http://taxi.imagework.com/

[67] ещё одна визуализация: http://nyctaxi.herokuapp.com/

[68] Maps Mania: http://googlemapsmania.blogspot.ru/search?updated-max=2015-02-21T11:00:00-05:00&max-results=10&start=10&by-date=false

[69] Блог CartoDB: http://blog.cartodb.com/

[70] Блог Esri: http://blogs.esri.com/esri/apl/

[71] AxisMaps: http://axismaps.com/

[72] Maptime.io: http://maptime.io/

[73] Stamen Design: http://stamen.com/

[74] «Краткое введение в ГИС»: http://gis-lab.info/qa/gentle-intro-gis.html

[75] «A Gentle Introduction to GIS»: http://download.osgeo.org/qgis/doc/manual/qgis-1.0.0_a-gentle-gis-introduction_en.pdf

[76] ГИС-лаб: http://gis-lab.info/

[77] Anatomy of the Web Map: http://maptime.io/anatomy-of-a-web-map/#0

[78] Документация QGIS: http://www.qgis.org/ru/docs/

[79] A very short introduction to QGIS: http://mappingmashups.net/2012/11/30/a-very-short-introduction-to-qgis/

[80] QGIS tutorials: http://www.qgistutorials.com/en/#

[81] Maps and the Geospatial Revolution: https://class.coursera.org/maps-002

[82] Geodesign: Change Your World: https://www.coursera.org/course/geodesign

[83] From GPS and Google Maps to Spatial Computing: https://www.coursera.org/course/spatialcomputing

[84] Подборка ссылок: http://www.ordnancesurvey.co.uk/blog/2013/05/map-design-a-list-of-helpful-online-resources/

[85] Презентация Энди Кирка: http://www.slideshare.net/visualisingdata/andy-kirks-talk-at-the-acehp

[86] Ссылки на открытые геоданные: http://gis-lab.info/qa/data.html

[87] экстракты OSM данных: http://beryllium.gis-lab.info/project/osmshp/

[88] Metro Extracts: http://mapzen.com/metro-extracts

[89] Ссылки на другие проекты: http://wiki.openstreetmap.org/wiki/Planet.osm#Country_and_area_extracts

[90] Портал открытых данных: http://data.mos.ru/

[91] data.gov.uk: http://data.gov.uk/

[92] data.gov: http://data.gov/

[93] NYC OpenData: https://nycopendata.socrata.com/

[94] Полезные ресурсы по открытым данным: http://habrahabr.ru/company/infoculture/blog/201892/

[95] Список российских госпорталов открытых данных: http://iradche.livejournal.com/39959.html

[96] Geonames: http://www.geonames.org/

[97] Хорошая презентация: http://maptime.io/geodata/#0

[98] Географические координаты: https://ru.wikipedia.org/wiki/%D0%93%D0%B5%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82%D1%8B

[99] ГИС-форматы: http://en.wikipedia.org/wiki/GIS_file_formats

[100] JSON.org: http://json.org/

[101] GeoJSON.org: http://geojson.org/

[102] Спецификация GeoJSON: http://gis-lab.info/docs/geojson_ru.html

[103] Источник: http://habrahabr.ru/post/251755/