使用 Overpass QL 获取行政边界

Tho*_*rin 2 postgresql postgis openstreetmap overpass-api

我尝试下载法国的州界(几十个州,不是大数据)。事实上,我寻找可以上传到我的 postgres 数据库中的边界来本地化 POI。OpenstreetMap 似乎是一个很好的数据源,所以我试图学习 Overpass QL,但它似乎比我想象的要难......在阅读了一些 wiki 之后,我来到了这个:

way["name:en"="France"];
way["type"="boundary"];
way["boundary"="administrative"];
way["admin_level"="4"];
Run Code Online (Sandbox Code Playgroud)

但是查询无休止地运行......我不确定我所做的查询,这是好的语法吗?谢谢

mmd*_*mmd 7

您的查询有几个问题:

  1. 管理边界经常被建模为关系,而不是 OSM 中的方式。因此查询方式way[...]不会返回您正在寻找的结果。
  2. 要获取具有多个标签的元素,您需要将它们像[key1=value1][key2=value2]. 您当前的查询将查询type=boundaryWORLDWIDE 的所有方式,然后再次查询WORLDWIDE 的所有方式admin_level=4。显然,这既非常昂贵,又不是您想要的。
  3. out语句必须返回一些结果。在您的情况下,查询实际上会运行,但它永远不会返回任何内容。

我的建议是改用以下查询:

rel["ISO3166-2"~"^FR"]
   [admin_level=4]
   [type=boundary]
   [boundary=administrative];
out geom;
Run Code Online (Sandbox Code Playgroud)

尝试在立交桥涡轮增压:http : //overpass-turbo.eu/s/lnv