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

на надо же его какой-то линией прорисовать…

Тогда я бы добавил и ноды для единообразия.

а ноды-то там зачем??
можно, в принципе, какой-нть другой линией прорисовывать, только какой?

Да, пожалуй, только граф будут засорять.

Если брать нероутинговые, то они только на большом зуме будут видны :frowning:

Переписал скрипт заново, почти с нуля: то, что было раньше, уже невозможно было развивать.
По функционалу пока такой же, что и был.
Сейчас пытаюсь сделать соединение порезанных кусков дороги в одну.

Отсюда вопрос: по каким правилам эти самые куски соединять? Идеи будут? :slight_smile:

Опции командной строки типа id, name, charset, output_format (.osm, .mp, .mif/.mid) бы не помешали.

Число примыкающих сегментов для удаляемого нода =2 и полное совпадение отсортированного листа tag=value
(created_by нужно наверное игнорировать)

не совсем так, имхо
совпадение нужно только по “значимым” для результата тегам
например, дорога по мосту в гармине не выделяется, а в осм она при этом разбивается на три участка
вот их бы тоже надо объединять

для москвы:

...
Loading roads...          9747 loaded
Joining roads...          1770 joined

Согласен. Тогда надо только добавить функцию трансформирующую тэги из “оригинального ОСМ” набора
в набор “результата”, который может быть и “оригинальным ОСМ”. И потом смотреть совпадение тэгов “результата” (hash/category).

That output looks really promising :smiley:

ещё один вариант запретов поворотов
http://wiki.openstreetmap.org/index.php/Relation:xrestriction

Я согласен с
http://lists.openstreetmap.org/pipermail/talk/2008-June/027669.html

Дороги-то, хек бы с ними. А вот береговые линии очень надо! А то морей на картах нет, тока на отрендеренных.
Не сложно будет такое сделать?

пока над береговыми линиями сильно не задумывался
но с ходу красивого решения не вижу

Ну можно концевые узлы каждого из вхождений с нужным тегом проверять на равенство концевым узлам уже просмотренных нужных, хранящимся во временном буфере (?). При совпадении - дописываем к найденной.
Как-то так… А может и низя… Я особо-то не силен… :frowning:

да нет, соединить-то линии в одну не проблема
а вот как из линии полигон сделать?
скорее всего, вопрос можно будет решить только вместе с обрезкой карты по границе

Тестирую свежую версию…

Украина: http://4pda.ru/forum/attach/1785612/ukraine_osm_080706.rar
Белоруссия: http://4pda.ru/forum/attach/1785575/belarus_osm_080706.mp.rar

Кстати, кто-то залил всю Белоруссию. Возможно, из какого-то около-руссовского источника…

Loading nodes...          1230213 loaded, 23438 POIs dumped
Loading relations...      1 multipolygons
Loading holes...          10 loaded
Loading roads...          49960 loaded, 30973 lines and 16961 polygons dumped
Joining roads...          15597 joined
Detecting road nodes...   73669 found
Splitting roads...        234 self-intersections, 7 long roads
Fixing close nodes...     46 pairs fixed
Writing roads...          34604 written
All done!!

По-моему это не очень хорошая идея - заливать данные автоматически без тщательного тестирования.
Кто залил - легко установить:
http://www.openstreetmap.org/user/wildMan/diary

Теперь в Белоруссии дороги имеют какую-то странную нумерацию, например
~[0x02]Р107

~[0x02] - это гарминовский/навителовский спецсимвол, чтобы номер дороги в квадратике рисовался

Я делаю либо вручную мапедитом, а вообще имею запасной вариант в виде конфига для мп2мп, который использую в первую очередь для нормального прописывания адресов и возможности присваивания типа объекту исходя из наличия нескольких атрибутов (например, разделения объектов религии на мусульманские и православные ).
Так вот там сделать из полилинии полигон - одна строчка.

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

Новая версия конвертера

  • код почти целиком переписан
  • добавлено объединение дорог
  • изменён алгоритм порезки дорог

http://garminmapsearch.com/osm/osm2mp_v050.zip

Дороги объединяются, если: а) конец одной дороги является началом другой, б) у них одинаковое имя, тип и параметры роутинга
Видимо, придётся ещё добавить условие, чтобы угол между ними тупой был, а то сейчас dual carriageway в точке схождения объединяется