Много лет существуют Google Earth + Street View и в свое время они вызвали восторг, когда можно виртуально погулять в заморских странах, в Гималая или же по двору детства. Это было очень необычно для тех времен, когда еще кругом щебетали dial-up модемы.

С тех пор прошло 20 лет: теперь трассировка лучей в играх это реальность и видеокарты нагревают воздух не только из-за трехмерной графики в UE5 или Unity, но и майнят крипту/запускают нейросети. Новомодные метавселенные - это хорошо забытое старое, когда маркетинг пытается донести потребителям что без взаимодействия в дополненной реальности общаться и вести бизнес в социальных сетях несовременно. А визуализация геоданных не так далеко ушла от изначальной идеи из Earth. Если вдруг эти сервисы окажутся недоступны, то с чем мы останемся вместо?

В мае этого года вышла первая версия streets-gl - отображение 3D карт OpenStreetMap в браузере. По качеству картинки и поддерживаемым тегам, на мой взгляд, это лучший проект!

streets-gl свободное программное обеспечение с лицензей MIT и фронтэндеры могут дорабатывать этот проект на TypeScript, вся логика работы в браузере а сервер лишь раздает заранее подготовленные векторные тайлы.

Это далеко не первый проект для OSM где можно бродить в 3D пространстве. Есть другие 3D игры и десктоп приложения на основе OpenStreetMap данных, но сейчас речь не об этом. В браузере работает сервис F4 Map им можно пользоваться бесплатно, хотя не получится установить на своих серверах - это проприетарный продукт. OSM-3D использует java applet в браузере и версию Java 1.6, что небезопасно да и современные браузеры не поддерживают.

Streets.GL поддерживает динамическое освещение, тени и шейдеры воды. Днем солнце путешествует по небосводу меняя свой цвет и освещенние зданий и засветку неба, а ночью на небе появляются звезды. Высоту солнца над горизонтом программа расчитывает по алгоритму, зависящем от текущего даты/времени и широты/долготы места из которого мы наблюдаем мир.

Глубину резкости камеры можно включить в настройках:

Так дома на Ходынском поле смотрятся гораздо интереснее
Так дома на Ходынском поле смотрятся гораздо интереснее

Визуализатор учитывает основные теги 3D-свойств зданий. Если вдруг ваше здание не отображается так красиво как вы его видете каждый день, то всегда есть возможность отредактировать данные в OpenStreetMap по инструкциям проекта. Например, видно что команда Maps.Me, когда проект пренадлежал mail.ru, постаралась внести данные о своем офисе и переходном мосту через Ленинградский проспект рядом с ним:

Streets.GL использует два основных источника данных:

  • Векторные тайлы, созданные из дампа планеты OpenStreetMap с помощью немного модифицированного проекта Planetiler (используется его форк). А береговая линия загружается из osmdata.openstreetmap.de

  • Рельеф местности из Esri elevation 3D tileset

Пока проект не поддерживает смену времен года, снег а так же не рисует дым из трубы и брызги фонтанов. По всему этому F4Map пока еще впереди.

Крейсер "Аврора" в снег(F4Map)
Крейсер "Аврора" в снег(F4Map)

Вроде на дворе зима, а северную столицу streets.gl рисует в зелени:

Хотя картинка в Streets.GL все равно выглядит более реалистично, особенно у моря и в горах!

Олимпийский парк в Сочи
Олимпийский парк в Сочи

Вся логика скомпилированная из TypeScript по разбору векторных тайлов и визуализации выполняется в веб браузере. Разработчик проекта создал набор своих библиотек для отображения текста, визуализации теней от объектов и небосвода.

На странице проекта указаны его главные цели: предоставление возможности исследовать данные OSM в 3D, продвижение открытых данных и предоставление картографическому сообществу возможности легко проверять карту визуальными средствами.

Можно сохранять список мест для просмотра, а также поделиться ссылкой на конкретное место в мире по URL, где в адрес добавляются координаты и направление камеры.

Проект доступен на GitHub и по ссылке streets.gl

Комментарии (8)


  1. engine9
    14.12.2023 08:55

    А я разочаровался в концепции таких 3D карт, у них есть пара фундаментальных недостатков:

    1) Силами энтузиастов не сделать города целиком в одном стиле. Не хватит мотивации, а если навесить сверху контроль качества исполнения в виде артдиректора, так вообще все разбегутся. Т.к. это трудная, кропотливая и довольно однообразная работа. Знаю как это организуется для перерисовывания городов для авиасимуляторов, трёхмерщики позже уходят через несколько месяцев по причине утомления.

    2) Такие карты особо и не нужны. Ну полетал пару раз, удивился и всё. За реальной информацией пойдёшь в "тугис" (в котором запилили довольно приятный и лаконичный 3Д режим, не выглядящий как графика из начала нулевых) или "гуглкарты" (с панорамами).


    1. igor_suhorukov Автор
      14.12.2023 08:55

      Жаль что разочаровались. Действительно 20 лет назад это было что-то необычное.

      1. Это похоже на разработку игр? Расскажите пожалуйста про ваш опыт, мне интересно!

      2. Не нужны часто, тут вы правы. А вот когда набегут маркетологи с метавселенными, даже школьники будут скамейки в виртуальных дворах расставлять и indoor карты чертить, если это появится потом в их соцсетях, где они будут виртуально слушать эмопанк и K-pop в кампании одноклассников.

      IMHO если OSM мэпер увидел свои труды в streets.gl то в следующий раз он укажет roof:shape/material и прочие тэги, которые обычно никто не использует(а они влияют только в трехмерном рендеринге карт) и обозначит подъезды в доме.


      1. JediPhilosopher
        14.12.2023 08:55

        А вот когда набегут маркетологи с метавселенными, даже школьники будут скамейки в виртуальных дворах расставлять и indoor карты чертить

        Метавселенные скорее всего нарисуют свою собственную вселенную. Ибо нафига копировать реальность?

        3D визуализация данных с OSM и подобных полезна разве что для визуализации каких-то городских данных. Или архитектурных проектов. Чтобы по бокам было что-то похожее на реальный город. Но и там в целом обычно достаточно выдавленных из полигонов коробочек.


        1. igor_suhorukov Автор
          14.12.2023 08:55

          Обменялись мнениями, а время покажет как будет!


      1. engine9
        14.12.2023 08:55

        Некоторые работы вот тут есть.


        1. igor_suhorukov Автор
          14.12.2023 08:55

          Я оценил вашу реставрацию школы! Атмосферно


  1. Roma_letchik
    14.12.2023 08:55

    А туда можно загружать точки с фото, как в гугл мапс?

    Интересно ещё использовать в построении маршрута


    1. igor_suhorukov Автор
      14.12.2023 08:55

      А туда можно загружать точки с фото, как в гугл мапс?

      Этого функционала пока нет и не видел таких запросов в проекте. Если рассуждать где хранить фото в существующих сервисах откуда возможно отображать в Streets.GL, то больше всего подходят Mapillary и Wikimedia.

      Интересно ещё использовать в построении маршрута

      Для этого надо в проекте как минимум реализовать issue#154 из этого проекта, а потом интегрировать с сервисом построения маршрутов на OSRM/Valhalla/GraphHopper