Эстакада железнодорожных участков

Я хочу запросить путепровод Api, чтобы узнать расстояние особых отношений (железные дороги). Запрос в порядке, и возвращает мне все relation, way а также node Интересующие меня объекты. Пример для Гамбурга:

[out:json];(rel(53.55224324163863, 10.006766589408304, 53.55314275836137, 10.008081410591696)["route"="train"];>;);out body;

В эстакаде каждый relation У объекта есть члены, определяющие это отношение. За way объекты, которые вы можете решить широту / долготу его node атрибуты и рассчитать расстояние для этого пути. Если вы суммируете все расстояния, это кажется разумным.

Тем не менее, есть члены из этого relation типа node (в большинстве случаев у них есть role "стоп"), которые, кажется, представляют правильный порядок остановок от этого relation, Но вместо того, чтобы быть между членами, они примерно в конце. Если я попытаюсь разглядеть остановки внутри путей, они не все присутствуют. Как мне рассчитать расстояние между двумя конкретными остановками?

1 ответ

Решение

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

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

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

Другие вопросы по тегам