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

я добавлял отдельный writer, чтобы формат соответствовал описанию POLY в вики

getbound.pl -om poly-strict <...>

Да, я уже нашел, скачал и опробовал. Большое спасибо за эффективную работу.

Вопрос по mp-postprocess.pl
Запускаю строкой perl mp-postprocess.pl RU-KL.mp
Ругается
Use of uninitialized value $object in string eq at mp-postprocess.pl line 99, <$in> line 1.
и портит итоговый файл
Было RegionName=Республика Калмыкия Городовиковский район
Стало RegionName=Республика Калмыкияовиковский р-н
Что можно сделать для исправления?

В программе есть такая строка:
$line =~ s/ город//i;
Я у себя ее отключил, так как много где встречается слово “город” в названиях, и вылезает бяка.

Спасибо большое!
На 99 строку по прежнему ругается, но портить названия перестал. Попробую в батник воткнуть…

Кто владеет языками :slight_smile: подскажите пожалуйста, в каком месте в osm2mp находится вот такое преобразование:
В ОСМ улица подписана как “Цветочная улица (Советский район)”. osm2mp преобразует название как “Цветочная улица /Советский район/”.
Мне надо чтобы вместо прямого слеша ставился обратный.

Заранее спасибо.

А где в мр-файле такая запись?
У меня в мр-файле нет никаких разделителей.

А зачем в OSM район города указывать в name улицы? Для этого есть place=suburb.
Разве не так?

Относительно скобок и слешей - они могут выполнять двойные функции = собственные и программные. Один из слешей как раз и выполняет функцию определения что за ним следует = обычный знак или программный элемент.
Ваша проблема скорее всего в файле пост процесса. Я тоже далек от программирования. Как смог , извините.

Можно почитать https://www.opennet.ru/base/dev/pcre_perl_intro.txt.html

Вам повезло. Вот два примера:
https://www.openstreetmap.org/way/148882551
https://www.openstreetmap.org/way/533487528

Я не знаю, зачем это сделано так, но в результате в .mp получается вместо () - //. А мне надо чтобы было \

Описанное получается до постпроцессинга. Сразу после завершения osm2mp. В связи с чем и возник мой вопрос.

Тогда надо больше конкретики. Это тот объект?
https://www.openstreetmap.org/way/148882551#map=11/56.3056/44.0036

Вы что то меняли в ozm2mp?

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

А как это выглядит. Могли бы вы привести цитату из файла *.mp?
И дайте ссылку на то как это в OSM.
У себя не могу воспроизвести то что происходит у вас.

; WayID = 155408702
; building = yes
[POLYGON]
Data0=(56.3042604,43.9941972),(56.3042312,43.9940442),(56.3043521,43.9939693),(56.3043813,43.9941223),(56.3042604,43.9941972)
EndLevel=1
Type=0x13
Label=13
CityName=Нижний Новгород
Floors=1
HouseNumber=13
RegionName=Нижегородская область городской округ Нижний Новгород
StreetDesc=Цветочная ул. /Советский район/
[END]

Ну так это после постпроцесса - mp-postprocess.pl. Что и говорю. Это не osm2mp делает, а постпроцесс.
Вспоминайте что правили в mp-postprocess.pl?

Вероятнее всего правили эту строку:

    [ 'ул(?:|ица)'              =>  'ул.'    ],

К вопросу, строку не удалял, а сделал так (пробел с обеих сторон):

    $line =~ s/ город //i;

Я уже писал, что это в .мр сразу после osm2mp. постпроцесса у меня пока нет. что видно по несокращенным области и району

А почему у вас вместо “улица” - “ул.”?
В OSM сокращения нет - https://www.openstreetmap.org/way/155408702
Сокращения это как раз опция постпроцесса. Вы правы. У вас его нет, а сокращение есть. Странно.
Я не знаю чем вам помочь. Я просто помогаю вам вспомнить где и что вы правили. Другой помощи пока все равно нет.

улица сокращается пока другой тулзой. самописной от Zkir

Так это тоже постпроцесс. В этой программе и искать надо. Она виновница на 99%.

Всё понятно… Это результат неверного обозначения теми, кто вносил (или правил) объект (улицу).
Теперь только либо исправлять в OSM, либо править в МР-файле (что проще) текстовым редактором (опция замены).

*PS: скачайте и попробуйте сейча эти улицы. *

Вы исправили не тот объект. Или точно не все объекты. Он не единственный - Цветочная улица (Советский район) 13. Кроме того там есть ещё аналогичная адресация по Приокскому району - Цветочная улица (Приокский район) 13. Там не только на самой улице, но и на домах в addr:street район прописан.
https://www.openstreetmap.org/way/627592743
https://www.openstreetmap.org/way/155408702
Видимо местные так решили разнести одноименные улицы одного города.
Да и вопрос был про другое - вместо (район) у пользователя получается /район/. Человек вместо /район/ хочет \район. Я так понял вопрос.