OSM Overpass API:完整的边界数据

时间:2016-10-01 08:58:39

标签: openstreetmap overpass-api

我想弄清楚是否可以使用OverpassAPI下载一个国家的所有边界数据。

小例子:卢森堡 我想获得标记为(键值)boundary = administrative的所有关系。我希望通过这些方式获得这些关系以及所有节点的所有方法。

我认为这可能是相当多的数据(?)所以我想知道是否有一个查询是要走的路,特别是如果我想尝试用德国或法国(在admin_level = 4上有大约20项), admin_level = 6或8)上有数百个

这更加复杂,因为全国各地的边界框都会占用所有其他国家与“收件箱”共享边界。

所以这似乎不是那种方式 - 我将使用什么技术来获得构成一个国家行政边界的所有方式的所有节点?

我目前正在尝试的是这个

uses ...windows, jwatlhelp32;

var ...Snapshot: THandle; pe: TProcessEntry32;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Snapshot := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
  try
    pe.dwSize := SizeOf(pe);
    if Process32First(Snapshot, pe) then
      while Process32Next(Snapshot, pe) do  memo1.Lines.Add(pe.szExeFile);
  finally
    CloseHandle(Snapshot);
  end;
end;         

这是比利时的边界框(比如中型),限制为admin_level = 2。此外,这还没有提供节点信息。

我知道如何改变这一点 - 但这也会带来所有邻国。有什么更好的方法呢?

谢谢! 拉尔夫

1 个答案:

答案 0 :(得分:1)

我建议您查看OSM Boundaries地图,这是一个专门用于全球范围边界的应用程序,几乎可以在任何级别上考虑:https://wambachers-osm.website/boundaries

在任何情况下,主立交桥api实例都有相当多的负载,在运行以下查询以获取德国的所有路径和节点时,您可能会遇到HTTP 429错误:

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

或:

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

要获得所有与卢森堡所有方式和节点的边界=行政关系,以下查询应该做(小心:返回47 MB​​的数据,包括德国,莱茵兰 - 帕拉丁和萨尔)。

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

也许也可以试试this alternative