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

KonTur
White_54

Ребята, не смейтесь, на свой сервак поставил… Windows 10. У него есть WSL, читай Ubuntu 12.04 из коробки. Все инструкции из нашей вики, касающиеся Ubuntu, работают 1:1, нулевой оверлоад по сравнению с портированными программами и тем более виртуальными машинами. Цена вопроса 1 Гб на диске.

Чтобы поставить Windows10 - надо ее купить. Мне своих денег жалко (компьютер конторский).
Как будет возможность - попробую.

поставь virtualbox, прекрасный виртуальник, даже без сильных потерь в мощности.

Зачем? Пока под виндой все потихоньку налаживается.
Да и не хочется в юниксы влезать…

Старый (древний) ПК с 2 ядрами и 2ГБ оперативки на Ubuntu (32), опережает в обработке (osm в mp) ноутбук с 4 ГБ оперативки и 4 ядрами на Windows 10/7 (64). Всё порываюсь поставить на ноутбук Ubuntu второй системой. Они не плохо уживается друг с другом. Никаких виртуальных машин, никаких вживлений одного в другое.

Я уже писал - это офисный комп, который также используют для офисных дел. Он просто сейчас чаще свободен (и я его под эксперименты задействую).

Подскажите пожалуйста, как можно в случае junction=roundabout добавить нестандартный атрибут к этой дороге в .mp ?
Пытался сам разобраться, но так как не программист ни разу - нифига не вышло.
Заранее спасибо.

Уточните вопрос. Что значит нестандартный атрибут? Какой атрибут? Какова цель добавления?
Вы хотите каждый раз править *.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


и т.д.

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