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

Полностью это выглядит так:

  • level: city
    tags: [ city, town, hamlet ]
    area_condition:
    or:
    - place = city|town|village|hamlet|allotments|isolated_dwelling
    - and:
    - type = multipolygon|boundary
    - boundary = administrative
    - admin_level = 8

Как работает логика (приоритетность) между tags: [ city, town, hamlet ] и/или area_condition:
Эти запросы могут быть использованы самостоятельно (раздельно)?
Касательно самостоятельности tags: - пример имеется, а вот area_condition: - без строки tags: будет работать?

Будет. Про приоритетность уже не помню

При использовании ключа --textfilter=PrepareCP1251 в .mp файле всё равно остаются следующие записи:


\N{INFINITY}
\N{FIGURE DASH}
\N{COMBINING ACUTE ACCENT}
\N{SUPERSCRIPT THREE}
\N{ZERO WIDTH NO-BREAK SPACE}
\N{FOUR-PER-EM SPACE}
\N{MINUS SIGN}
\N{LEFT-TO-RIGHT MARK}
\N{REPLACEMENT CHARACTER}
\N{RIGHTWARDS ARROW}
\N{DOUBLE PRIME}
\N{NARROW NO-BREAK SPACE}

Их как то можно убирать или автоматически менять на символы из 1251? Например в постпроцессоре?
PS: Пробовал вот так, но не меняет:


    $line =~ s/"\\N{INFINITY}\n"/ /;
    $line =~ s/"\\N{FIGURE DASH}\n"/ /;
    $line =~ s/"\\N{COMBINING ACUTE ACCENT}\n"/ /;
    $line =~ s/"\\N{SUPERSCRIPT THREE}\n"//;
    $line =~ s/"\\N{ZERO WIDTH NO-BREAK SPACE}\n"/ /;
    $line =~ s/"\\N{FOUR-PER-EM SPACE}\n"/ /;
    $line =~ s/"\\N{MINUS SIGN}\n"/-/;
    $line =~ s/"\\N{LEFT-TO-RIGHT MARK}\n"/ /;
    $line =~ s/"\\N{REPLACEMENT CHARACTER}\n"/ /;
    $line =~ s/"\\N{RIGHTWARDS ARROW}\n"/ /;
    $line =~ s/"\\N{DOUBLE PRIME}\n"/ /;
    $line =~ s/"\\N{NARROW NO-BREAK SPACE}\n"/ /;

Тогда уж

$line =~ s/\\N{INFINITY}/ /;

А вообще признаю, что вываливать названия символов было плохой идеей; надо будет убрать.

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

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

Столкнулась с такой проблемой при конвертации файлов из osm в mp.
У меня есть два смежных файла osm, у которых на совместной границе находятся разрезанные сегменты дорог с нодами, имеющими характеристику garmin:extnode=yes. После конвертации скриптом osm2mp у этих нодов не записывается эта характеристика, то есть в результате роутинг на границе рвется. Как можно решить эту проблему?

Проверил на своей области, когда-то давно ставил эти ноды для совместимости с другими картами. Конвертируются как положено, в мапедите стоит галочка extnode.

chnav, я сама вырезала из общих данных 2 части, которые мне нужны, то есть никаких специально поставленных нодов там нет. В результате на границе двух частей получились сегменты с крайними нодами, у которых стоит характеристика extnode, но после конвертации эта характеристика утрачивается, в этом и суть проблемы.

Svetika,
давай тестовый пример + id нодов с неправильным поведением.

osm-файлы:
https://drive.google.com/file/d/0B8yBFpw8lTJucDFRZVpBY21lRkE/view

сконвертированные mp-файлы:
https://drive.google.com/file/d/0B8yBFpw8lTJuQmR1Uk9MeEV2UjQ/view

Ноды для примера:
файл 1:
RoadID=450
Nod21=323

файл 2:
RoadID=242
Nod0=499

Эти ноды отсутствует в ОСМ, видимо созданы при обрезке и номер у них отрицательный. Может в этом проблема.

Мне уже интересно откуда там взялся тег garmin:extnode. Каким инструментом производилась обрезка ?

<osm version="0.6" generator="Navikey OSM splitter 1.06.32">

Берём 1.osm, конвертируем. Смотрим первую попавшуюся ноду с тегом.


    <node id="10000000000" version="1" timestamp="2015-08-20T14:38:17Z" lat="53.1614541" lon="34.7926202">
        <tag k="garmin:extnode" v="yes"/>
    </node>

Вот она в mp, последняя в списке. Вроде всё как надо


; WayID = 74117433:0
; highway = trunk
; surface = asphalt
[POLYLINE]
Data0=(53.1985302,34.5259049),(53.1984973,34.5261215),(53.1982801,34.5275792),(53.1982414,34.5278407),(53.1980735,34.5289710),(53.1976724,34.5316724),(53.1971469,34.5352303),(53.1968892,34.5370239),(53.1966312,34.5387686),(53.1960524,34.5426018),(53.1955892,34.5457200),(53.1955028,34.5463152),(53.1947318,34.5514358),(53.1937157,34.5582792),(53.1926214,34.5657309),(53.1919427,34.5703329),(53.1914561,34.5736433),(53.1912619,34.5749639),(53.1906738,34.5790489),(53.1905366,34.5800102),(53.1904794,34.5804098),(53.1895349,34.5869271),(53.1885611,34.5936298),(53.1879009,34.5982858),(53.1876256,34.6001601),(53.1872467,34.6027399),(53.1869308,34.6049056),(53.1866800,34.6067007),(53.1862706,34.6095831),(53.1842984,34.6234128),(53.1837302,34.6273952),(53.1834788,34.6291572),(53.1815681,34.6433429),(53.1814313,34.6443563),(53.1802816,34.6528857),(53.1782048,34.6687070),(53.1773734,34.6747385),(53.1742074,34.6975638),(53.1689339,34.7367934),(53.1667392,34.7534134),(53.1648127,34.7675484),(53.1639737,34.7743466),(53.1629798,34.7813377),(53.1619263,34.7891028),(53.1614541,34.7926202)
RoadID=351
RouteParams=5,4,0,0,0,0,0,0,0,0,0,0
EndLevel=4
Type=0x01
Label=~[0x04]Р120
Nod0=0,669,0
Nod1=2,381,0
Nod2=3,85,0
Nod3=4,233,0
Nod4=11,468,0
Nod5=16,848,0
Nod6=18,262,0
Nod7=20,653,0
Nod8=23,859,0
Nod9=24,955,0
Nod10=25,70,0
Nod11=26,93,0
Nod12=27,885,0
Nod13=28,407,0
Nod14=30,602,0
Nod15=31,890,0
Nod16=32,493,0
Nod17=33,409,0
Nod18=34,371,0
Nod19=37,429,0
Nod20=38,470,0
Nod21=44,872,1
[END]

liosha, я конвертирую вашим скриптом osm2mp.pl, взятым отсюда:

https://github.com/liosha/osm2mp

и получаю в mp-файле, что этот нод не внешний.

В каком месте я могу ошибаться, я не понимаю…

А в конфигах есть запись, что такие ноды надо делать внешними?
https://github.com/liosha/osm2mp/blob/master/cfg/polish-mp/nodes-common.yml#L14

Кажется, я поняла, в чем проблема. Я закомментила в конфиге файл настроек для нодов.

Спасибо большое за такую детальную помощь и извините за невнимательность.

Привет Liosha,

Когда я делаю конвертацию карта на Русском язике. Как я могу сделат по Англискыии?

Теперь я понимаю иностранцев когда мы пишем через гуглтранслейт :slight_smile:


--namelist <key>=<list>
--nametaglist=<list>

Всем привет!

Есть проблема с определением скорости в LegalSpeed поле, а именно проблема с неявными значениями скорости типа RU:rural и т.п. (вот уже фидбэк http://forum.openstreetmap.org/viewtopic.php?pid=577482#p577482)
Сейчас это работает так:


  LegalSpeed:
    selector: if
    condition: maxspeed = \d.*
    then: %maxspeed
    else:
      selector: if
      condition: highway = motorway
      then: 110
    else:
      selector: if
      condition:
       or:
        - highway = living_street
        - living_street = yes
      then: 20
    else:
      selector: if
    else:
      selector: if
      condition: inside_city
      then: 60
    else: 90

и судя по всему в некоторых ситуациях дорога оказывается в населенном пункте по мнению конвертера и мы получаем 60 кмч…
но даже это не главное т.к. тэги есть для разных стран и ограничения (конкретные значения скорости в цифрах) могут отличаться DE:rural и RU:rural.
Видится какой то справочник с этими значениями - для корректной работы…
Вот у гуру хотел спросить, как это можно реализовать?
Или подскажите верный путь решения :wink:
Спасибо!