Существует сценарий Здесь , который может обрабатывать данные из 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 путями. Но я не уверен, как написать запрос, который делает это.
Любая помощь будет оценена, спасибо.