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

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

какой именно csv?

Это только для начала, вот

$ ./scr-dupl < NOV-22052008.osm  | awk '{if ($1 != "DUPLBUG:") print }' | wc -l
221032
$ ./scr-dupl < NOV-22052008.osm  | awk '{if ($1 != "DUPLBUG:") print }' | sort | uniq | wc -l
220533

есть еще 499 дублированных сегментов (но это не только дороги, так что часть из них может быть
приемлема)

Который для mkgmap.

а я свой не делал, стандартным пользовался.

ok

Написал маленький скрипт для автозачистки rmdupl.
Кто-то похоже очень упорно по 5-6 раз кликал :slight_smile:

--- XXX1.osm    2008-05-23 00:53:35.000000000 +0400
+++ XXX2.osm    2008-05-23 00:56:30.000000000 +0400
-    <nd ref="253426719"/>
-    <nd ref="253426719"/>
-    <nd ref="253426356"/>
-    <nd ref="253426356"/>
-    <nd ref="253426356"/>
     <nd ref="253426356"/>
     <nd ref="253427443"/>
-    <nd ref="253427443"/>
-    <nd ref="253427051"/>
-    <nd ref="253427051"/>
-    <nd ref="253427051"/>
-    <nd ref="253427051"/>

Еще можно много что автоматически править: слишком близко расположенные ноды и т.п.

Какие будут предложения, как назначать RouteParams?
и из каких тегов брать информацию о запретах?

Из раздела Restrictions.
Односторонняя - oneway=yes.
Платная - toll=yes.
автомобилей - motorcar=no
автобусов - psv=no
пешеходов - foot=no
велосипедов - bicycle=no
грузовиков - hgv=no и goods=no.
служб доставки, возможно, goods=no.

Класс дороги.
0 - Residential/Alley/Unpaved/Track
1 - Rounabout/Collector
2 - Arterial/Other highway
3 - Principal highway
4 - Major highway/Ramp

Скоростные ограничения.
0 - 5 км/ч
1 - 20 км/ч
2 - 40 км/ч
3 - 60 км/ч
4 - 80 км/ч
5 - 90 км/ч
6 - 110 км/ч
7 - no limit

Таким образом класс дороги стоит выбирать из типа дороги. А скорость. Ну по умолчанию 60 для обычных дорог, 90 - для major highway, либо, если есть, из тэга maxspeed.

пока дефолты сделал такие:

highway         bridleway               r       0x16            0       1       0,1,0,0,0,1,1,1,1,0,0,1
highway         bus_guideway           
highway         construction           
highway         cycleway                r       0x16            0       1       0,1,0,0,0,1,1,1,1,0,0,1
highway         footway                 r       0x16            0       0       0,0,0,0,0,1,1,1,1,0,0,1
highway         living_street           r       0x07            0       1       0,1,0,0,0,0,0,0,0,0,0,0
highway         motorway                r       0x01            0       4       4,6,1,0,0,0,0,0,0,0,0,0     
highway         motorway_link           r       0x0B            0       2       4,3,1,0,0,0,0,0,0,0,0,0
highway         pedestrian              r       0x07            0       1       0,0,0,0,0,0,0,1,0,0,0,0            
highway         primary                 r       0x02            0       3       3,4,0,0,0,0,0,0,0,0,0,0
highway         primary_link            r       0x03            0       1       3,3,0,0,0,0,0,0,0,0,0,0
highway         residential             r       0x06            0       1       0,2,0,0,0,0,0,0,0,0,0,0
highway         secondary               r       0x04            0       2       2,3,0,0,0,0,0,0,0,0,0,0
highway         service                 r       0x07            0       0       0,1,0,0,0,0,0,0,0,0,0,0
highway         steps                   r       0x16            0       0       0,0,0,0,1,1,1,1,1,0,1,1
highway         tertiary                r       0x05            0       1       1,3,0,0,0,0,0,0,0,0,0,0
highway         track                   r       0x16            0       0       0,1,0,0,0,0,0,1,0,0,0,0
highway         trunk                   r       0x02            0       4       3,5,0,0,0,0,0,0,0,0,0,0
highway         trunk_link              r       0x03            0       2       3,3,0,0,0,0,0,0,0,0,0,0
highway         unclassified            r       0x06            0       1       1,2,0,0,0,0,0,0,0,0,0,0

highway         unsurfaced              r       0x0a            0       1       0,1,0,0,0,0,0,0,0,0,0,0

http://wiki.openstreetmap.org/index.php/Relations
запреты поворотов вроде бы как уже в списке принятых

This is a proposal for a set of tags and members making a Relation to represent a turn restriction

Таких дорог настолько мало, что их можно все пометить тэгом.

Вроде как в мире есть только 3-4 страны с такими дорогами ? :slight_smile:

Но это отношение, по крайней мере, находится в разделе “Established uses of Relations”. На мой взгляд, когда его вынесут на голосование, его полюбому заапрувят. Так что можно использовать отношение без боязни…

Вроде бы доделал назначение роутинговых параметров…
Попробую теперь довести до компиляции с роутингом хотя бы небольшой кусок территории вокруг дома.
Если получится - выложу конвертер :slight_smile:

Надо будет посмотреть, что делает вот этот скрипт:
http://trac.openstreetmap.org/browser/applications/utils/import/mp2osm/mp2osm_catmp.py
хотя не исключено, что он игнорирует запреты поворотов.

обнаружил баг: когда есть “вырожденные” дороги из одной точки, маппер вылетает по “access violation”
если их отфильтровывать, компиляция проходит, и роутинг в девайсе работает :sunglasses:

желающим потестить: http://garminmapsearch.com/osm/osm2mp.zip
конфиги лежат в http://garminmapsearch.com/osm/mp/
запускать osm2mp.pl in.osm > out.mp

Дорог из одной точки в “большом” СПб не обнаружил, зато есть вот такой топологический баг-кольцо,
где первый и последний нод совпадают:

 <way id='4454692' timestamp='2007-10-05T20:36:14Z'>
    <nd ref='25896343'/>
    <nd ref='25896344'/>
    <nd ref='25896345'/>
    <nd ref='25896346'/>
    <nd ref='25896343'/>
    <tag k='highway' v='residential'/>
  </way>

Надо разбираться, как быть…

Потестим :smiley:

такие “одноточечные” дороги при кропе появляются.
а кольца часто встречаются, буду думать, как бы их порезать…

osmxapi сливает ways целиком, при clip (по границам) надо будет ставить
флаги “внешних” нодов, иначе потом роутинг между областями не сделать.

Нацело поделить пополам, ничего лучшее в голову не приходит.

Нашел 55 “чистых” колец (т.е. прямо в непорезанном .osm)

дык вроде как в осм круги и полагается рисовать кольцами, не разрезая.