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

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

      type:
#        selector: if
#        condition: junction = roundabout
#        then: 0x0c

После конвертации в формат ситигида, круговое движение получается отличным от дороги, на котором оно встречается

Из чисто эстетических побуждений, я хочу чтобы круговое было таким же цветом что и примыкающая дорога. При этом, чтобы навигатор озвучивал “круговое движение”, у конвертора в ситигидовский формат есть т.н. маркер CGRoadMarker=1, про который написано: “Не используем тип дороги круговое движение, а ставим маркер”. Вот я и хочу, чтобы при конвертации из осм в .мр, junction=roundabout не превращался в тип 0х0с, а этой полилинии добавлялся атрибут CGRoadMarker=1.
Вот. Однако, как это реализовать с помощью конфигов конвертера osm2mp я так и не нашел.
Буду признателен за помощь.

В моей программе цвет линий определяет “Скин”. Любому типу - любой внешний вид.
У нас программный конвертер берет стандартный набор данных из *.mp - и сам трансформирует в формат приложения.
Если ваш программный конвертер требует что то там установить дополнительно, должно быть описание что сделать.

Формально, как было сказано, формат *.mp - есть обычный текстовый файл. Следовательно любой текст в файле можно заменить (дополнить).
Из ваших объяснений: я бы строки “Type=0x0c” заменил маркером “CGRoadMarker=1” или добавил строку с маркером CGRoadMarker=1 …
Это можно делать руками, открывая последовательно каждый файл. А можно воспользоваться командной строкой и заменить сразу все однотипные строки, нужным текстом. Получается своего рода пост процесс.
Но сие лишь предположение.

Что до формирования маркера взамен типа в ходе конвертации OSM в MP?! Надо подумать. Но ведь кто то уже это делает. И наверное есть профильная тема.

В .мр уже утерян класс дороги “круговое движение”, он там везде 0х0с. А круги встречаются и на primary, и на secondary, и на других тоже. Втыкание маркера нужно делать на этапе конвертирования.
Хотя, я тут подумал - прямо в .osm наверное можно тоже. Буду дальше думать…

А что Type=0x0c отвечает не только за круги?

Я понял проблема именно в конфигах для Ситигида, у которого полиш немного опциональный. Т.е. ему нужно для круга оставить тип дороги по-умолчанию (т.е. не менять на 0x0c), а воткнуть дополнительное поле CGRoadMarker=1

По-моему произвольные дополнительные поля добавляются конфигами, но я уже года 2 как не конвертировал (а под ситигид и того больше), всё забыл.

Совершенно верно.

Если верить докам, то 0х0с в полише - это “круговое движение”. Но круги бывают на разных HW - и хочется чтобы они были одного цвета с дорогой. Чистая эстетика, и ничего более.

А такое вдруг не сработает?


      CGRoadMarker:
#        selector: if
#        condition: junction = roundabout
#        then: 1

Это в какой файл конфига нужно вставлять?
Я пробовал подобную конструкцию вставлять в ways-roads-common.yml, но он все три строки вписал в .мр как есть :slight_smile:
Селектор не сработал.

- наличие в начале строки означает, что строка закомментирована. Значит не в работе - и является пояснением (текстом).

KonTur - в вашем случае (примере) тип then: 0x0c не может быть создан, нет описания, есть заготовка возможного процесса?! Ищите, где то в конфиге ещё прописаны указания на создание типа then: 0x0c. Возможно и в другом файле.
freeExec - аналогично, рабочая часть закомментрована. Надо убрать “#”.

P.S. простите мой не профессиональный взгляд.

Это я знаю, и в конфиг вставлял естественно без #

Я мучаю конфиги из папки CityGuide, скачанные вместе с конвертером по ссылкам в вики. Там в ways-roads-common.yml эта конструкция работает, все roundabout в результирующем .мр имеют 0х0с

Посмотрите ещё конфиг для Garmin MPC, там, похоже, есть пример как добавлять произвольную запись в полиш

settings-mpc.yml

road:
  CNTRL_ACC:
    selector: if
    condition:
      or:
          - highway = motorway
          - motorroad = yes|1|true
    then: 1

  IS_TUNNEL:
    selector: if
    condition: tunnel = yes|1|true
    then: 1

  IS_LGL_SPD: 1


и т.д.

О! Спасибо, посмотрю. Вроде по всем имеющимся конфигам лазал - а в этом видно просто не понял, что произвольная запись делается. Сказывается неопытность в программинге.

Спасибо большое, коллеги chnav, White_54, freeExec !
Все получилось как хотелось. Заодно и LegalSpeed заработал :slight_smile:

А можно еще один вопрос задать? К тем, кто конвертирует в карты для навигаторов.
Как лучше Грецию делать - выдергивать name:en (а их там может и не быть) или транслитерацию делать с греческого в латиницу?

Кирилл вроде делал через name:en и транслитерацию при его отсутствии:
http://forum.probki.net/topic/7973-%D0%B8%D1%89%D1%83-%D0%BF%D0%BE%D0%B4%D1%80%D0%BE%D0%B1%D0%BD%D1%83%D1%8E-%D0%BA%D0%B0%D1%80%D1%82%D1%83-%D0%B3%D1%80%D0%B5%D1%86%D0%B8%D0%B8/
http://forum.probki.net/topic/11375-%D0%BA%D0%B0%D1%80%D1%82%D0%B0-%D0%B3%D1%80%D0%B5%D1%86%D0%B8%D0%B8/

Спасибо, буду учиться дальше.

Можно попробовать перевод:
Тянуть нужный язык, а в случае отсутствия его тянуть умолчание с переводом на нужный через Переводчик Яндекса.
https://tech.yandex.ru/translate/ - здесь надо почитать и получить ключ
https://translate.yandex.ru/developers - или здесь, уже и не помню
Скажем это будет target_lang: ru и default_lang: el, а ключик от Яндекса через --lt-yatr-key @имяфайласключем.key
Тогда вроде как вытягиваются имена на Русском. А где вытягивать нечего, потянется Греческий с переводом на Русский через Яндекс.
Тоже самое можно сделать на Английский манер.
https://forum.openstreetmap.org/viewtopic.php?pid=622181#p622181 - можно и ещё поиском по теме наскрести…

В первом приближении, опция --translit выдала приемлимый для меня результат. Спасибо за подсказки.

Следующий дурацкий вопрос:
Например, есть гостиница, у которой прописано name (на языке страны), name:en и name:ru.
Можно ли в .мр занести три ПОИ с одними координатами, но разными Label?
Подскажите направление, куда копать, пожалуйста.

Добавить в taglist конфига settings-mp.yml строки

label_en:        [ 'name:en' ]
label_:          [ 'name:ru' ]

а в nodes-common.yml

- condition:
    - tourism = hotel
    - name:en = *
  action:
    - action: write_poi
      type: 0x2B01
      contacts: yes
      name: label_en

- condition:
    - tourism = hotel
    - name:ru = *
  action:
    - action: write_poi
      type: 0x2B01
      contacts: yes
      name: label_ru

Можно и поизящнее конструкцию соорудить.
Но зачем?!

Спасибо, завтра попробую.
А вот :slight_smile: захотелось. Моих мозгов хватило на создание 3-х конфигов, и соответственно тройного прогона конвертера. Первый - обычный, с полным конфигом делает .мр, второй - обрабатывает пои с английским именем и доливает в .мр, третий - русские пои.
Цель - по возможности иметь понятные пои, а не хрень всякую на финском (или венгерском).