1

我有兴趣在给定纬度/经度点的情况下检索所有管理级别的多边形边界。

我有一个观点——比如说(34.0500,-118.2500)。

我想检索 city(admin_level=8)/state(admin_level=4)/country(admin_level=2) 信息以及每个级别的多边形边界。

目前,我能够获得我感兴趣的领域:

[out:json];
is_in(34.0500, -118.2500);
out;

{
  "type": "area",
  "id": 3600148838,
  "tags": {   
           "admin_level": "2",
           "border_type": "national",
           "boundary": "administrative",
           "name": "United States of America",
           "type": "boundary",
           "wikidata": "Q30",
           "wikipedia": "en:United States"
          }
},

{
  "type": "area",
  "id": 3600165475,
  "tags": {
           "ISO3166-2": "US-CA",
           "admin_level": "4",
           "boundary": "administrative",
           "name": "California",
           "type": "boundary"
          }
},
{
 "type": "area",
 "id": 3600207359,
 "tags": {
          "admin_level": "8",
          "boundary": "administrative",
          "name": "Los Angeles",
          "place": "city",
          "short_name": "LA",
          "type": "boundary"
         }
}

但是,我不确定如何获取每个 admin_levels 的多边形边界。如果可能的话,我想将其作为单个查询来完成。

我试过了:

area[name="Los Angeles"][admin_level=8][boundary=administrative]->.laarea;
rel(pivot.laarea);
out geom;

但这似乎返回了世界上每个名为“洛杉矶”的城市的数据。

有没有办法使用上一个查询中的区域 ID 执行上述查询?有一个更好的方法吗?

我一直在使用http://overpass-turbo.eu/来测试我的查询。

4

1 回答 1

4

您可以结合is_in查询的其余部分,如以下查询所示:

is_in(34.0500, -118.2500);
rel(pivot)[boundary=administrative][admin_level~"^[248]$"];
out geom;

这将返回您所在位置 (34.0500, -118.2500) 级别 2、4 和 8 的所有行政边界。is_in将简单地生成一个区域列表,供以下(枢轴)使用。

立交桥涡轮链接: http: //overpass-turbo.eu/s/e01

当使用显式输入集时,这也可以写成:

is_in(34.0500, -118.2500)->.areas;
rel(pivot.areas)[boundary=administrative][admin_level~"^[248]$"];
out geom;
于 2016-01-26T19:56:52.367 回答