Нужен граф дорог России - что делать/с чего начать?

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

Но вот в чем проблема - сам граф люди задают “несколько небрежно”. Части дорог нет, неправильно проставлены расстояния и т.п. и т.д.

Можно конечно тыкать их во всё это, что-то они исправят, но тенденция налицо - это очень трудоемко.

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

В общем задача - создать граф дорог России (и хорошо бы крупных городов) на основе уже накопленных кем данных.

Граф тут - точки и ребра + расстояние между точками.

Спасибо.

Ну вот вам OSM — готовая база данных. :slight_smile:

Дальше нужно говорить уже с программистами. Чтобы написали конвертер в ваш формат.
Либо просто сразу пользоваться осмосервисами, вроде OSRM. Или поднять его у себя с нужными настройками (роутинг для грузовиков, например).

Вообще, идеальным был бы вариант, когда вы поддерживаете у себя свежую БД осма, ежедневно обновляя данные в своем сервисе, а сотрудники репортируют об ошибках через общие сервисы OSM.

GPS-данные машин в OSM очень нужны, особенно на тех дорогах, которых у нас нет (логично).

Ну, собственно говоря, для этого OpenStreetMap и создавался.

теперь нужно намутить программу-конвертор, которая будет импортировать данные из OSM в вашу программу.

не только можно, но и нужно :slight_smile:
Эти данные нужно перевести в формат gpx и импортировать в базу треков OSM. По ним можно более точно “привязать” спутниковые снимки. Кроме того, становится понятно, что “если есть треки - значит, там есть дорога”.

Вам будет любопытно посмотреть этот проект (на основе OSM) http://map.project-osrm.org/

увы, обычно граф сам собой не редактируется. Обычно его редактируют люди. :slight_smile:

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

Да. А ещё бывает, что в начале трека идёт большой разброс. Это при старте GPS-приёмник позицию уточняет. У меня на mustek GP-220 такая фигня.

Ого! Приятно поражен скоростью реакции сообщества.

Изначально задача такова, что нужен именно свой сервис. Потому как предполагается работа НЕ через визуализацию, но через некий API. Причем мы должны иметь возможность влиять на результат. Запрет проезда, уклон дороги, направление движения, платные дороги, учет транзита. Потом информация с РЕБЕР будет использоваться в расчете затрат на поездку. И запросы к этому сервису будут ОЧЕНЬ высокочастотными.

Это я к чему - сторонний сервис использовать как-то проблематично (на мой взгляд). Нужна связь на уровне объектов.

**Вопрос в первоначальном заполнении!! **

И если честно - я не совсем понял, что вы мне насоветовали парни.

Я, кстати, и есть тот программист.

По сути, меня бы наверное устроила бы база данных с отрезками у которых:

  1. Есть геокоординаты.
  2. Которые, будучи прямыми (по своей сути), повторяют прямые же сегменты дороги.

То есть - расстояние для которых я мог бы рассчитать по простой формуле. Понимаете, да?

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

И вопрос был не столько к OSM, а сколько к людям, которые шарят в картографии.

Спасибо!

P.S. И мой “формат” это простая БД на MS SQL, никаких особенных конвертеров не надо.

Чтобы не быть голословным по поводу клякс, поясню: глядит это вот так http://www.openstreetmap.ru/?mapid=842950830 (бывает хуже)
А “чистить” - http://www.gpsbabel.org/htmldoc-development/filter_discard.html как минимум, sat=4

Так почему просто не взять базу из OSM целиком и использовать у себя?

2 s777n
А как её можно “взять”?

У OSRM как раз есть свой api: https://github.com/DennisOSRM/Project-OSRM/wiki/Server-api
Он умеет искать ближайшую к заданной точке дорогу и прокладывать маршрут, выплевывая последовательность ребер по которым нужно проехать, а также общие характеристики маршрута (длину, время проезда и т.п.). Для начала можно отладиться на их апи, а потом поднять свой, с нужными настройками.

OSM - это общая база данных геообъектов. В том числе и дорог. Вам нужно отфильтровать из общей базы интересующие вас данные и сконвертировать их в вашу базу.

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

Разве? Вроде б раньше запрещалась только публикация таких данных. А для себя в закрытом режиме - сколько угодно

Да, упустил. Если только внутри компании - то можно. :roll_eyes:

как скачать и использовать. Так же есть выгрузки по отдельным странам и регионам.

Я всё понял. Ткните пожалуйста в ссылку для нубья - с чего начать - как выбрать нужные мне дороги??

s777n, спасибо огромное!

Пыщь
Прежде всего, обратите внимание на теги highway и route=ferry.

БД вам поднимать совсем не обязательно, можно просто скачать дамп и распарсить его (если он в формате osm, то любым событийным XML-парсером, навроде SAX), заливая по ходу дела в свой MySQL. Хотя с вашим форматом, наверное, так просто не получится, и таки придется сначала залить в БД. :3

Ну или поднять свой OSRM, там и API, и нужные алгоритмы реализованы.

Вот здесь смотрите раздел Работа с данными OpenStreetMap.

Парни, а какой шаг у ребра дороги? Есть какие-то соглашения/правила?

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

http://forum.openstreetmap.org/viewtopic.php?pid=270474#p270474

Для собственного строительства графов роутинга - самое то.