Смотрим на карты
ДЕНЬ 04
Как не потеряться в мире данных
Одна из главных тем всех Облачных визуализаций — построение карт. Разберемся в практическом применении картографических функций DataLens, начнем с обсуждения геоданных, необходимых для анализа, продолжим подходами к интерактивности и настройке слоев, чтобы оценить новые функции сервиса, недавно анонсированные на Yandex Scale 2020.

Практику функциональности продукта построим на интереснейшем кейсе с данными о загрязнении воздуха в Москве, собранных со множества городских датчиков. Проведем поиск и расследование событий, найдем инсайты, отследим развитие событий во времени, чтобы научиться строить дашборды с фокусировкой на картографии. Ну что, полетели в DataLens.
Теория дня
... про точку и линию на плоскости
Немного про историю картографии
С чего все начиналось и когда
Всемирная история картографии началась еще в XVI веке, когда в Антверпене был напечатан первый в мире географический атлас, состоящий из 53-х карт большого формата. К каждой карте прилагался подробный пояснительный географический текст.
«Зрелище круга земного», 1570
Со временем стало понятно, что карты можно использовать не только для ориентировании на местности, но и с целью показа каких-то процессов и событий. Карты помогали решать конкретные проблемы.

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

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

Ключевые люди в картографии на основе данных:
  • Джон Сноу и его карта эпидемии холеры в Лондоне
  • Чарльз Бут и его исследование социо-экономического уровня в Лондоне по районам
  • Шарль Минард и его визуализация похода Наполеона на Москву и обратно
Немного больше про Чарльза Бута и Джона Сноу
История Дж. Сноу – наверное, самая известная дата-история с картой. В Лондоне началась эпидемия холеры. Сноу опросил местных жителей, и на основании собранных данных составил карту заболеваний холеры. На карте были отмечены места расположения водозаборных колонок и количество умерших от холеры в том или ином здании. Сноу опирался на статистические данные, чтобы твёрдо доказать связь между источником воды и заболеванием. Получившаяся общая картина эпидемии показала, что наибольшее число умерших пришлось на окрестности водозаборной колонки на Брод-стрит и проблема холеры была решена.

История Ч. Бута. Услышав однажды, что 25% лондонцев живут в нищете, Бут был настроен хотя и скептически, но заинтересованно. Он решил профинансировать проект, чтобы сделать тщательную оценку уровня бедности во всем городе. Вся информация тщательно картировалась. Проект продолжался в течение 17 лет. Исследовательский пыл Бута удовлетворялся с помощью команды нанятых им асистентов. Из сотен интервью и наблюдений его команда создала серию цветных карт, которые показали уровни дохода и социальные классы каждой улицы в Лондоне

На изображениях ниже: первая карта Лондона – как раз история Сноу. В центре карты можно увидеть отметку волозаборной колонки (Pump). А цветная карта с улицами – пример из исследования Бута.
Как вообще работают карты?
В чем разница между точкой, линией и полигоном
Если обратиться к анатомии карт, то карты состоят из трех основных элементов: точки, линии, полигона.

Точка — это базовый элемент картографии. Точка имеет параметры «широта» и «долгота». Точки используются как для определения «линии», так и являться самостоятельным элементом карты и использоваться для обозначения отдельного объекта без привязки к количественным показателям. Например, если вы ищете кофейню в своем городе, то, открыв онлайн-карту, вы увидите несколько отметок — это будут points of interest (POI, точки интереса).

Линии представляют собой отрезки, проходящие через точки.
Линия состоит как минимум из двух точек. Обычно линиями обозначаются улицы, дороги или что-то похожее. Обратите внимание: одна точка может принадлежать сразу нескольким линиям.

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

Полигоны используются для обозначения участка поверхности, обладающего общими свойствами — например, лесов, районов, регионов, стран.
Даже самые сложные карты все равно, так или иначе, основаны на этих базовых элементах. И эти же базовые элементы – точки и области – позволяют нам визуализировать данные на картах в современных инструментах визуализации, в том числе и в DataLens.
Благодаря изменению размера или цвета точек или изменению цвета полигонов, мы можем считывать изменение данных на местности
DataLens поддерживает отображение трех типов визуализации:
  • Точечная карта
  • Фоновая карта
  • Тепловая карта
Точечная карта — это карта, на которой географические объекты отмечены точками. Точки могут быть как одинакового размера (выступать в роли point of interest, показывая только местоположение), так и кодировать данные с помощью цвета или размера.

Точечные карты идеальны для показа распределения данных на местности. Они подходят для общего и поверхностного обзора данных.
Фоновая карта отображает целые области и регионы разными цветами или оттенками цвета в соответствии с исходными данными. Значение показателя выражается через насыщенность цвета или через сам оттенок.

Картограммы наглядны и просты, однако проводить точные сравнения довольно сложно. Для повышения точности нужно наносить подписи данных или добавлять к карте всплывающие подсказки с информацией.
Тепловая карта может отображать как плотность самих точек на карте (опять points of interest). И тогда, чем краснее область на карте тем больше там сконцентрировано точек.

Но также тепловая карта в DataLens может отображать величину показателя при помощи такой же тепловой палитры.

Такие карты позволяют быстро понять характер имеющихся данных и выделить области потенциального интереса, найти нужные сигналы среди шума.
Работа с картами и геослоями в DataLens

На одной карте может располагаться не более 5 слоев с любыми типами визуализации геоданных. Слои в картах называются геослоями.

Геослои — визуализация показателей по точкам или полигонам на карте.

С геослоями можно выполнять следующие операции:

  • изменять название
  • устанавливать уровень прозрачности или вовсе выключать отображение слова в легенде справа
  • менять порядок внутри типа визуализации, при этом порядок типов визуализации остается неизменным (сверху вниз: точечная карта, фоновая карта, тепловая карта).
Вы можете использовать предрасчитанные геослои из Yandex.Cloud Marketplace. Там есть как платные продукты, так и бесплатные примеры

Для того, чтобы создать карту:

  1. Выберите чарт Карта в окне выбора визуализаций
  2. Выберите какой тип карты вы хотите отобразить на первом слое — Геоточки, Геополигоны или Тепловая карта с геоточками. В зависимости от выбранного типа карты, добавьте нужное поле в первую секцию. Выбрали геоточки? Добавляйте сюда поле типа geopoint!
  3. Определитесь как и что вы хотите показать с данными и добавьте нужные показатели либо в цвет, либо в размер объектов на карте.

Вы также можете добавить дополнительные поля в Тултип (всплывающие подсказки), добавить подписи, поменять цвета и настроить отображение слоев с названиями и легендами.

Вы можете сделать до 5 слоев на одной карте, с разными показателями и разной прозрачности.

Если вам необходимо добавить фильтров, то вы можете это сделать как для всей карты, например, из всех точек оставив только данные по Москве, так и для конкретного слоя.

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

Сообщество включает в себя тысячи людей по всему миру, которые устанавливают датчики у себя в домах, формируя объективную аналитику качества воздуха по всему миру!

В одном устройстве два датчика – пыли (P1, P2) и климата (температура, влажность, давление). В нашем датасете данные собраны на самом детальном уровне по каждому сенсору, но они агрегированы во времени по пятиминутным интервалам. С точки зрения геоданных, в датасете есть координаты широты и долготы. Но мы хотим обогатить имеющуюся таблицу и присоединить данные по геоточкам и геополигонам разного уровня из второго датасета.
Во втором датасете собраны только вспомогательные данные для показа данных с датчиков на карте. Однако, вы увидите там несколько уровней полигонов, имеющие названия от poligon6 до poligon9.

Эти полигоны — специальные области, которые были рассчитаны с использованием библиотеки H3 (была разработана в Uber). Это специальная система гео-кодирования с помощью гексагонов, которая обеспечивает равномерное покрытие областей любой площади и позволяет очень тонко настраивать точность гексагонов.

Таким образом, poligon6-poligon9 – это отдельные уровни Геополигонов разной точности.
Описание задачи

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

  • Были ли резкие всплески ухудшения качества воздуха по Москве за последние 90 дней?
  • Где они произошли и насколько сильно отличается показатель?
  • Как изменилась ситуация по качеству воздуха в связи с карантином и covid-19?
В сегодняшнем дне мы не будем загружать csv-источник, а подключимся к уже настроенной БД Clickhouse. Поэтому, вам будет нужно создать новое подключение к Clickhouse и ввести туда следующие данные:
Имя хоста: c-mdb636es44gm87hucoip.rw.db.yandex.net
Порт: 8443

Пользователь: breathe_ro
Пароль: F2UjQgPEdRrxWzc/EtDJS00v8thjz6J5
Проверьте подключение и можете переходить к настройке датасета. Дальше все шаги повторяют все то, что вы уже делали в предыдущие дни марафона.

В Clickhouse содержится две таблицы: breathe. d_point и breathe. point_5min_avg_mos_spb. Первая содержит в себе геоданные для отображения на картах, а вторая — данные с счетчиков качества воздуха, агрегированные по 5-минутным интервалам. Добавьте две таблицы в пустую область экрана, чтобы объединить их по полю location.
Ура! Теперь можно перейти на вкладку Поля и сделать там необходимые настройки.

Прежде всего, пройдитесь по показателям — P1, P2, temperature, humidity, pressure. P1 и P2 — это показатели содержания твердых частиц пыли размером менее 10мкм и 2.5мкм соответственно; их измеряют в мгк/м3. Можно назвать эти поля как PM10 и PM2.5. Чем меньше значение, тем чище воздух. Допустимые нормы этих показателей:
PM2.5 < 20; PM10 < 40 - по стандартам Евросоюза :
PM2.5 < 10; PM10 < 20 - по стандартам Всемирной организации здравоохранения

Temperature — температура, humidity — влажность, pressure — давление. Проставьте всем показателям агрегацию Среднее и, если хотите, переименуйте. Также, можно переименовать поле timestamp — Дата наблюдения.
таблица breathe.point_5min_avg
Количественные данные есть! Теперь посмотрим на геоданные. В вашем датасете есть аж три типа геоданных: координаты широты и долготы (lat, long), геоточка (geopoint) и геополигоны (polygon6…9).

Поменяйте тип данных у geopoint на геоточку, а у всех polygon — на геополигон. Вы сможете выбрать на карте сразу те полигоны, которые вам понравятся. Поле polygonX_id является идентификатором полигона. Это поле можно использовать для определения, в каком полигоне было резкое изменение обстановки воздуха.
таблица breathe.d_point
В исходных данных нет указания на принадлежность точки к какому-либо городу или региону… Поэтому немного опередим нашу программу марафона и сделаем вычисляемое поле, которое промаркирует Москву и Санкт-Петербург.

Создайте новое вычисляемое поле в этом же окне, нажав на кнопку + Добавить поле, запишите туда формулу ниже и вы готовы работать!
Новое поле «Город»
if ([lat]>55.134 and [lat]<56.196 and [lon]>36.517 and [lon]<38.988) then 'Москва'
    else 
    if ([lat]>59.477 and [lat]<60.292 and [lon]>29.470 and [lon]<31.077) then 'Санкт-Петербург'
        else 'Не определено' end end
Решение от эксперта
Александра Усачева
Эксперт по визуализации данных
Супер-пример дашборда по этим данным от Yandex
В этих данных интереснее всего смотреть на показатели концентрации пыли P1 и P2 (или PM10 и PM2.5), поэтому все чарты я построила, используя только эту метрику. Я начала с того, что построила динамику изменения PM10 за год, увидев как сильно поменялась картинка качества воздуха с начала апреля 2020. Кстати, не забудьте добавить фильтр по созданному полю Город — я выбирала данные только по Москве. Потом построила такой же график, но по часам, ограничив период последними тремя месяцами. Интересно, что с сентября уровень пыли снова начал расти, хотя, казалось, что домашняя изоляция закончилась давно, но может все больше людей начали ездить на работу после летних отпусков? Тем не менее, здесь тоже можно выделить свои всплески.

Перейдя от линейных графиков к карте, я сделала карту из двух слоев. Первый слой — это точечная карта, размер кружков которой зависит от показателя концентрации пыли. Т. е. чем он был больше, тем больше кружок. Опять таки, оставляем данные только по Москве. Увидев большой разброс значений, я добавила в Тултипы данные своей геоточки (geopoint), чтобы если что я могла потом использовать эту информацию в фильтрах на дашборде.

На втором слое я добавила геополигоны (polygon6), которые никак не кодировала данными. Скорее, это для меня вспомогательная подложка, которая может дать мне информацию по ID проблемных полигонов — я также смогу использовать идентификатор на дашборде для поиска необычных паттернов.
Я начала собирать дашборд, на который добавила два индикатора – по общему количеству наблюдений (count по любому полю), и по среднему показателю PM10.

Я добавила два селектора: дату наблюдения и ID полигона, о котором писала выше. В селекторе даты выбрала по умолчанию период в последние 3 месяца, но настроила связи так, чтобы этот селектор не влиял на нижний график динамики за год. Селектор ID полигона влияет на все чарты.
Вы можете посмотреть на интерактивную версию дашборда по ссылке
Все обсуждения теории и практики дня – в Телеграме!

Ищите по никнейму @YandexDataLens или переходите по кнопке ниже
Вдохновение
... в пространстве
Для поиска вдохновения в днях нашего Марафона мы решили написать экспертам в области дизайна, работы с данными и их визуализации и услышать ценное мнение по какой-либо теме. Сегодня говорим про эстетическую составляющую диаграмм: форму, цвет, стиль.
Андрей Дорожный
Дата-журналист и специалист по визуализации данных
Первый вопрос, который нужно задать себе при создании карты — нужна ли она вам? Часто бывает так, что простой рейтинг регионов и городов может быть понятнее и выигрышнее. Не используйте карту ради карты.

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

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

Если кодируем количественные данные на карте, всегда следуем правилу —чем темнее цвет, тем больше показатель. В целом, это правило работает не только для карт, но не забывайте о нем.
Для тех, кого не пугает написание кода на Python и Scala и кому актуальны технологии промышленной обработки (больших) данных, предлагаем посмотреть практический вебинар о том как можно настроить подготовку данных и формирование витрин с помощью сервисов Yandex Cloud Functions и DataProc и Clickhouse. А в конце будет интересный пример с уже знакомым инструментом визуализации данных Yandex DataLens!
Рома Колеченков позвонит:
Мы создаем DataLens с целью сделать аналитику популярной и доступной для всех категорий пользователей. Марафон для нашей команды — возможность улучшить продукт на основе ваших впечатлений.

Поделитесь своим мнением или идеей, чтобы помочь с развитием