Историческая карта Челябинска — результат моего изучения сервисов создания интерактивных карт*. На карте указаны годы постройки зданий Челябинска. Красным цветом отмечены наиболее древние здания, желтым — современные постройки. На сай те описаны подробности проекта. Здесь же расскажу, как можно сделать интерактивную карту для своего города. Как обычно, без знаний программирования и вообще без каких-либо специальных знаний.

* Интерактивная карта была создана в бесплатном аккаунте на сайте carto.com, который действовал 12 месяцев. Подключать платный аккаунт не стал (300$ в месяц), поэтому карту заблокировали. Алгоритм, описанный ниже, работает, просто в бесплатной версии карта будет «жить» 1 год.
Как сделать красивую интерактивную карту со своим дизайном и со своими данными:
- Собрать базу данных (возраст зданий, этажность, тип здания — все, что вам нужно отобразить на карте).
- Провести геокодирование (соотнести адреса с координатами строений на карте).
- Обработать базу данных (группировать, удалить лишние данные).
- Оформить карту (я использовал Carto.com и Mapbox.com).
Подробнее о каждом этапе.
База данных
Основа карты — база данных в формате xls. Забегая вперед, 80% всего времени уходит на приведение данных в нужный вид, остальные 20% — на поиск недостающих данных и оформление. В окончательной таблице данных — более 40 тыс строк с координатами, адресами зданий, типом зданий (жилой дом, школа, торговый центр, офис, гаражи и т.д.), годом постройки. Данные собраны в несколько этапов, в основном автоматически, но не без ручной проверки и дополнения. На первом этапе достаточно найти «сырые» данные — обрабатывать и визуализировать их нужно в самом конце (после геокодирования). Часть работы можно сделать на сайте carto.com, часть — в Excel. Так выглядит окончательная таблица.

Итак, сначала я нашел таблицу с адресами домов и годами их постройки на сайте ДомМинЖКХ (это были три столбца улица, дом, год постройки). Из этих данных сделал таблицу из ≈ 6 тыс адресов (объединил улицу и дом в один столбец) и годов постройки домов. Там были не все дома, поэтому годы постройки многих зданий исторического центра искал на других сайтах вручную (перечислены на karta74.net). Все остальные данные я получил автоматическим способом в процессе геокодирования.
Геокодирование
Геокодирование нужно для соотнесения адресов (и других данных) с координатами на карте (в моей таблице это первый столбец). Найти таблицу координатов для всех строений города-миллионника оказалось крайне сложно для человека, впервые узнавшего, что такое геокодирование. Пришлось прочитать множество статей и руководств и перепробовать десятки ресурсов. В итоге с задачей помог справиться англоязычный сайт: Mygeodata.cloud/osm.

Для получения таблицы с адресами и координатами зданий на карте:
- В левом верхнем поле выберите тему географических объектов (дороги, точки-адреса, природные объекты, школы, жилые дома и пр.). Для своей карты я выбрал все здания (buildings) в виде многоугольников (polygon). В таблице будут отображены только те выбранные объекты.
- Нажмите define location и выделите на карте нужную область. Есть два варианта выделения: прямоугольная область и многоугольник (выделение точками).


- После выбора нужной области на карте нажмите ОК. В правом окне вы увидите объекты, попадающие в выделенную область карты (в моем случае все здания).


- Если выбран небольшой участок карты или узкая тема (например, только школы города), то база данных будет небольшой — до 5 Мб. Такую таблицу можно скачать бесплатно. Базу больше 5 Мб можно скачать за 2-4 доллара (pay and convert). Либо попробовать бесплатную часть из выбранных данных (convert a sample).

Для своей карты я скачал базу всех зданий (≈ 15 Мб) Челябинска за 3,9 доллара.
Переходим к следующему этапу — созданию карты из баз данных.
Обработать базу данных
На третьем этапе я загрузил базу геокодированных данных KML в конструктор карт carto.com. Для этого понадобилось зарегистрировать бесплатный аккаунт (он ограничен 150 Мб данных, 10 наборами данных и 3 картами).

В верхней части сайта две вкладки — Карты (Maps) и Базы данных (Data). Загружаем файл KML с помощью кнопки New dataset.

Далее нажимаем Upload и перетаскиваем базу данных KML.

Затем находим выпадающее меню в базе данных (три точки справа в строке с названием) и нажимаем create map (создать карту).

Конструктор автоматически построит карту на основе загруженного файла геокодирования (KML). Справа мы видим большую карту, на которой отражаются все манипуляции с базой данных. Слева — полоска с инструментами для редактирования. Здесь можно добавить еще базы данных (4 в бесплатной версии сайта), а также нажав на существующую базу данных, поработать с ней.

Для своей карты я объединил два собранных массива данных — (1) год, адрес и (2) адрес, координаты. Вторую таблицу я сделал в carto.com из загруженного на предыдущем этапе файла KML (на сайте он преобразовался в прямоугольники на карте, я скачал его в CSV и конвертировал в XLS). Объединение таблиц в одну проводится автоматически в Excel. Не буду на этом останавливаться (материалов по теме «как объединить две таблицы в Excel» много). Главное здесь привести столбец адресов в обоих таблицах к одинаковому виду. Далее я сделал еще один столбец, в котором разделил все здания на 5 групп по году постройки (до 1917 года, 1917-50, 51-2000, 2001-2020 годы и «сбор данных»).
Объединив две таблицы в одну и разбив все здания по группам, я загрузил ее снова на сайт carto.com и перешел к оформлению карты.
Оформление карты
На сайте можно настроить цвета объектов, шрифты, подписи, всплывающие подсказки, легенду карты. Для этого зайдите на вкладку базы данных в своей карте, откройте вкладку STYLE. Для окрашивания зданий разных лет разными цветами я выбрал цвет фигуры «зависит от данных» и выбрал столбец с группами зданий, затем присвоил разные цвета 5 группам зданий (до 1917 года, 1917-50, 51-2000, 2001-2020 годы и «сбор данных»).

Затем убрал контур фигур (если его оставить, то при увеличении карты контуры сливались в белое пятно). Настроил подписи, выбрав столбец годов постройки. Далее настроил всплывающее при окно (POP-UP), чтобы при наведении мышью на здание отображался его адрес.

Настройка легенды (вкладка LEGEND) еще проще.

Вернувшись к начальной странице карты (кнопка Back в левом верхнем углу), можно выбрать базовый слой карты (BASEMAP) и опубликовать интерактивную карту онлайн (PUBLISH).
В конструкторе карт заложено несколько базовых стилей карты-подложки, на которую накладываются многоугольники-здания. Можно выбрать стандартный, одноцветный слой, акварель и несколько других. Для своей карты я сделал оригинальный слой в виде нарисованной карты на сайте Mapbox.com. Если Carto.com позволяет работать с базами географических данных, то Mapbox.com помогает оригинально оформить карты (цвета, стили всех объектов, шрифты надписей, иконки) и затем использовать это оформление как подложку в сервисе Carto.
Алгоритм кратко:
- сделать таблицу XLS (годы постройки зданий с адресами с сайта ДомМинЖКХ),
- скачать геоданные зданий (файл KML) с сайта Mygeodata.cloud/osm,
- загрузить файл KML на сайт Carto.com, скачать базу в формате CSV, конвертировать в XLS,
- объединить две таблицы XLS по столбцу адресов,
- загрузить получившуюся таблицу на сайт Carto.com, создать на ее основе карту,
- оформить и опубликовать карту (можно использовать Mapbox.com для создания оригинального слоя-подложки).