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

Вроде как заработало.

они там почему-то CVS настроили вместо SVN. и как переключить, я не понял
пускай уж на гугле живёт

Хотелось бы узнать, есть ли какие-нибудь противопоказания для nodeid=osm_node_id и roadid=osm_way_id ?

liosha,
Спасибо за конвертер! Но очень не хватает нумерации домов.
Синтаксис addr:city, addr:housename, addr:housenumber, addr:postcode, addr:street присутствует в josm, т.е. его можно смело брать за основу. Пробовал сделать свой конвертер, но так роутинг и не поддался. Добавка нескольких строк в ваш конвертер:

       $addr_city  = convert_string ($2)              if ($1 eq "addr:city");
       $addr_housenumber = convert_string ($2)        if ($1 eq "addr:housenumber");
       $addr_street = convert_string ($2)             if ($1 eq "addr:street");

и

           print  "${d}HouseNumber=$addr_housenumber\n"                if ($addr_housenumber);
           print  "${d}StreetDesc=$addr_street\n"                      if ($addr_street);
           print  "${d}CityIdx=1\n"                                    if ($addr_city);

Помогла добавить адресный поиск для одного города, но приходится дописывать в header.cfg индекс и название города, что конечно даже для конвертации области не удобно. Задача видится просто: 1. Проиндексировать все города встреченные в addr:city, и добавить индекс в *.mp сразу после header. При встрече тега addr:city, заменять собственно имя города на индекс. Можно будет это добавить в конвертер. А то perl для меня как китайская азбука.:smiley:

Вообще-то в cgpsmapper-е от такой схемы индексации давно отказались.
Там просто прописывают у объекта поля

CityName=city name
RegionName=region name
CountryName=country name

и маппер уже сам всё индексирует.

Так есть ли смысл делать с индексом?

Не знал. Я ориентируюсь на http://v-dorogu.narod.ru/article/polishformat.htm. А индексную схему cgpsmapper-е кушает? Попробовал схему без индексации в gpsmapedit - не воспринимает. А соответственно конвертация в навитель и руссу не получится.:frowning:

мда, это плохо… кушать-то он её кушает, но с ней возни больше.
отстал о жизни мапедит…

а про формат маппера лучше в самом маппере смотреть:
http://cgpsmapper.com/manual.htm
http://gpsmapsearch.com/osm/Test_img.mp

liosha,

Дык, может два варианта сделать?

дело ещё в том, что для гармина такая адресация бесполезна: там нет индексации зданий
там индексируются только участки улиц
а как я уже говорил, я ориентируюсь именно на гармин, я не использую навител/руссы/etc

поэтому первый вопрос: как для улицы определить город, к которому она относится?

Нда, посмотрел - это уже обсуждалось, только добавлять дополнительный тэг.
Чего не пойму, так если этого нет в gpsmapedit , то с его помощью не получится сделать адресный поиск для гармина? Как это вообще тогда делается?

очень даже получается
http://4pda.ru/forum/index.php?showtopic=70509&view=findpost&p=2032230
(нужно зарегистрироваться)

ó ìàïïåðà åñòü îøèáêà: R005:Maximum allowed NODID value is 1048575
ñ RoadID íàâåðíîå òî æå ñàìîå

20 ??? 0xfffff. ? ??? ??? ?? ??? “???” ?

äà, ñëåäèò
ñîáñòâåííî, âîò ïðîñòåíüêèé “ïåðåíóìåðîâûâàòåëü” :wink:

my $cnode = 1;
my %nodes;

my $croad = 1;
my %roads;

while (<>) {
    s/^RoadID=(\d+)/sprintf "RoadID=%d", reroad($1)/ie;
    s/^Nod(\d+)=(\d+),(\d+),(\d+)/sprintf "Nod$1=$2,%d,$4", renode($3)/ie;

    s/^Nod=(\d+)/sprintf "Nod=%d", renode($1)/ie;
    s/^TraffPoints=(\d+),(\d+),(\d+)/sprintf "TraffPoints=%d,%d,%d", renode($1), renode($2), renode($3)/ie;
    s/^TraffRoads=(\d+),(\d+)/sprintf "TraffRoads=%d,%d", reroad($1), reroad($2)/ie;

    print;
}

sub renode {    
    if (!$nodes{$_[0]})  {  $nodes{$_[0]} = $cnode++;  }
    return $nodes{$_[0]};
}
sub reroad {    
    if (!$roads{$_[0]})  {  $roads{$_[0]} = $croad++;  }
    return $roads{$_[0]};
}

Ok, ???. ? ??? ? ??? ??? ?? ???, ? ??? ?? ?? ??? ??? ?? ???, ? ??? ??? ? ?? ??? :wink:

Ещё один пример, как НЕ НАДО рисовать карты :confused:

Иркутск:

В список для ежедневной сборки добавлены Псков и Карелия
http://gpsmapsearch.com/osm/mp

скоро будет индексация улиц :sunglasses:
как выяснилось, ничего особо сложного там нет
используется схема
is_in=City,Region,Country
is_in=City,Country
is_in=City

единственная проблема - города, которые есть в is_in, но нет на самой карте, придётся как-то добавлять

Теперь сконвертированные карты выкладываются и адресным поиском.
Глюки есть, но пока сложно сказать, кто виноват: конвертер или маппер.
http://gpsmapsearch.com/osm/mp/

Версия 0.60
http://gpsmapsearch.com/osm/osm2mp_v060.zip

  • добавлен наконец поиск по улицам (из тега is_in)
  • добавлены опции командной строки
  • добавлен список приоритетных тегов для Label
  • разные мелкие фиксы