OpenStreetMap File Explorer

Хочу представить вашему вниманию веб-приложение с открытым кодом “OpenStreetMap File Explorer” для интерактивного просмотра содержимого произвольного файла OSM.

Приложение парсит OSM файл и показывает его содержимое на карте в соответствии со стилем, заданным пользователем. Содержимое OSM файла также показывается в виде дерева как в программе Google Планета Земля. При двойном клике по элементу дерева происходит масштабирование карты на соответствующем элементе дерева.

Есть еще важная особенность приложения. Одно и то же содержимое карты можно отображать с использованием ряда географических javascript-движков. В данный момент поддерживаются 4 движка: Leaflet, Google Maps API, Google Earth API и Yandex Maps API.

По умолчанию показывается содержимое OSM файла с центром Берлина. Обратите внимание, что размер этого файла составляет 12 Mb. Поэтому рекомендую использовать локальную версию приложения под локальным веб-сервером.

Информацию на английском языке о том, как установить локальную версию и как настроить стиль карты и вид дерева можно найти по следующей ссылке:
https://github.com/vvoovv/djeo/wiki/OpenStreetMap-Explorer

Приложение можно доработать под веб-портал для любого города.

Ссылки на демо-пример:

Чтобы получить центр Парижа, добавьте &data=data/paris.osm к указанным выше ссылкам.
Чтобы получить Сочи, добавьте &data=data/sochi.osm к ссылкам.

Приложение написано на javascript-библиотеке djeo, для которой я создам отдельную тему.

Буду признателен за отзывы.

Круто. Хотелось бы еще чтобы при клике по объекту на карте, объект выделялся в дереве объектов. И кажись мультиполигон с дыркой неправильно обработал. id25945199

Т.е. это именно рендер, а не “эксплорер”. Тогда главный вопрос: оно поддерживает mapcss?

И еще, можно ли сделать мердж 2х частично накладывающихся осм файлов. Если можно - то можно сделать загрузку по частям при зуме, тоесть на малых зумах грузим леса и дороги, на больших догружаем домики и пои, предварительно порезав осм файлик на 2.

А, да, еще вопрос, как обработается coastline? До границ ббокса не заэкспандится автоматом?

В оффлйн не работает ;-(

Теоретически выделение элемента дерева можно сделать (при необходимости производится прокрутка, чтобы элемент оказался в поле зрения). Но возникает проблема: что делать если элемент дерева находится в закрытой папке? Раскрывать папку? А если в папке тысячи элементов? А если несколько уровней вложенностей папок? В этом случае будет сильно тормозить.

relation при парсинге OSM файла я пока игнорирую :slight_smile: Так что мультиполигонов пока на карте нет.

Сложить 2 файла - не проблема: id объекта отслеживается. Смену стиля в зависимости от зума я пока не реализовал. Буду рад помощи :slight_smile:
Напрашивается вывод, что вы подразумеваете непрерывную отрисовку векторных тайлов?

coastline парсер пока никак не обрабатывает. Второй вопрос (про ббокс) не понял :slight_smile:

Буду рад любой помощи

Ну если у вас в выгрузку попал костлайн - то скорее всего он будет не замкнут. Чтобы рисовать море как море нужно будет получить полигон, тоесть замкнуть коастлайн. Замкнуть надо так чтобы полигон был выпуклым. Если цель отобразить, то лучше как мне кажется обрезать коастлайн по bbox и замкнуть его по границе bbox’a в соответсвие с направлением коастлайна.

Смену стиля в зависимости от зума я пока не реализовал.
Ну тут даже не обязательно его менять, хотя и не плохо было бы. Достаточно просто поделить объекты на серваке при загрузке по типу.

Напрашивается вывод, что вы подразумеваете непрерывную отрисовку векторных тайлов?
Не то что бы подразумеваю но хотелось бы. Впрочем вроде был уже котярин векторный нарезальшик и рендер.

Пойду-ка я всеже почитаю исходники.

Стиль задается на javascript. Стиль по умолчанию можно посмотреть здесь. По сути довольно близко к mapcss.

Проблема в том, что у меня каждый style rule имеет id и участвует в построении дерева. См. подробности тут (раздел “The Content of the Checkbox Tree”). Если использовать mapccs, то надо формировать дерево по другому алгоритму.

Тем не менее, регулярные выражения на javascript для парсинга mapcss я уже написал. Парсинг mapсss происходит. Осталось написать преобразование в собственный формат описания стиля.

Замечу, что смену стиля в зависимости от зума я пока не реализовал.

В каком браузере?

Рекомендую скачать локальную версию, если нужно смотреть оффлайн.

Парсер находится здесь

Я нашел :slight_smile:

Добавил движок на основе Leaflet:
http://vvoovv.github.com/osm-explorer/djeo-demos/osm-explorer/osm-explorer.html?djeoEngine=leaflet
Напоминаю, что загружается OSM-файл размером 12Mb.

Приглашаю послушать мой доклад на конференции Открытые ГИС! в субботу, 17 ноября, в 17.40:
Библиотека djeo: единый API для лучших географических веб-API