про два прохода - это я слишком оптимистично сказанул…
в osm у линий сначала задаётся список узлов, а тольго потом теги
поэтому проходов минимум три:
- среди всех линий выделить дороги
- на дорогах выделить узловые точки
- выдать данные в mp
про два прохода - это я слишком оптимистично сказанул…
в osm у линий сначала задаётся список узлов, а тольго потом теги
поэтому проходов минимум три:
пытаюсь выделить узловые точки для роутинга
столкнулся с такой штукой: см. WayID=17331468
интересно, как умудрились провести дорогу 20 раз (!) через одну и ту же точку??
2 liosha.
Нда. И в самом деле удивительная улица… Она рисовалась в потлахе 0.5 версии. А не в этой ли версии был глюк, когда создавались дубликаты объектов? Вполне возможно, что эта улица получилась объединением из двух версий одной улицы. А может и просто неудачно нарисовали…
P.S. Кстати, а ведь Red_rebel делал конвертер и у него уже была автогенерация роутингового графа. Может стоит выйти на него ради обмена опытом?
в общем, вот что пока получается… вечером выложу результат
до компиляции с роутингом ещё далеко - только в москве маппер выдал 500 самопересечений
может быть, потом сделаю фильтр
вопрос: а нужно ли узлы ставить на крайних точках дорог?
и кстати, если кому-то другие области нужно в MP, кроме Москвы, скажите нужный bbox
; WayID = 4871028
; highway=secondary
[POLYLINE]
Type=0x04
Data0=(55.7240971,37.3995234), (55.7237002,37.3999852), (55.7229563,37.4008194),
(55.7190745,37.4014631), (55.7184605,37.4015833), (55.7162607,37.4020382),
(55.7161122,37.4021405), (55.7160059,37.4022006)
EndLevel=2
Label=ул.Толбухина
RoadID=5
RouteParams=1,4,0,0,0,0,0,0,0,0,0,0
Nod1=0,8482
Nod2=2,710
Nod3=4,86
Nod4=7,11829
[END]
Тольятти-Самарская Лука-Самара.
52.99073889885542,52.99073889885542,53.7130505181914,50.669608742885536
а где здесь что?
надо бы как в osmxapi - minlon,minlat,maxlon,maxlat
Блин, и вправду что то я не то намутил. Еще раз.
48.80791241225375,52.91980721216367,50.66704512942237,53.71334191715539
добавил в список
текущий вариант всё там же: http://garminmapsearch.com/osm/mp/
Надо зачищать XML перед переработкой,
я вот ужо поправляю 455 ошибок прямо в ОСМ. И это без пересклейки ways в граф
$./scr-dupl < SPB-22052008.osm | grep DUPLBUG | wc -l
455
Вот кусок скрипта (найден в wiki для конвертации в mapinfo)
awk -F\' 'BEGIN{prev=-1}
{
if ($1 == " <way id=")
{
prev=-1;
way_id=$2;
}
if ($1 == " </way>")
{
prev=-1;
}
if ($1 == " <nd ref=")
{
if ($2 == prev) print "DUPLBUG: in line=",NR,"way_id=",way_id,"node1=",$2,"node2=",prev;
if (prev != -1) print prev,$2
prev=$2;
}
}'
.csv файл хотелось бы поиметь для
Есть еще сдвоенные сегменты и другие топологические ошибки.
Да, я бы ставил, так как это более логично.
ИМХО, надо создавать только двухнодовые сегменты нарезая (в этом примере) на
три части (порядковый номер внутри полилинии не поправлен для простоты)
RoadID=51
RouteParams=1,4,0,0,0,0,0,0,0,0,0,0
Nod1=0,8482
Nod2=2,710
[END]
RoadID=52
RouteParams=1,4,0,0,0,0,0,0,0,0,0,0
Nod1=2,710
Nod2=4,86
[END]
RoadID=53
RouteParams=1,4,0,0,0,0,0,0,0,0,0,0
Nod1=4,86
Nod2=7,11829
[END]
Такую структуру гораздо проще отладить, самопересечения тут в принципе исключены (после DUPLBUG)
так только последовательные дупы убрать можно, а они там и чередуются
какой именно 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 дублированных сегментов (но это не только дороги, так что часть из них может быть
приемлема)
usm78-gis:.csv файл хотелось бы поиметь
какой именно csv?
Который для mkgmap.
Который для mkgmap.
а я свой не делал, стандартным пользовался.
usm78-gis:Который для mkgmap.
а я свой не делал, стандартным пользовался.
ok
Написал маленький скрипт для автозачистки rmdupl.
Кто-то похоже очень упорно по 5-6 раз кликал
--- 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?
и из каких тегов брать информацию о запретах?
RouteParams=2,0,0,0,0,0,0,0,0,0,0,0
описывает класс дороги (0-7), ее скоростной тип (0-4; информации о том, как правильно интерпретировать эти цифры, у меня нет) и 10 бинарных признаков: односторонняя, платная, запрет для движения спасательных служб (?), служб доставки, автомобилей, автобусов, такси, пешеходов, велосипедов, грузовиков
Road class - Approximate number of roads
4 0.5% - 1.5%
3 1% - 3%
2 4% - 7%
1 10%-20%
0 60%-80%
Speed class - Speed attribute - Comment
7 128 km/h
6 108 km/h Can be adjusted in MapSource
5 93 km/h Can be adjusted in MapSource
4 72 km/h Can be adjusted in MapSource
3 56 km/h Can be adjusted in MapSource
2 40 km/h
1 20 km/h
0 8 km/h Ferry
и из каких тегов брать информацию о запретах?
Из раздела 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
запреты поворотов вроде бы как уже в списке принятых