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

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

к примеру на нижнем уровне у меня формируются отрезки, я рассчитаю данные для них - например проставлю каждому отрезку длину и мат. функц-ию формирующую данный отрезок, запишу в данные 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

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

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

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

А понял. На самом деле, расстояние от предедущей станции в списке. Ну, ситуация такая:

Горький-Московский -> Дзержинск
  Failed: End station not found
Дзержинск -> Ильино
  Failed: Start station not found
Ильино -> Вязники
  Route found, 57.7638 km, expected 58 km, offset is 0.408948%
Вязники -> Ковров 1
  Route found, 59.8379 km, expected 60 km, offset is 0.270844%
Ковров 1 -> Владимир
  Route found, 64.0863 km, expected 64 km, offset is 0.134918%
Владимир -> Москва-Курская
  Route found, 190.245 km, expected 191 km, offset is 0.396924%
Москва-Курская -> Тверь
  Failed: no route found
Тверь -> Бологое-Московское
  Route found, 556.498 km, expected 164 km, offset is 239.328%
Бологое-Московское -> Окуловка
  Route found, 72.0452 km, expected 70 km, offset is 2.92176%
Окуловка -> Малая Вишера
  Failed: End station not found
Малая Вишера -> Московский Вокзал
  Failed: Start station not found

Как видно, основная проблема - отсутствие станций. На самом деле они есть, но не привязаны к линиям, что решается добавлением stop_position, так что по завтрашнему дампу должно найтись больше перегонов. Далее, есть перегоны с большими погрешностями - обычно это тоже из-за отсутствия точек остановки (маршрут строится в обход). В случае с Тверью там вообще какая-то странная конфигурация вокзала, напишу местным чтобы посмотрели. Для того же что нормально нашлось, погрешность минимальна.

Ещё проблема - сопоставление названий станций.

“Нижний Новгород Моск.” vs. “Горький-Московский”
“Ковров-1” vs. “Ковров 1”
“Москва Курская” vs. “Москва-Курская”
“Санкт-Петербург” vs. “Московский Вокзал”

может решаться как через alt_name в базе (применимо не всегда), так и через внешнюю таблицу соответствия.

Для сопоставления названий валидатор ЕСР предоставляет таблицу соответствия обьектов ОСМ к ЕСР и Экспресс
http://osm.sbin.ru/esr/

После расстановки stop_position и исправления двух проблем с oneway и одного разрыва пути, получилось так:

Горький-Московский -> Дзержинск
  Route found, 32.56 km, expected 34.00 km, offset is -4.43% (-1442 m)
Дзержинск -> Ильино
  Route found, 34.00 km, expected 35.00 km, offset is -2.95% (-1002 m)
Ильино -> Вязники
  Route found, 57.76 km, expected 58.00 km, offset is -0.41% (-236 m)
Вязники -> Ковров 1
  Route found, 59.84 km, expected 60.00 km, offset is -0.27% (-162 m)
Ковров 1 -> Владимир
  Route found, 64.09 km, expected 64.00 km, offset is +0.13% (+86 m)
Владимир -> Москва-Курская
  Route found, 190.24 km, expected 191.00 km, offset is -0.40% (-755 m)
Москва-Курская -> Тверь
  Route found, 182.13 km, expected 169.00 km, offset is +7.77% (+13131 m)
Тверь -> Бологое-Московское
  Route found, 163.48 km, expected 164.00 km, offset is -0.32% (-524 m)
Бологое-Московское -> Окуловка
  Route found, 70.32 km, expected 70.00 km, offset is +0.46% (+321 m)
Окуловка -> Малая Вишера
  Route found, 82.28 km, expected 87.00 km, offset is -5.74% (-4721 m)
Малая Вишера -> Московский вокзал
  Route found, 161.16 km, expected 162.00 km, offset is -0.52% (-839 m)

Москва-Курская - Тверь я не смотрел, ибо там больно сложно, но в остальных случаях с большой погрешностью (“Горький-Московский → Дзержинск”, “Дзержинск → Ильино”) ручное измерение показывает что прав мой роутер (на всякий случай проверено по Яндекс.картам), а в случае “Окуловка → Малая Вишера” разница получается из-за этой загогулины: http://osm.org/go/0y80Z5_ которая, судя по всему, была спрямлена, и в OSM отражено актуальное состояние, но в ваших данных длина всё ещё содержит этот крюк.

В соседней ветке вы это за преимущество выставляете и предлагаете повсеместно убирать с путей точки станций :slight_smile:
http://forum.openstreetmap.org/viewtopic.php?id=18876

Ну и правильно, на путях должна быть не станция, а точка останова.
Идея интересная, попробую в своей области наполнить данные по остановка. Вызывают опасения названия вида ххх КМ или ЖД казарма, что это такое не понимаю.

Насколько мне известно, станция не есть нод, это отрезок, или даже отрезки жд в некоем полигоне. Перегон же - отрезки пути между концом одной станции и началом другой станции. В ОСМ же станции отмечаются точками.

Кажется, в expected тут речь про Москву-Октябрьскую, а не Курскую?

А вообще, расстояния между станциями вполне можно брать из ТР4.
http://www.bestpravo.ru/federalnoje/dg-postanovlenija/i0a.htm

Стоп-стоп. А действительно, в исходных данных о длине перегонов могут быть данные отличающиеся от того, сколько будет по карте. В википедии написано, что в километре может быть и 7, и 14 пикетов.

Согласно ОКЖД / ПТЭ / ИДП станция - это отрезок ЖД-линии между входным и выходным сигналами. А при проектировании железной дороги для каждой станции задаётся точка, специально для расчёта расстояния и прочей картографии. По умолчанию она находится в центре фасада пассажирского здания. Где ставить такую точку на великих сортировках вроде Кочетовки, я не знаю.

Расстояния в ТР4 условны: они округлены до целого и предназначены для тарификации, а не для определения реальных расстояний.

Это понятно, но кажется, что расхождение там будет непринципиальным. Тем более для решаемой задачи

Вполне возможно, я считал по списку и “за что купил - за то продал”.

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

Это даже эксель умеет

интересно, была ли решена данная задача?