Overpass API находит все границы, которые содержат список узлов - PullRequest
0 голосов
/ 17 февраля 2020

Я хотел бы вернуть уникальный список всех границ, которые содержат набор определенных c узлов (у меня это работает), но я также хочу, чтобы результаты сообщали мне, какие из моих перечисленных узлов находятся в какой области .

Это дает мне все области, которые содержат мои узлы

[out:json];
(
node(136477260);
node(4191786934);
)
-> .a;
.a is_in;
out;

Если я запускаю один запрос для каждого узла в отдельности, тогда я точно знаю, какой узел находится в каких областях, но это звучит очень неэффективно.
Есть ли способ связать результирующие области, с которыми мои узлы находятся внутри. например, добавить к выводу "my_nodes": 136477260, 4191786934, если область содержит оба этих узла?

спасибо

1 Ответ

0 голосов
/ 28 февраля 2020

Я бы предложил следующий подход: сначала соберите все узлы, найдите области, в которых они находятся, при необходимости отфильтруйте их (в данном случае по border = administive и admin_level = 10), затем выполните итерации по каждой области и напечатайте область за которым следуют узлы внутри этой области:

[out:json];
node(id:136477260,4191786934)->.nodes;
.nodes is_in;
area._[boundary=administrative][admin_level=10];
foreach {
  out;
  node.nodes(area);
  out;
}
...