VRN.Age: Карта возраста домов Воронежа

Так выглядит карта
Так выглядит карта

Проект был запущен в январе 2021 года. На создание меня вдохновила онлайн карта с возрастом построек Питера от Никиты Славина. Так как говорят, что Воронеж это маленький Питер, то и у него должна быть своя маленькая карта.

  1. Сбор данных о годах постройки,
  2. Сбор картографических данных,
  3. Соединение первых данных со вторыми и вывод в браузер;

Сбор данных о годах

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

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

Все адреса в любых государственных реестрах унифицированы и их можно скачать из базы ФИАС. База организованна неудобно, нет отдельных региональных баз, но хорошо, что эти данные вообще есть в публичном доступе. Архив всех адресов на момент работы над проектом весил ~8гб. 

Скачали. Спарсили. Выгрузили в PostgreSQL. Получили ~70к адресов.

Затем на каждый адрес нужно было сделать запрос к кадастровой карте. Этот процесс занял несколько дней. В итоге удалось собрать ~27к годов. 

P.S. Потом выяснилось, что в парсере был баг и часть информации не собиралась. Повторив процедуру спустя пол года, получилось добавить в базу еще несколько тысяч годов. 

Еще один источник, который использовался при сборе данных это Единый Государственный Реестр Объектов Культурного Наследия.

В дальнейшем некоторые данные были взяты с сайта реформы ЖКХ. Так же пользователи сами присылали информацию о годах построек некоторых домов. Сейчас в базе хранятся даты построек ~35 000 домов.

Сбор картографических данных

Самые полные картографические данные о Воронеже есть только у Яндекса и 2GIS, но получить легальный доступ к ним не реально. Зато есть проект OpenStreeMap (OSM), где силами сообщества создается подробная бесплатная карта всего мира.

В OSM не все здания отрисованы в актуальной форме, у некоторых построек нет адресов, а многих попросту нет на карте. Но этого оказалось достаточно.

Выгрузили данные через Overpass API. Загрузили в PostgreSQL используя osm2pgsql. Этап закончен.

Соединение данных и рендеринг

Данные о годах и картографические данные соединяются через адрес. Большинство адресов из ФИАС совпали с названиями в OSM, некоторые улицы и адреса пришлось корректировать вручную.

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

На фронтенде данные из CartoDB были подключены к Leaflet. А для обработки запросов на бэкенде я использовал Laravel, но со временем перевел на NestJs.

В итоге проект многим понравился и привлек внимание в Instagram. В первые несколько дней сайт посетили 11 000 человек.

Проект упоминался в СМИ: РИА, Вести, Факто.ру, Горком36.

Ссылка: