OSM Overpass API: полные граничные данные

#openstreetmap #overpass-api

#openstreetmap #overpass-api

Вопрос:

Я пытаюсь выяснить, возможно ли с помощью OverpassAPI загрузить все граничные данные для страны.

Небольшой пример: Люксембург Я хотел бы получить все отношения, помеченные как (ключ-значение) boundary= administrative . Я хотел бы получить все пути к этим отношениям и все узлы этими способами.

Я предполагаю, что это может быть довольно много данных (?), Поэтому мне интересно, подойдет ли один запрос, особенно если я попытаюсь сделать это с Германией или Францией (около 20 элементов на admin_level = 4 и сотни на admin_level = 6 или 8)

Это еще более усложняется, потому что ограничивающая рамка по всей стране охватывает все другие страны, разделяющие границу с одним «встроенным».

Так что, похоже, это не так — какой метод я бы использовал, чтобы получить все узлы на всех путях, которые образуют административные границы страны?

В настоящее время я пытаюсь сделать следующее

 <osm-script>
  <query type="relation">
    <bbox-query s="49" w="2" n="52" e="7"/>
    <has-kv k="boundary" v="administrative"/>
    <has-kv k="admin_level" v="2"/>
  </query>
  <print mode="meta"/>
</osm-script>
  

Это ограничивающая рамка для Бельгии (скажем, среднего размера), и она ограничена значением admin_level= 2. Кроме того, это еще не доставляет информацию об узле.

Я знаю, как это изменить, но это также приведет ко всем соседним странам. Какой лучший способ сделать это?

Спасибо! Ральф

Ответ №1:

Я бы рекомендовал вместо этого взглянуть на карту границ OSM, специальное приложение для определения границ по всему миру практически на любом уровне, о котором вы можете подумать: https://wambachers-osm.website/boundaries

В любом случае, на основной экземпляр api overpass довольно большая нагрузка, и вполне вероятно, что вы столкнетесь с ошибкой HTTP 429 при выполнении следующего запроса для извлечения всех путей и узлов для Германии:

(rel(51477);>;);out meta;

или:

(rel[boundary=administrative][admin_level=2][name="Deutschland"];>;);out meta;

Чтобы получить все граничные = административные отношения со всеми их путями и узлами в Люксембурге, должен выполняться следующий запрос (осторожно: возвращает 47 МБ данных, включая Германию, Рейнланд-Пфальц и Саар).

rel(2171347);
map_to_area;
(rel[boundary=administrative](area);>;);
out meta;

Возможно, попробуйте и эту альтернативу.