通过 Overpass QL 获取行政边界

问题描述 投票:0回答:2

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

way["name:en"="France"];
way["type"="boundary"];
way["boundary"="administrative"];
way["admin_level"="4"];

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

postgresql openstreetmap postgis overpass-api
2个回答
10
投票

您的查询有几个问题:

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

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

rel["ISO3166-2"~"^FR"]
   [admin_level=4]
   [type=boundary]
   [boundary=administrative];
out geom;

在立交桥涡轮中尝试一下:http://overpass-turbo.eu/s/lnv


0
投票

您可以使用以下查询。根据您的需要调整管理级别。使用浏览器时要小心,因为它可能会返回大量数据。对我来说,是 60 MB。

area["boundary"="administrative"][admin_level=2]["name:en"=France] ->.boundaryarea;
rel(area.boundaryarea)[boundary=administrative][admin_level~"^[3-5]$"];
out geom;
© www.soinside.com 2019 - 2024. All rights reserved.