Устройство OSM (железные дороги)

Как быть в этом случае? Я думал что станция на всех путях отмечена

На счет этого варианта, у нас явно надо указать Главный путь, т.е будет считаться километраж только по объектам с указанным номером пути

погрешность не складывается, т.к каждый раз задача решается как новая

На счет длины могу попробовать вытащить, какие нибудь еще сложности могут возникнуть? Точность определения инцидента на карте не требуется вплоть до метра, погрешность в 100 метров на перегоне допустима

Тут нет главного пути. Тут есть путь “туда” и путь “обратно”. То есть выбирать по-хорошему надо в зависимости от того, с какой стороны считаем.

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

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

Я имел в виду погрешность на одном перегоне. Скажем, если нужная точка где-то на середине перегона, накопим всю погрешность за половину перегона.

Хотя это тоже не проблема - можно как минимум нормировать расстояние по известной длине перегона, либо считать честную длину дуги, которую можно построить по 3 рёбрам.

Вроде навскидку больше сложностей в голову не приходит. Главное - определение нужного пути.

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

Иногда её вообще не на путях ставят.

Ну это точно надо исправлять, и это делается достаточно тривиально.

Это не ошибка, не надо её исправлять.
На путях можно ставить public_transport=stop_position.

топикстартеру, еще почитайте про linear referencing, многие гис умеют это из коробки и это именно для ваших задач

Точно, только s/можно/нужно/.

Offtopic:
AMDmi3, это перл?

Такой синтаксис регулярок применяется чуть менее чем везде. Как минимум perl, sed.

Все дороги имеют главный путь, и в моей системе все “инциденты” расположены по отношению по главному пути
К примеру существует Инцидент - произошел на перегоне на 10 км , вот этот 10 км будет относительно главного пути - главный путь включает в себя множество станций и перегонов

Направление путей определить можно , как и главные пути, только придется это делать вручную)
На счет погрешностей, насколько они могут быть сильны, т.е мне впринципе нужна очень достоверная карта, потому как РЖД врят ли возьмет проект, который не имеет за собой чего-то нереального)

Еще вопрос, относящийся к движку карты
Например я масштабирую карту до самого детального уровня, мне строятся все объекты (nodes, ways), всем отрезкам я проставляю длину и задаю километры, когда я меняю масштаб все эти данные что я посчитал теряются , верно? т.е сам движок OSM пересчитывает и выдает новые объекты, теряя старые, т.е при каждой смене масштаба карты, мне придется все заного рассчитывать?
И есть ли возможность оффлайн использования данной карты, т.к доступа в интернет у пользователей точно не будет…=(

Всё зависит от того, есть ли у вас эти данные, и можете ли вы их предоставить на условиях, совместимых с лицензией и Contributor Terms OSM. Если да, то их можно добавить напрямую в OSM. Если нет, вам придётся у себя делать постобработку OSM данных чтобы сопоставить их со своими. Учитывая то, что OSM постоянно изменяется, это может потребовать постоянной ручной работы.

Объективных данных у меня, увы, нет, потому что не с чем сравнивать. В целом - OSM рисуют разные люди с разными представлениями о достаточной точности; в разных местах доступны космические снимки разного разрешения и не везде доступны GPS треки, необходимые для точной привязки снимков. Тем не менее, по моим прикидкам погрешность редко где составляет более +/- 20 метров от траектории полотна (“угловатые повороты”) и не более 20-40 метров глобального смещения. Думается, для ваших задач это приемлимо ( глобальное смещение, например, вообще не влияет на рассчёт расстояний). Иногда, конечно, попадаются косяки типа таких:

http://www.openstreetmap.ru/#lat=62.293084&lon=34.51552&zoom=16&layer=BY
http://www.openstreetmap.ru/#lat=62.37125&lon=34.47533&zoom=16&layer=BY
http://www.openstreetmap.ru/#lat=62.409327&lon=34.43814&zoom=16&layer=BY

но это единичные и быстро исправляемые случаи. Также несложно сделать валидатор, контролирующий плавность изгибов линии ж/д чтобы исправить все такие косяки, и уменьшить локальные погрешности вцелом.

О каком именно вы движке и что вы имеете в виду под проставлением длин и километров?

Есть. Все данные (или часть, например - только Россию) в любой момент можно скачать целиком и поднять локальный рендер, либо скачать/отрисовать растр на нужном уровне детализации (но не очень высоких, иначе объём будет очень большим).

Имею ввиду данные по карте:

к примеру на нижнем уровне у меня формируются отрезки, я рассчитаю данные для них - например проставлю каждому отрезку длину и мат. функц-ию формирующую данный отрезок, запишу в данные way(отрезков, соединяющих точки) дополнительные параметры: протяженность, функцию. Т.е один раз запущу скрипт, он просчитает по всем путям данные параметры, но если я сменю масштаб, там же будут уже другие объекты? Или я что-то не понимаю?
Т.е мне необходимо загрузить данные по жд путям с каждого масштаба, пересчитать их и отображать на любых масштабах различные массивы обработанных данных?

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

Данные одни, в базе OSM понятия масштаба нет. То, что вы видите на openstreetmap.org - это растровые изображения, отрисованные по этим данным. Да, там для каждого масштаба задано какие объекты как рисовать, но это всего лишь один из многих вариантов отображения данных.

PS. Я накатал за вечер простенький роутер по железным дорогам, так что если есть список длин перегонов, уже можно прикинуть погрешности и соорудить валидатор.

У РЖД может быть один главный аргумент против использования OSM как картосновы - она не сертифицирована и с точки зрения российского законодательства не является картой в формальном смысле. Вот если представить это как сервис геокодирования (то есть нахождения географических координат по названию места) и предоставить возможность подключения любой карты (через WMS/TMS) как растровой подложки - тогда никаких вопросов: OSM остается как preview, а как “настоящая карта по ГОСТ” может быть использовано что угодно, быстро и легко сконвертированное в TMS и подключенное.
К вопросу о linear referencing: http://postgis.refractions.net/documentation/manual-2.0/reference.html#Linear_Referencing

Сегодня пришлю длины перегонов!

Нижний Новгород Моск. 0,00
Дзержинск 34,00
Ильино 35,00
Вязники 58,00
Ковров-1 60,00
Владимир 64,00
Москва Курская 191,00
Тверь 169,00
Бологое-Московское 164,00
Окуловка 70,00
Малая Вишера 87,00
Санкт-Петербург 162,00

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

Нет, роутер работает по станциям, так что нужны пара названий станций и расстояние. Что за информация в приведённом списке я не понял.

Расстояние в километрах от Нижнего Новгорода.