You are not logged in.

#1 2011-05-20 10:06:19

leaf
Member
Registered: 2011-05-20
Posts: 10

Работа с графом дорог

Добрый день!
Никогда не приходилось работать с OSM. Но отлично ориентируюсь в Google Maps и Яндекс.Картах.
Ни в тех ни в других нет возможности получить доступ к графу дорог. Например, если я захочу написать свой алгоритм трассировки. Как мне получить координаты узлов графа (перекрестков) и тд. и тп.
Я так понимаю в OSM должна быть такая возможность. Буду рад, если расскажете мне какие классы API или сторонние библиотеки позволяют работать с графом. Может быть примеры есть.

Last edited by leaf (2011-05-20 10:07:04)

Offline

#2 2011-05-20 10:11:45

AlRight
Member
From: Perm, Russia
Registered: 2009-09-24
Posts: 861

Re: Работа с графом дорог

вот и пришел человек, который напишет ОСМ.Пробки
? smile

По теме грамотно не отвечу. Вот тут есть некоторые, из употребленных вами терминов http://wiki.openstreetmap.org/wiki/Xapi

Last edited by AlRight (2011-05-20 10:14:10)

Offline

#3 2011-05-20 10:15:06

liosha
Member
From: Moscow
Registered: 2008-03-04
Posts: 8,447
Website

Re: Работа с графом дорог

leaf wrote:

Как мне получить координаты узлов графа (перекрестков) и тд. и тп.

Хм... Точка, в которой пересекаются две дороги - и есть узел графа
http://wiki.openstreetmap.org/wiki/Routing

Offline

#4 2011-05-20 11:54:27

leaf
Member
Registered: 2011-05-20
Posts: 10

Re: Работа с графом дорог

что-то не работают там сервера. очень обнадеживающий статус указан "mostly overloaded and also out of date" smile
А по описанию очень похоже на то что пригодилось бы

Offline

#5 2011-05-20 11:59:30

dkiselev
Member
Registered: 2010-02-09
Posts: 3,364

Re: Работа с графом дорог

Апи для работы именно с графом дорог как такового - нет. Есть просто апи для osm. Можете глянуть как работает слой данных на главной.

Стандартное апи не столь приятное как xapi но работает вполне стабильно.

XAPI кстати на сервере рамблера еще поднят, (я только ссылку не помню можете натравить гугель на форум), месяц назад вполне работало и данные были актуальны.


mail: dkiselev@osm.me      skype: dmitry.v.kiselev
Open Street Maps are supreme! Exterminate all map forms! Exterminate! Exterminate!

Offline

#6 2011-05-20 12:11:36

leaf
Member
Registered: 2011-05-20
Posts: 10

Re: Работа с графом дорог

dkiselev wrote:

Апи для работы именно с графом дорог как такового - нет. Есть просто апи для osm.

Просто апи это имеется ввиду OpenLayers, я правильно понимаю? Т.е. с его помощью можно достать всю ту же самую инфу (node, ways и тд) что и даёт xapi ?

Offline

#7 2011-05-20 12:16:39

AkMeR
Member
From: Samara
Registered: 2008-02-27
Posts: 1,158

Re: Работа с графом дорог

leaf wrote:

Просто апи это имеется ввиду OpenLayers, я правильно понимаю?

Нет.

Offline

#8 2011-05-20 12:22:26

Ezhick
Member
From: Moscow
Registered: 2008-10-08
Posts: 2,508
Website

Re: Работа с графом дорог

leaf wrote:
dkiselev wrote:

Апи для работы именно с графом дорог как такового - нет. Есть просто апи для osm.

Просто апи это имеется ввиду OpenLayers, я правильно понимаю? Т.е. с его помощью можно достать всю ту же самую инфу (node, ways и тд) что и даёт xapi ?

Ой... OpenLayers это библиотека для отображения, а не АПИ.

Кстати, есть еще сторонние роутинговые приложения, использующие данные осм, зайдите на осм-вики в раздел Routing, там много полезного.

Offline

#9 2011-05-20 12:30:01

dkiselev
Member
Registered: 2010-02-09
Posts: 3,364

Re: Работа с графом дорог

leaf, вам скорее всего, все-равно придется писать некую обертку, т.к. на клиенте много не навычисляешь, а по сему наверное проще всего поднять локальную бд с данными (по России например) и уже по ней шуровать.


mail: dkiselev@osm.me      skype: dmitry.v.kiselev
Open Street Maps are supreme! Exterminate all map forms! Exterminate! Exterminate!

Offline

#10 2011-05-20 12:46:07

leaf
Member
Registered: 2011-05-20
Posts: 10

Re: Работа с графом дорог

ну как-то так и планирую делать. вопрос только в том как лучше импортировать российскую часть графа.
и ещё меня волнует вопрос с идентификаторами. карта ведь постоянно обновляется. и что происходит с идентификаторами узлов и путей при обновлении графа. было бы хорошо если бы они оставались неизменными. потому как для каждого элемента мне нужно будет хранить доп.информацию в своей БД.

Offline

#11 2011-05-20 12:47:22

Ezhick
Member
From: Moscow
Registered: 2008-10-08
Posts: 2,508
Website

Re: Работа с графом дорог

leaf - в вики, ключевые слова osmosis, osm2pgsql.

Offline

#12 2011-05-20 12:54:10

dkiselev
Member
Registered: 2010-02-09
Posts: 3,364

Re: Работа с графом дорог

Про локальную копию - Ezhick подсказал (кстати если его подонимать в личке он наверное и побольше расскажет smile )

Айдишники не совсем постоянны:

Заменили одновейную улицу 2хвейной (старую грохнули создали 2 новых) - естественно будет 2 новых объекта с новыми айдишниками никак не связанными с пердыдущими.
Распилили 1 улицу на 2 (3, 4, 5...) связанных куска - 1 объект остался прежним - сохранил айдишник, второй (3ий, 4ый, 5ый...) получили новые, опять же не связанные с тем что был.

С точками примерно та же петрушка.

И да, что печально - это поведение на совести редактора т.к. постоянства айдишников ничто не гарантирует.

Last edited by dkiselev (2011-05-20 12:57:02)


mail: dkiselev@osm.me      skype: dmitry.v.kiselev
Open Street Maps are supreme! Exterminate all map forms! Exterminate! Exterminate!

Offline

#13 2011-05-20 12:56:17

Ezhick
Member
From: Moscow
Registered: 2008-10-08
Posts: 2,508
Website

Re: Работа с графом дорог

dkiselev wrote:

Про локальную копию - Ezhick подсказал (кстати если его подонимать в личке он наверное и побольше расскажет smile

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

Offline

#14 2011-05-20 13:01:21

dkiselev
Member
Registered: 2010-02-09
Posts: 3,364

Re: Работа с графом дорог

Про айдишники.

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


mail: dkiselev@osm.me      skype: dmitry.v.kiselev
Open Street Maps are supreme! Exterminate all map forms! Exterminate! Exterminate!

Offline

#15 2011-05-20 13:06:24

VikDD
Member
From: RU, Moscow-Yaroslavl
Registered: 2010-04-21
Posts: 1,867

Re: Работа с графом дорог

Ну и ещё. Если вы хотите пробки - то в любом случае все роутинговые веи, думается, надо разбивать на 2 одновейных. Иначе как вы скажете в какую сторону пробка?

Offline

#16 2011-05-20 13:08:58

Ezhick
Member
From: Moscow
Registered: 2008-10-08
Posts: 2,508
Website

Re: Работа с графом дорог

VikDD wrote:

Ну и ещё. Если вы хотите пробки - то в любом случае все роутинговые веи, думается, надо разбивать на 2 одновейных. Иначе как вы скажете в какую сторону пробка?

Ой, вот тут вы не правы. Совсем. И, главное, топикстартер про пробки ничего не говорил!!!

Offline

#17 2011-05-20 13:10:15

leaf
Member
Registered: 2011-05-20
Posts: 10

Re: Работа с графом дорог

dkiselev wrote:

Айдишники не совсем постоянны:

Заменили одновейную улицу 2хвейной (старую грохнули создали 2 новых) - естественно будет 2 новых объекта с новыми айдишниками никак не связанными с пердыдущими.

совсем никак не связанные? или всё-таки можно вычислить произошедшие изменения?
я тут пока изучаю и где-то натыкался на то что есть какая-то "версионализация" в OSM. Ведется ли что-то вроде истории версий? Хотя это не особо облегчит задачу.
Да, надо будет хорошенько подумать как с этими обновлениями поступать.

Ezhick wrote:

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

Заранее, спасибо. Как только с основами разберусь и если что-то будет непонятно обращусь.

Offline

#18 2011-05-20 13:32:06

dkiselev
Member
Registered: 2010-02-09
Posts: 3,364

Re: Работа с графом дорог

Ну теоретически некоторые изменения можно вытащить из истории:

Если линию поделить на 2 сегмента это равносильно:
создать 1 новый сегмент с половиной точек из старого.
отредактировать старый сегмент сохранив в нем половину точек.
(josm, potlatch1, potlatch2 вроде так и делают).

Соответственно 1 кусок сохранит часть истории вея, так же будет ревизия в которой точки с такими то айди были удалены из вея 1 и включены в новый вей 2.

Но опять же никто не мешает редактору сформировать xml с изменениями след. образом:
Грохнуть старый, создать 2 новых вея - в этом случае у новых версия будет 1 история пропадет. Останется теоретическая возможность вытащить ревизию в которой это произошло и по id точек догадаться что линию распилили. Но это геморой наижутчайший.

Проще вам наверное експеримент поставить где-нибудь в тундре, посоздавать веев поизменять их, поредактировать атрибуты, подобавлять/поудалять точек. По объединять/по разделять линии и т.п. и посмотреть что пишется в историю и в osm-change.xml, на пальцах это не шибко понятно выглядит.

Last edited by dkiselev (2011-05-20 13:36:12)


mail: dkiselev@osm.me      skype: dmitry.v.kiselev
Open Street Maps are supreme! Exterminate all map forms! Exterminate! Exterminate!

Offline

#19 2011-05-20 13:53:13

Ezhick
Member
From: Moscow
Registered: 2008-10-08
Posts: 2,508
Website

Re: Работа с графом дорог

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

Offline

#20 2011-05-20 13:58:15

Ilis
Member
From: Екатеринбург
Registered: 2009-05-24
Posts: 5,970

Re: Работа с графом дорог

Можно вести свою базу с нужными объектами и их версиями, и периодически скачивать номера версий этих объектов. При обнаружении изменения версии докачивать объекты.

Offline

#21 2011-05-20 14:20:47

leaf
Member
Registered: 2011-05-20
Posts: 10

Re: Работа с графом дорог

А сколько приблизительно весит база с графом дорог России в ОСМ? Как часто происходят изменения? Насколько они масштабные обычно?

Offline

#22 2011-05-20 14:27:30

Hind
Member
From: Moscow
Registered: 2009-05-25
Posts: 3,949

Re: Работа с графом дорог

Изменения происходят ежесекундно, а конкретно в графе дорог РФ… Да черт его знает, может, раз в минуту, может, раз в 10 минут.

Вообще, вроде бы есть два основных варианта — поддерживать базу РФ в актуальном состоянии с помощью ежечасных, например, диффов, либо периодически выдирать из свежего дампа.

Offline

#23 2011-05-20 14:38:25

AkMeR
Member
From: Samara
Registered: 2008-02-27
Posts: 1,158

Re: Работа с графом дорог

leaf wrote:

А сколько приблизительно весит база с графом дорог России в ОСМ? Как часто происходят изменения? Насколько они масштабные обычно?

Насколько я знаю, отдельную выгрузку только с графом дорог (тем более России) никто не делает. Можно взять полную выгрузку России, например с gis-lab`а (по невероятному стечению обстоятельств на данный момент выгрузка недоступна), и с помощью osmosis`а отфильтровать по нужным тегам (highway=*).
Как часто происходят изменения? Да постоянно*, ежесекундно кто-то что-то где-то правит. Касаются ли эти изменения графа - вполне вероятно. Но очень уж масштабных изменений обычно нет.


-------------
* - Щелкнуть на "ticker"

Offline

#24 2011-05-20 17:43:07

siberiano
Moderator
From: Novosibirsk
Registered: 2010-02-25
Posts: 1,003
Website

Re: Работа с графом дорог

Я сделал себе скрипт, чтобы импортировать из osm в mongoDB, там можно делать что угодно довольно просто. Бью пути на сегменты (между 2 точками), считаю для них веса, дальше буду пробовать алгоритмы трассировки.

Вот, например, как в mongo выглядит запрос, который делает из путей сегменты, сохраняя теги (чтобы можно было учитывать у каждого сегмента полосность и покрытие)

db.way.find().forEach(function(w) {
    var nodes = w.nodes.map(function(v) { return v.ref }), // make nodes array of `ref` attributes of nodes in the ways
        from = nodes.slice(0, nodes.length - 1), // first nodes of segments are all but the last node
        to = nodes.slice(1); // last nodes of segments are all but the first node
    /* if nodes were [1, 2, 3], I need [1, 2] and [2, 3] to make [[1, 2], [2, 3]] */
    var zip = function(v) { // pop from both `from` and `to` arrays and make them a segment with way's id, way's tags
            db.segments.save({way: w.id, tags: w.tags, from: from.shift(), to: to.shift()});
        };
    from.map(zip); // map is quicker than the `for` loop
});

Работать с базой данных на JavaScript - это колоссальное облегчение участи программиста!

Last edited by siberiano (2011-05-20 17:50:29)

Offline

#25 2020-03-12 14:26:50

Aleks_Shmaleks
Member
Registered: 2020-03-11
Posts: 2

Re: Работа с графом дорог

А сколько всего "рёбер" в графе дорог России?
Может кто-то знает, как это проверить не скачивая всю карту...

Offline

Board footer

Powered by FluxBB