Фильтрация пересечений (пересечения с 4 путями, Т-образные перекрестки и т. Д.) С использованием Overpass API в заданной ограничительной рамке - PullRequest
0 голосов
/ 21 октября 2019

Существует сценарий Здесь , который может обрабатывать данные из OSM для обнаружения пересечений в заданной ограничительной рамке. Он работает, собирая все пути в заданную ограничивающую рамку, а затем находя другие пути, которые имеют общие узлы с этими дорогами. Вот запрос, который делает это,

way
  ["highway"]
  ["highway"!~"footway|cycleway|path|service|track|proposed"]
  (, , , )
  ->.relevant_ways;
foreach.relevant_ways->.this_way{
  node(w.this_way)->.this_ways_nodes;
  way(bn.this_ways_nodes)->.linked_ways;
  way.linked_ways
    ["highway"]
    ["highway"!~"footway|cycleway|path|service|track|proposed"]
    ->.linked_ways;
    (
        .linked_ways->.linked_ways;
        -
        .this_way->.this_way;
    )->.linked_ways_only;
    node(w.linked_ways_only)->.linked_ways_only_nodes;
    node.linked_ways_only_nodes.this_ways_nodes;
    out;
}

Этот запрос возвращает все виды пересечений (4-сторонние пересечения, T-соединения, ...).

Вопрос : Есть ли способ дополнительно отфильтровать пересечение с 4-сторонними перекрестками и Т-образными перекрестками?

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

Любая помощь будет оценена, спасибо.

...