You are not logged in.

#1 2012-10-27 15:05:26

Ivan Ryazanov
Member
Registered: 2012-08-27
Posts: 9

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

Здравствуйте, уважаемые пользователи и разработчики OSM! Я впервые на этом форуме и меня очень заинтересовал данный продукт. Собственно, сразу к вопросам:
Имеется информация по инцидентам и происшествиям на железных дорогах, хотелось бы создать свой слой и отобразить данную информацию на карте.
Возникшие вопросы:
1) Железнодорожное полотно на карте OSM - совокупность отрезков, соединяющих точки ? Верно ли это, и если железная дорога прямая, то может быть всего 2 точки и 1 отрезок соединяющий эти 2 точки?
2) У меня есть информация о местонахождении инцидента, а именно: станциии или перегоне, на котором он произошел, и километраж относительно главного пути, т.е можем ли мы разбить жд пути по километрам, присвоить каждой точке (node) какой либо километр

У меня нет привязки к географическим координатам! Поэтому хочу разбить дорогу на километры

3) как определить расстояние между двумя точками , т.е длинну отрезка жд пути

Last edited by Ivan Ryazanov (2012-10-27 15:09:24)

Offline

#2 2012-10-27 15:15:27

dimonster
Member
Registered: 2012-07-08
Posts: 1,501

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

1) Да. Железная дорога представлена как ломаная линия. Иногда каждый путь прорисован как отдельная линия (там, где их видно, и где у человека было терпение их рисовать). Но не факт, что на прямом участке не будет каких-то промежуточных точек.

3) каждая точка имеет координаты - широту и долготу. Математически задача будет такой: Как взять нужную ломаную линию, посчитать последовательно расстояния от первой точки до всех остальных.
Думаю, что необязательно разбивать линию ж/д пути на километры. Координаты места происшествия можно будет посчитать с помощью интерполяции.

Offline

#3 2012-10-27 15:27:03

Ivan Ryazanov
Member
Registered: 2012-08-27
Posts: 9

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

Просто у меня есть километраж происшествия:
К примеру есть перегон ТОМИЛИНО - КРАСКОВО, в своей системе я могу вычислить длинну, скажем она 20 километров, а инцидент произошел на 2-ом километре перегона
Мне же необходимо отобразить его правильно на карте, можно ли поподробнее

Offline

#4 2012-10-27 16:17:39

dkiselev
Member
Registered: 2010-02-09
Posts: 3,364

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

Самое сложное - найти в осм соответсвующие перегоны. Тут либо ручкми собрать соответсвующие куски железок в отношения по типу route и подписать их. Либо искать перегоны как кратчайший путь по железке между окрестностями станций.

Тоесть после первого этапа у вас будет соответсвие перегон - набор ломаных в осм. Ну а дальше этот набор надо упорядочить чтобы конец одной ломаной соответсвовал началу другой ломаной. Ну а по ним уже считать километраж по данным осм и получать координаты.


mail: dkiselev@osm.me      skype: dmitry.v.kiselev
Open Street Maps are supreme! Exterminate all map forms! Exterminate! Exterminate!

Offline

#5 2012-10-27 16:39:23

AMDmi3
Member
From: Москва
Registered: 2009-08-12
Posts: 3,315

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

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

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

На самом деле первый шаг довольно сложен.

Во-первых, в OSM рисуются как абстрактные ж/д линии, так и отдельные пути, и точку станции обычно ставят только на один путь. Итого, не во всех случаях можно найти линию, связывающую две станции.
Во-вторых, станции может связывать несколько линий. К примеру, тут: http://www.openstreetmap.ru/#layer=M&zo … n=38.69444
Тут между станциями Александров и Александров-2 есть по факту 2 пути, длинами 3881м  и 4246м. Нужно как-то выбирать правильную.
В третьих, вопрос насколько подсчёт расстояния по карте соответствует тому что пишут на табличках. Всё-таки длина дуги окружности > длины хорды, а у нас второе, и на длинных перегонах может накопиться заметная погрешность.

Всё это так или иначе решается, и т.к. меня эта задача внезапно заинтересовала, могу попробовать с этим помочь.

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

Offline

#6 2012-10-27 16:46:10

Ivan Ryazanov
Member
Registered: 2012-08-27
Posts: 9

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

Можно свести задачу к локальному перегону, так скажем более конкретизировать ее:
Есть перегон известна его общая длинна в км, перегон состоит из рандомного количества точек

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

Offline

#7 2012-10-27 16:49:44

AMDmi3
Member
From: Москва
Registered: 2009-08-12
Posts: 3,315

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

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

Offline

#8 2012-10-27 17:12:02

Ivan Ryazanov
Member
Registered: 2012-08-27
Posts: 9

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

AMDmi3 wrote:

Во-первых, в OSM рисуются как абстрактные ж/д линии, так и отдельные пути, и точку станции обычно ставят только на один

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

Итого, не во всех случаях можно найти линию, связывающую две станции.
Во-вторых, станции может связывать несколько линий. К примеру, тут: http://www.openstreetmap.ru/#layer=M&zo … n=38.69444
Тут между станциями Александров и Александров-2 есть по факту 2 пути, длинами 3881м  и 4246м. Нужно как-то выбирать правильную.
,

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

В третьих, вопрос насколько подсчёт расстояния по карте соответствует тому что пишут на табличках. Всё-таки длина дуги окружности > длины хорды, а у нас второе, и на длинных перегонах может накопиться

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


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

Offline

#9 2012-10-27 17:40:22

Alexandr Zeinalov
Member
From: New-Peredelkino, Moscow, RU
Registered: 2009-08-26
Posts: 1,698
Website

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

Ivan Ryazanov wrote:

Во-вторых, станции может связывать несколько линий. К примеру, тут: http://www.openstreetmap.ru/#layer=M&zo … n=38.69444
Тут между станциями Александров и Александров-2 есть по факту 2 пути, длинами 3881м  и 4246м. Нужно как-то выбирать правильную.

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

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

Offline

#10 2012-10-27 17:43:00

AMDmi3
Member
From: Москва
Registered: 2009-08-12
Posts: 3,315

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

Ivan Ryazanov wrote:

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

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

Ivan Ryazanov wrote:

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

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

Ivan Ryazanov wrote:

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

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

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

Ivan Ryazanov wrote:

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

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

Ivan Ryazanov wrote:

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

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

Offline

#11 2012-10-27 17:44:32

Sergey Astakhov
Member
From: St.Petersburg, Russia
Registered: 2009-11-13
Posts: 5,779

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

AMDmi3 wrote:

точку станции обычно ставят только на один путь

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

Offline

#12 2012-10-27 17:45:16

AMDmi3
Member
From: Москва
Registered: 2009-08-12
Posts: 3,315

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

Sergey Astakhov wrote:

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

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

Offline

#13 2012-10-27 19:15:50

Zverik
Moderator
From: Минск
Registered: 2010-10-14
Posts: 5,693
Website

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

AMDmi3 wrote:
Sergey Astakhov wrote:

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

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

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


ШТОСМ | josm.ru | обо мне | удалёнка зло

Offline

#14 2012-10-27 19:20:11

sim
Member
Registered: 2008-04-19
Posts: 632
Website

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

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

Offline

#15 2012-10-27 19:26:45

AMDmi3
Member
From: Москва
Registered: 2009-08-12
Posts: 3,315

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

Zverik wrote:

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

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

Offline

#16 2012-10-27 19:59:06

dkiselev
Member
Registered: 2010-02-09
Posts: 3,364

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

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


mail: dkiselev@osm.me      skype: dmitry.v.kiselev
Open Street Maps are supreme! Exterminate all map forms! Exterminate! Exterminate!

Offline

#17 2012-10-27 20:02:47

AMDmi3
Member
From: Москва
Registered: 2009-08-12
Posts: 3,315

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

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

Offline

#18 2012-10-27 22:20:27

Ivan Ryazanov
Member
Registered: 2012-08-27
Posts: 9

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

Alexandr Zeinalov wrote:
Ivan Ryazanov wrote:

Во-вторых, станции может связывать несколько линий. К примеру, тут: http://www.openstreetmap.ru/#layer=M&zo … n=38.69444
Тут между станциями Александров и Александров-2 есть по факту 2 пути, длинами 3881м  и 4246м. Нужно как-то выбирать правильную.

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

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

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

Offline

#19 2012-10-27 22:29:50

Ivan Ryazanov
Member
Registered: 2012-08-27
Posts: 9

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

AMDmi3 wrote:
Ivan Ryazanov wrote:

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

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

Ivan Ryazanov wrote:

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

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


Ivan Ryazanov wrote:

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

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


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

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

Offline

#20 2012-10-27 23:40:07

AMDmi3
Member
From: Москва
Registered: 2009-08-12
Posts: 3,315

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

Ivan Ryazanov wrote:

Направление путей определить можно , как и главные пути, только придется это делать вручную)

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

Ivan Ryazanov wrote:

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

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

http://www.openstreetmap.ru/#lat=62.293 … 6&layer=BY
http://www.openstreetmap.ru/#lat=62.371 … 6&layer=BY
http://www.openstreetmap.ru/#lat=62.409 … 6&layer=BY

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

Ivan Ryazanov wrote:

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

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

Ivan Ryazanov wrote:

И есть ли возможность оффлайн использования данной карты, т.к доступа в интернет у пользователей точно не будет...=(

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

Offline

#21 2012-10-28 00:07:58

Ivan Ryazanov
Member
Registered: 2012-08-27
Posts: 9

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

AMDmi3 wrote:
Ivan Ryazanov wrote:

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

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

Ivan Ryazanov wrote:

И есть ли возможность оффлайн использования данной карты, т.к доступа в интернет у пользователей точно не будет...=(

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


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

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

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

Offline

#22 2012-10-28 03:02:08

AMDmi3
Member
From: Москва
Registered: 2009-08-12
Posts: 3,315

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

Ivan Ryazanov wrote:

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

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

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

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

Offline

#23 2012-10-28 06:30:27

BushmanK
Member
Registered: 2011-05-03
Posts: 5,106

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

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


"Не умею" не значит "невозможно", "не видел" не значит "не бывает". "Нет проблемы", вероятнее всего, значит, что "нет мозгов".

Offline

#24 2012-10-28 12:38:55

Ivan Ryazanov
Member
Registered: 2012-08-27
Posts: 9

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

AMDmi3 wrote:
Ivan Ryazanov wrote:

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

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

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

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


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

Offline

#25 2012-10-28 13:38:10

Ivan Ryazanov
Member
Registered: 2012-08-27
Posts: 9

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

Нижний Новгород Моск.    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

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

Last edited by Ivan Ryazanov (2012-10-28 13:46:20)

Offline

Board footer

Powered by FluxBB