Михаил Новиков
дизайнер

ПОЧЕМУ Я РЕШИЛ ДЕЛАТЬ КАРТУ ТОМСКА

Я по-настоящему влюбился в картографию, когда увидел топографический атлас Швейцарских Альп. С тех пор я регулярно делал карты для своего удовольствия и старался по возможности использовать картографию в работе.


Формально я не картограф и не геоинформатик. Чтобы делать инфографику я просто скачивал векторные объекты Open Street Map, выгружал через QGIS в PDF и вручную обрабатывал в векторном редакторе.


Когда увидел карту застройки Петербурга, которую сделал Андрей Дорожный, я захотел повторить то же самое для Томска.

Из доступных данных тогда смог найти только года постройки из Open Street Map и данные с сайта «Реформа ЖКХ».

Моя первая карта возраста домов. Справа года постройки, слева высотность — данных слишком мало.
Из-за нехватки данных карты получились пустыми и скучными. Я отложил проект до лучших времен. В какой-то момент я узнал о проекте How Old is this house Никиты Славина. Он подробно рассказал как делал карту возраста домов Петербурга. А потом геоинформатик из Пензы Александр Качкаев создал полуавтоматическую систему сбора данных из семи разных источников.

К этому моменту в проекте уже было девять городов и я решил, что это отличная возможность завершить когда-то брошенный проект.

НАСТРОЙКИ СРЕДЫ РАЗРАБОТКИ

Опыта структурной работы с геоданными у меня не было, как и опыта работы со средой разработки, системой контроля версий git, редактором VScode, скриптами yarn и т.п.

Я уже несколько раз пользовался командной строкой, поэтому инструкция по автоматизированному сбору данных на несколько экранов меня не смутила. К тому же скрипты до меня опробовали на других городах, и основные неочевидные моменты уже были расписаны в wiki проекта.
После нескольких вечеров сосредоточенного чтения, инструкций, FAQ и пары походов на stack overflow пришло понимание как все это работает.
Я долго не мог понять, зачем нужна такая сложная обвязка в виде целой инфраструктуры скриптов и привязки к системе контроля версий. Ответ я понял, когда начал вносить правки в исходные данные.

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

СБОР СЫРЫХ ДАННЫХ

Процесс сбора данных суммарно занял около двух недель: я запускал скрипты по вечерам, некоторые оставлял на ночь, чтобы скачались большие файлы. Дольше всего занял дополнительный геокодинг с помощью Яндекса. Я несколько раз выходил за лимит бесплатного API-ключа и приходилось ждать сутки, чтобы геокодер разблокировался.
После настройки среды начинается монотонный процесс сбора сырых данных — запускаю по очереди скрипты из инструкции и жду пока машина сделает свое дело.
ПЕРВАЯ ВИЗУАЛИЗАЦИЯ
Когда все сырые данные были собраны, наступил долгожданный этап — визуализация полученных данных.
Успех! Данные Росреестра отработали очень хорошо. На других городах проекта с ним были проблемы. В Томске нам повезло.
В Томске повезло с источниками — большо́е количество домов совпали с адресами на векторном слое Open Street Map. Но это не значит что сходу получилась готовая карта. Полученные данные предстояло проверить, уточнить и скорректировать.
ВНЕСЕНИЕ ПРАВОК И РЕДАКТОРСКАЯ РАБОТА
Чтобы понять где провести отсечку данных для карты Томска, я решил визуализировать городскую активность и границы районов.
Синим отмечены примерные границы печатного постера. Красными линиями — границы районов Томска и поселений рядом. Зеленой штриховкой — районы, не входящие в «город Томск», но важные с точки зрения карты. Оранжевым — GPS треки на карте Strava Global Heatmap, по которым можно примерно прикинуть активность жителей.
Некоторые районы по административному делению не входят в состав города Томска, но важны для для карты. Например, слева зеленым заштрихован микрорайон Северный парк. Технически он относится к Заречному сельскому поселению, но в Томске про него думают просто как о микрорайоне города. Справа Зональное, Мирненское и Богашевское поселения. Эти части, заштрихованные зелёным, я решил включить в финальную карту.
Вношу правки в конфигурационный файл — это общее место настройки для всех скриптов: от исключений в параметрах домов до внешнего вида постера города.
Теперь методично анализирую данные. Фильтрую датасет по году постройки и с помощью локальных источников сверяю топ-100 самых старых домов.
По возможности вношу правки в исходные данные — в данном случае указываю правильную дату строительства в проекте OpenStreetMap. Потом вношу исключение в файл конфигурации, чтобы он отдавал предпочтение этому источнику во время смешивания слоёв.
В качестве источников использую архивы, проверенные медиа и замечательный Wiki-проект Товики, который ведут местные этнографы.
ВЫБОР ЦВЕТОВОЙ СХЕМЫ
Это часть работы над картой, на которую я потратил больше всего времени. Хотелось соблюсти принципы представления информации, которые заложил в стандартную расцветку Александр Качкаев, но при этом показать индивидуальность архитектуры Томска. Первое что я сделал — примерил цветовые схемы других городов на томские данные.
Расцветки уже готовых городов, плюс несколько экспериментов.
Очень понравилось, как аутентично выглядят покрашенные в кирпично-красный самые старые дома, похожая расцветка на схемах Москвы и Калининграда.
Сравнение стандартной схемы и модифицированной схемы Москвы с нотками Калининграда.
Мне показалось уместным ярко подсветить современные дома старше 2010 года. Они выглядят как огни-светлячки и хорошо показывают темпы современного строительства. Ещё понравилось, как работают вместе «красный» старый город и зелёно-синие здания 1960-х — 1990-х годов. Но в середине диапазона получилась смысловая каша: начало 20 века смешалось с постреволюцией и войной, оттепель отклеилась от поствойны и остальной половины века. Плюс схема в данном виде плохо работает для людей с дальтонизмом.
НЕСТАНДАРТНАЯ ЦВЕТОВАЯ СХЕМА
Наверное, если бы я знал во что ввязываюсь с придумыванием своей цветовой схемы, я бы выбрал более простой путь, или один из готовых вариантов.
Чтобы прийти к конечному варианту пришлось перепробовать очень-очень много версий.
В какой-то момент я решил на время отложить правила визуализации, типы категориальных цветовых схем, нюансы дальтонизма и пошел за вдохновением в город. Дополнительно прошерстив местные ресурсы, я наткнулся на проект невероятной красоты и душевности WoodTomsk. Он в 40 материалах рассказывает об истории культовых деревянных домов города. Каждый рассказ дополнен аудио рассказом и уникальным скетчем дома.
Усадьба Шишкова — скетч из статьи на сайте tomsk.ru
Это именно то, что я искал!
Я вытащил из 40 скетчей цветовую палитру с помощью органайзера изображений Eagle. А из набора этих палитр создал общую цветовую схему в Affinity Photo.
Из этого набора я отобрал ключевые цвета и обработал их так, чтобы они не конфликтовали друг с другом, разделяли эпохи на логичные промежутки и выглядели эффектно на темном фоне.
Финальная цветовая схема на кусочке города.
Такая схема не идеальна, но приемлема для первого релиза. Если у сообщества возникнут другие более оптимальные варианты, я буду рад предложениям.
ПОДГОТОВКА К РЕЛИЗУ
Когда закончился квест с выбором цветовой схемы, началась подготовка к релизу.

Нарисовал логотип города.
Получилось что-то среднее между эмблемой из 2gis и гербом города.
Вывел слои в формте GeoJson.

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

Геопривязанные контуры домов с их годами постройки и другими атрибутами будут выложены в разделе «данные» на сайте Кон-Тики.
ГОВОРЮ СПАСИБО
Никите Славину — картографу-вдохновителю, автору всего этого проекта.

Александру Качкаеву — инженеру-монументалисту, который так построил систему и написал документацию, что ей могут пользоваться даже простые люди.

Артуру Кислицыну — за то, что помогал на всём пути, периодически подпинывал и постоянно давал ценные советы.