Конвертер OSM -> MP

Сейчас обдумываю два основных вопроса:

  • обработка запретов поворотов
    данные будут браться по этой схеме: http://wiki.openstreetmap.org/index.php/Relations/Turn_Restrictions
    при установке такого релейшна надо следить, чтобы запрет был однозначным
    то есть каждая улица или односторонняя, или в точке запрета разрывается
    постараюсь сделать обработку no_right_turn / no_left_turn, но тут не факт, что получится

  • индексация улиц
    тут сложнее: непонятно, откуда брать для улицы её город
    тег is_in очень мало где заполнен, да и пишут туда кто во что горазд
    вроде бы какой-то релейшн для этого планировали?

есть какие-то идеи?

Приходит в голову только предварительная обработка с целью определения, лежит ли улица внутри многоугольника города.

а разве для многих городов многоугольники есть? да и геморно это слишком

Многоугольник можно самим создать. В крайнем случае взять прямоугольник.

Да делов то. Подгрузил нужную область, Edit-Search-highway, лишние улицы исключил, добавил тэг is_in.
По крайней мере для самары я расставлю. Только может сначала договоримся, что туда писать?

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

Неужели для Москвы не найти какой-нибудь границы (пусть даже примерной) ?

вопрос-то как раз не о Москве :slight_smile:
я пытаюсь поуниверсальнее сделать, чтобы по произвольному Osm-файлу получить вменяемый Mp

Да, надо бы. Я могу добавить в СПб (и кое-где в области) полную административную цепочку - все границы
известны - мун. образование, район, город, субъект федерации, страна.

для навигаторов обычно используется цепочка Город → Регион → Страна
так что хотелось бы иметь возможность вычленять её для любого случая

а сам тег is_in - это обычно несколько слов, разделённых запятыми
так что можно предположить:
одно слово - город (регион и страна берутся по умолчанию)
два слова - (город, регион) или (город, страна)?
три слова - всё понятно
больше трёх - берём только три последних

Давай. Потому как я еще столько информации не сразу наберу, а у тебя под рукой. А пример (читай стандарт) нужен…

А может тогда для улицы писать просто город? А потом уже из тэга place=* обозначающего соответствующий город распускать цепочку дальше. ?

тоже вариант. так даже лучше

Я думаю поле is_in нелогично и в долговременной перспективе само собой отомрет. Над картой постоянно ведется работа. И получается нужно следить, чтобы для новых линий и POI было проставлено is_in?

Можно сохранить границы городов и использовать их при поиске.
Например надо найти улицу Советскую.
Обычной поиск выдает сотни улиц Советских.
Затем по коодинатам центра улицы определяем, к какому городу относится данная Советская улица.

Пользователю выдется набор Советских улиц с привязкой к соответствующему городу

taxiway=residential ?
У меня препроцессор ругается на отсутствие нодов :frowning:

aeroway         taxiway                 l       0x06

на надо же его какой-то линией прорисовать…

Тогда я бы добавил и ноды для единообразия.

а ноды-то там зачем??
можно, в принципе, какой-нть другой линией прорисовывать, только какой?

Да, пожалуй, только граф будут засорять.

Если брать нероутинговые, то они только на большом зуме будут видны :frowning:

Переписал скрипт заново, почти с нуля: то, что было раньше, уже невозможно было развивать.
По функционалу пока такой же, что и был.
Сейчас пытаюсь сделать соединение порезанных кусков дороги в одну.

Отсюда вопрос: по каким правилам эти самые куски соединять? Идеи будут? :slight_smile:

Опции командной строки типа id, name, charset, output_format (.osm, .mp, .mif/.mid) бы не помешали.

Число примыкающих сегментов для удаляемого нода =2 и полное совпадение отсортированного листа tag=value
(created_by нужно наверное игнорировать)