OSM: больше узлов в пути, чем определенных узлов

Используя OverPass, я запрашиваю все пути и узлы в определенной области.

Документация гласит: "Узлы, определяющие геометрию пути, перечисляются в правильном порядке и указываются только по ссылке с использованием их уникального идентификатора. Эти узлы должны быть уже определены отдельно с их координатами".

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

Вот мой запрос OverPass QL:

[bbox:{{bbox}}];
(
node;
<;
);
out;

Я что-то упустил?

Спасибо.

2 ответа

Решение

Ваш запрос не запрашивает все "пути и узлы". Вместо этого он просто запрашивает узлы и выполняет "возврат", чтобы узнать, как эти узлы являются частью. Однако для этих способов вы будете получать узлы только из исходного запроса. Вам понадобится дополнительный "recurse down", чтобы запросить все остальные узлы, к которым относятся эти способы:

[bbox:{{bbox}}];
(
node;
<;
);
out body;
>;
out;

Пример: https://overpass-turbo.eu/s/FGj

Строго говоря, решение, основанное на < Заявление не соответствует вашим требованиям. Чтобы выяснить почему, мы взглянем на документацию Overpass QL:

Автономный запрос на повторный вызов записывается как символ "<".

Требуется входной набор. Это производит набор результатов. Его набор результатов состоит из:

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

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

Правильный запрос будет выглядеть следующим образом. Вместо того, чтобы использовать <Мы явно говорим в QL, что нам нужны только пути для набора узлов, и опять же, все узлы для набора путей - и ничего больше!

(
  node({{bbox}});
  way(bn);
  node(w);
);
out meta;

(Кстати: пожалуйста, забудьте о вышеупомянутом руководстве по языку Overpass. Оно неполное и не поддерживается на данный момент).

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