Пробки...

Привет всем участникам OSMки!

Есть много проектов по генерации информации о пробках:
www.probki.net
http://maps.yandex.ru/help.xml?section=probki#about
и т.д.

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

Есть предложение сделать аналогичный проект но на основе OSM.
Соответственно достаточно просто реализовать различные M2M-M2H решения. Польза будет взаимовыгодной для всех.

Есть желающие поучаствовать?

Есть проект pocketgis (www.pocketgis.biz), как раз прорабатывается вопрос об использовании картосновы OSM.

Я имел ввиду немного другое:

  1. Имеем таблицу БД с ID сегментов. ID сегментов берутся из OSM. При этом ID одного и того-же сегмента будут одинаковы вне зависимости от движка отрисовки карты (не важно что это будет за движок - или для наладонника или openlayer - для онлайн отображения);
  2. Имеем таблицу БД в которой есть привязка ID сегмента → текущая скорость.
    Дальше я думаю всё понятно - генерим через определённые промежутки времени xml (или бинарный) файл в котором и будет связка - ID и скорость.
    Далее клиентская программа получает этот файл, парсит его и принимает решение о перепрокладке маршрута.
    Эта задача почти решена.

Задача немного другая - есть данные с различных систем мониторинга - ездят сотни ТС. У каждого ТС есть координаты и скорость. По координатам находим ID сегмента. Набираем статистику от нескольких ТС для данного сегмента(сегментов), принимаем решение какова скорость и складываем в базу. Чем больше ТС будет задействовано тем точнее будет информация.
Сделав программу для мобильных устройств (наладонники, телефоны, GPS навигаторы (некоторые модели поддерживают передачу данных)) можно отправлять на сервер информацию и с них.

А нафиг все это нужно, если нет программы с роутингом для osm?

Ну во первых есть и даже две - gosmore (её использую относительно недавно) и roadmap(editor) который использую уже несколько лет (правда OSM к нему получилось прикрутить только год назад). На базе этих программ организован сервис по прокладке маршрутов для системы мониторинга. Быстродействие 4000 маршрутов в минуту (AMD64x2, 2Gb, Linux). Есть возможность учитывать и пробки но пока из-за отсутствия БД по пробкам это не реализовано.
Недостаток PocketGIS - опять-же “закрытость” т.е. сторонний пользователь не может получить доступ к информации о пробках. Тут-же предлагается вариант по типу OSM - т.е. любой желающий может получить информацию. К тому-же нет ограничения по городам - многие пользователи находятся не в Москве и не в Питере.
Пример файла xml:

<?xml version='1.0' encoding='UTF-8'?>

есть ещё Navit. тоже с роутингом.
была у меня задумка использовать локальные osc (osmchange) файлы для подобных целей. упёрлась в то что: ограничение - путь, а не отдельный тэг/сегмент
для вашего метода в данном виде - надо резать все дороги на сегменты соответствующие роутовому графу - что не просто плохо, а очень хреново для картостоителя
ничто конечно не мешает делать это програмно чисто в софте - но это выливается в написание велосипедов вместо использование стандартных возможностей
велосипеды конечно не особо сложные… вида:

<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.5' generator=''>
<way id='23020035' segment="3" timestamp='' user=''>
   <tag k='maxspeed:practical' v='18' />
</way>
</osm>

где segment - фрагмент пути с ID

ps. достала кодировка! :slight_smile:

Navit тоже пробовал. Пол линухом работает замечательно, а вот под виндой ЖУТКО тормозит по сравнению с тем-же roadmap (по отзывам - сам не пробовал - негде…).
Может поступить так?:

причём fromtnode и tonode указывать только если пробка занимает часть пути-полилинии с way id
в данном случае не будем отходить от преимуществ OSM - стандартной нумерации а иначе действительно придётся строить велосипеды вида segment=“3”
вводится потому что пробка может быть только в одном направлении.
direction=0 или не указано в обе стороны
direction=1 только по направлению пути-полилинии
direction=-1 только против направления пути-полилинии

Пример пробок: Новоалексеевская ул., Москва
Полдень - пробка образовалась из-за светофора и двух “лежачих полицейских”

<?xml version='1.0' encoding='UTF-8'?>

То-же самое только в час пик. Пробка уже на всю улицу и выезды на проспект Мира как в центр так и в область:

<?xml version='1.0' encoding='UTF-8'?>

Направления не указаны т.к. односторонее движение (см. свойства путей-полилиний с указанными ID).

для roadmap пришлось нарезать OSMку на сегменты поэтому я и оперировал термином “сегменты”

P.S. давайте всё писать в UTF8 и никаких проблем с кодировкой не будет - самим-же неудобно. Как KekcuHa писал в 1251 так я и отвечал… :slight_smile:

А как резали ?

Тогда ИМХО нужен бот который будет резать ways по перекресткам и клеить излишние соседние сегменты с одинаковым набором аттрибутов

Программу для нарезки писал не я. Резалось от узла к узлу. Иначе роутинг в roadmap-editor не работает. При этом получается совсем другая нумерация полилиний поэтому немного изменён формат карт и сохраняется изначальная нумерация OSM - сделано именно для пробок. Если использование информации о пробках не нужно то можно ничего не менять… Хотя изначальный формат roadmap-editor не предполагает большого количества полигонов (отображение домов).
http://avionics.narod.ru/pub/roadmap.png
Снимок экрана. Карта из OSM (не все значки POI нарисованы поэтому черные квадраты)
Сейчас пробую подключить пробки к gosmore. Роутинг по OSM работает нормально за исключением моментов связанных с ограничением скорости на отдельных участках (скорость задаётся в конфигурационном файле и привязана к типу дороги). Придётся менять формат т.к. так-же не сохраняются ID.

По поводу бота - согласен. Если использовать:

то тогда придётся хранить ещё и ID узлов.