Индекс твоего города — Всего города

6fac6d520ce304019471bf7ea84faec2.png

Мы все отлично знаем, где у нас в городе парки, а где университеты. Но если мы хотим узнать, где больше школ и меньше баров. Для двух параметров большинство людей смогут выполнить такую операцию оценки в пространстве в голове, но как быть если надо 4–5 параметров объединить и еще с разной важностью (детские сады важны, но школы важнее в два раза, а парки это вообще приоритет). Для этого был создан новый слой на карте.

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

Выбор слоя для отображения

Выбор слоя для отображения

Теперь этого можно избежать выбрав в меню «Для всего города». В этом случае вам будут доступны все индексы, но строить мы их будем для всего города (и нормализовать соответственно). Напомню (кто читал ранее) индекс это не абсолютное количество объектов, это относительная мера по всему городу или выделенной области. Индекс учитывает удаленность, а также либо площадь объекта (парка), либо количество маршрутов общественного транспорта и так далее.

Доступные на данный момент индексы:

  • Плотность застройки — Чем ниже значение индекса тем плотнее застройка с учётом этажности.

  • Доступность детских садов — Чем выше значение индекса тем больше детских садов в радиусе доступности (до 1 км). Чем ближе объект, тем больше его вклад в значение индекса.

  • Доступность школ — Чем выше значение индекса тем больше школ в радиусе доступности (до 1 км). Чем ближе объект, тем больше его вклад в значение индекса.

  • Доступность транспорта — Чем выше значение индекса тем больше маршрутов общественного транспорта в радиусе доступности (до 1 км). Чем ближе остановка, тем больше его вклад в значение индекса.

  • Доступность парковок — Чем выше значение индекса тем больше общественных (без контролируемого доступа) парковок для автотранспорта в радиусе доступности (до 1 км). Чем ближе парковка, тем больше его вклад в значение индекса.

  • Доступность баров-ресторанов — Чем выше значение индекса тем больше кафе, баров, ресторанов и прочих точек питания в радиусе доступности (до 1 км). Чем ближе объект питания, тем больше его вклад в значение индекса.

  • Доступность медицины — Чем выше значение индекса тем больше поликлиник, клиник и больниц в радиусе доступности (до 2 км для клиник и 5 км для больниц). Чем ближе объект и если это больница, то тем больше его вклад в значение индекса.

  • Доступность спорта — Чем выше значение индекса тем больше спортивных центров и площадок в радиусе доступности (до 1 км). Чем ближе объект, тем больше его вклад в значение индекса.

  • Доступность парков — Чем выше значение индекса тем больше парков в радиусе доступности (до 2 км). Чем ближе парк и больше его площадь, тем больше его вклад в значение индекса.

  • Доступность объектов образования — Чем выше значение индекса тем больше университетов и колледжей в радиусе доступности (до 2 км). Чем ближе объект. и больше его площадь, тем больше его вклад в значение индекса.

Описание всех функций можно найти в Описании к сайту.

Пример индекса

Пример индекса «Доступность парков» (г. Минск)

Техническая составляющая

Доступ к карте бесплатный для всех (пока будет разумная нагрузка — не миллионы пользователей :)). Никакой монетизации не предвидится поэтому простите, если где-то забыта лицензия или упоминание кого-либо. Ссылку на исходный код пока не даю — там всё не очень красиво (пока делалось чтобы работало). Могу только сказать что все расчеты делаются на локальном компьютере (и за разумное время — все города и индексы пересчитать на данный момент около часа занимает) без GPU и ChatGPT:).

Источники данных, инструменты и библиотеки:

  • Данные OSM загружаются с https://download.geofabrik.de/. Подложка карты — тайлы https://tile.openstreetmap.org/{z}/{x}/{y}.png.

  • Обработка данных, построение индексов и подготовка тайлов PostgreSQL с установленными PostGIS и h3-pg.

  • Cервер тайлов — Martin.

  • Карты и элементы управления для нее — MabLibre GL JS.

  • Сервер HTTP — nginx.

  • Развернуто пока все на Yandex Cloud.

© Habrahabr.ru