You are not logged in.
- Topics: Active | Unanswered
Announcement
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***
#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: Работа с графом дорог
вот и пришел человек, который напишет ОСМ.Пробки
? ![]()
По теме грамотно не отвечу. Вот тут есть некоторые, из употребленных вами терминов 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: Работа с графом дорог
Как мне получить координаты узлов графа (перекрестков) и тд. и тп.
Хм... Точка, в которой пересекаются две дороги - и есть узел графа
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" ![]()
А по описанию очень похоже на то что пригодилось бы
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: Работа с графом дорог
Апи для работы именно с графом дорог как такового - нет. Есть просто апи для 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: Работа с графом дорог
Просто апи это имеется ввиду OpenLayers, я правильно понимаю?
Offline
#8 2011-05-20 12:22:26
- Ezhick
- Member

- From: Moscow
- Registered: 2008-10-08
- Posts: 2,508
- Website
Re: Работа с графом дорог
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 подсказал (кстати если его подонимать в личке он наверное и побольше расскажет
)
Айдишники не совсем постоянны:
Заменили одновейную улицу 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: Работа с графом дорог
Про локальную копию - Ezhick подсказал (кстати если его подонимать в личке он наверное и побольше расскажет
Расскажу, но вики сначала почитать надо, ибо пересказывать базовые вещи - ей богу нет времени.
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: Работа с графом дорог
Ну и ещё. Если вы хотите пробки - то в любом случае все роутинговые веи, думается, надо разбивать на 2 одновейных. Иначе как вы скажете в какую сторону пробка?
Ой, вот тут вы не правы. Совсем. И, главное, топикстартер про пробки ничего не говорил!!!
Offline
#17 2011-05-20 13:10:15
- leaf
- Member
- Registered: 2011-05-20
- Posts: 10
Re: Работа с графом дорог
Айдишники не совсем постоянны:
Заменили одновейную улицу 2хвейной (старую грохнули создали 2 новых) - естественно будет 2 новых объекта с новыми айдишниками никак не связанными с пердыдущими.
совсем никак не связанные? или всё-таки можно вычислить произошедшие изменения?
я тут пока изучаю и где-то натыкался на то что есть какая-то "версионализация" в OSM. Ведется ли что-то вроде истории версий? Хотя это не особо облегчит задачу.
Да, надо будет хорошенько подумать как с этими обновлениями поступать.
Расскажу, но вики сначала почитать надо, ибо пересказывать базовые вещи - ей богу нет времени.
Заранее, спасибо. Как только с основами разберусь и если что-то будет непонятно обращусь.
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,950
Re: Работа с графом дорог
Изменения происходят ежесекундно, а конкретно в графе дорог РФ… Да черт его знает, может, раз в минуту, может, раз в 10 минут.
Вообще, вроде бы есть два основных варианта — поддерживать базу РФ в актуальном состоянии с помощью ежечасных, например, диффов, либо периодически выдирать из свежего дампа.
Offline
#23 2011-05-20 14:38:25
- AkMeR
- Member

- From: Samara
- Registered: 2008-02-27
- Posts: 1,158
Re: Работа с графом дорог
А сколько приблизительно весит база с графом дорог России в ОСМ? Как часто происходят изменения? Насколько они масштабные обычно?
Насколько я знаю, отдельную выгрузку только с графом дорог (тем более России) никто не делает. Можно взять полную выгрузку России, например с gis-lab`а (по невероятному стечению обстоятельств на данный момент выгрузка недоступна), и с помощью osmosis`а отфильтровать по нужным тегам (highway=*).
Как часто происходят изменения? Да постоянно*, ежесекундно кто-то что-то где-то правит. Касаются ли эти изменения графа - вполне вероятно. Но очень уж масштабных изменений обычно нет.
-------------
* - Щелкнуть на "ticker"
Offline
#24 2011-05-20 17:43:07
- siberiano
- Moderator

- From: Novosibirsk
- Registered: 2010-02-25
- Posts: 1,006
- 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