Как я могу получить полигон данной улицы, используя Overpass API?

Я хочу получить полигон данной улицы, используя OverPass API. Когда я использую, например,

(
  way
    ["name"="Hörnesgasse"];
  >;
);node(w);
out body;

Вот ссылка на Overpass Turbo: Overpass Turbo

Я получаю узлы для многоугольника, но они не в правильном порядке. Поэтому я не могу сохранить их как строку. Есть ли возможность лучше? Еще одна проблема, с которой я столкнулся, это то, что я хочу ограничить поиск по данному городу, например "addr:city"="Vienna", Поскольку узлы не имеют атрибута города напрямую, как я могу написать запрос для получения этой информации?

1 ответ

Решение

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

Удалить node(w); часть вашего запроса и взглянуть на <way> элементы. Если есть несколько <way> элементы, то вам придется определить их правильный порядок тоже. Последовательные пути будут использовать один и тот же идентификатор узла в начале или конце.

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