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

На ТЗ в подписи никто не ссылался :slight_smile:

Дороги выделяются как раз линией. При клике по линии у меня в ФФ josm открывается четко. Завтра проверю на других браузерах. Описание ошибки прикручу.

Центровку сделаю.

затупил

Ambush, что поделать, список задач какое-то время не обновлялся.
Но ничего, обновлю его к Конференции)

Нужны уточнения

  1. Есть ли возможность по RouteParam или иначе сориентироваться, какой тип highway был в исходном osm, включая _link/ не _link?

  2. Что означает “сохраниться рутинг”?
    Можно ли объединять сегменты дорог разного класса/скорости в один (если это получается по геометрии, например одиночная цепочка дорог между узлами роутингового графа) и можно ли объединять разные направления в один сегмент, если они вдруг оказались разного класса/скорости?
    Если да, то что делать с классом и скоростью - максимизировать/минимизировать/усреднять/по матрице слияния и т.п?
    Если нет, нужно ли сохранять градации по прочим параметрам из RouteParam (toll,denied_*)?
    [UPD] Нужно ли сохранять однонаправленность некоторых дорог, если вдруг что-то оказалось однонаправленным? (на крупном масштабе такого вроде как нет, а вот улицы в городе вполне бывают)

И совет (это уже ко всем)

  1. Как вы думаете, является ли “клубок” *_link-ов хорошим индикатором сложной развязки? Можно ли считать, что все *_link-и нужно стянуть в точки или в каких-то случаях может быть длинный *_link который нельзя стягивать?

Ммм … А текущий исходный код где можно увидеть? И структуру базы неплохо было бы посмотреть.

https://github.com/openstreetmap/openstreetmap-website
http://wiki.openstreetmap.org/wiki/Rails_port/Database_schema

Жаль … с рельсами не работал :frowning:

Что-то мне кажется, что стягивать нужно не в точку, а в отрезок. А с отрезком поступать уже в соответствии с выбранным масштабом, - возможно, стягивать в точку.

Постановка задачи - развязки стянуть в точки.

Постараюсь ответить, как смогу. Если бы я мог строго формализовать эту задачу, наверно она была бы уже решена :slight_smile:

Да, можно. Перед секцией в мп есть комментарий, в котором сидит исходный тег. (это стандартная выдача osm2mp.pl)

; WayID = 145406054:0
; highway = tertiary
[POLYLINE]
Type=0x05
...

развязки можно узнать и по типу в мп - 0x08.

То и значит. Карта должна быть пригодной для рутинга. Например, можно строить маршруты между городами.

Да, можно объединять. Что делать со скоростью - усреднять, устанавливая разумное значение скорости для данного класса дороги.

Можно не париться, для начала. Тем не менее, меня интересует автомобильная карта. :slight_smile:

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

Линк - это однозначно развязка, которую нужно стягивать. Конечно, в исходных данных может быть ошибочно присвоенный *_link, но я думаю это на задачу не влияет.

Нет, именно в точку.

Вот была например развязка МКАД и Ярославского шоссе:
http://www.openstreetmap.org/?lat=55.88275&lon=37.72682&zoom=15&layers=M

А получиться должен простой перекресток:
http://peirce.gis-lab.ru/img/gen_junk.png

а на выходе должен получится граф с запретами или без?
если двухвейную дорогу преобразовать в одновейную, то могут быть запрещенные повоторы
http://s018.radikal.ru/i525/1210/6a/13ebc194290b.png

Zkir,

Постараюсь ответить, как смогу. Если бы я мог строго формализовать эту задачу, наверно она была бы уже решена :slight_smile:
Ну я не придираюсь, мне уже надо что-то в алгоритм закладывать :slight_smile:

(это стандартная выдача osm2mp.pl)
На это я и рассчитывал. Just as planned :slight_smile:

Линк - это однозначно развязка, которую нужно стягивать. Конечно, в исходных данных может быть ошибочно присвоенный *_link, но я думаю это на задачу не влияет.
Лады, буду стягивать. В крайнем случае добавим проверку длины _link.

Это хорошее замечание. Конечно, я намешал условий из нескольких задач. :slight_smile:

Если брать строго формальное преобразование двухвеек в одновейки, то могут возникнуть запреты. Если посмотреть на цель- построение обзорной карты России (см. задачу 5), то в ней никаких запретов быть не может. Если вдруг возникли запреты, это значит что уровень генерализации выбран неверно.

А можно центральную часть этого рисунка более крупно? Не совсем понятно, что именно должно получиться.

Мне кажется, первое, что надо сделать, это удостовериться, что те дороги, которые связаны link’ом, - пересекаются. Желательно поблизости (уже на этом этапе можно сравнивать расстояние от link’а до точки пересечения и с длиной самого линка).
А дальше - определение точки пересечения, включение ее в граф (вместе со всеми необходимыми преобразованиями путей - ребер дорожного графа) и удаление линков.

Одна точка там. Грубо говоря получиться должно 2-4 вея+1нода где они пересекаются/стыкуются.

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

Извините, если эта мысль уже звучала, но удаление всех _link, стягивание двухвеек в одновейки и принудительное пересечение разных уровней не решают обсуждаемую проблему?

Не совсем так. Принудительные пересечения нужно делать там где есть развязки. Там где дороги пересекаются в разных уровнях, но нет развязки, принудительное пересечение делать НЕ нужно.

http://www.openstreetmap.org/?lat=56.27037&lon=38.19361&zoom=16&layers=M
Вот такое типичное место - пересечение тут не нужно.

Ну, и любую мысль еще нужно воплотить в коде.