【问题标题】:get latitude and longitude from node id in overpass API从立交桥API中的节点id获取纬度和经度
【发布时间】:2018-06-28 18:40:43
【问题描述】:

我使用此查询从 overpass API 中的节点 id 获取纬度和经度:

[out:json]; (
  node(2314028892);
  node(30223035);
  node(268195434);
  node(30223039);
); (._;>;); out;

我得到这个答案:

{
  "version": 0.6,
  "generator": "Overpass API 0.7.55.3 9da5e7ae",
  "osm3s": {
    "timestamp_osm_base": "2018-06-28T07:47:01Z",
    "copyright": "The data included in this document is from www.openstreetmap.org. The data is made available under ODbL."
  },
  "elements": [

{
  "type": "node",
  "id": 30223035,
  "lat": 52.2917680,
  "lon": 10.5265481
},
{
  "type": "node",
  "id": 30223039,
  "lat": 52.2894248,
  "lon": 10.5268394
},
{
  "type": "node",
  "id": 268195434,
  "lat": 52.2897618,
  "lon": 10.5267852
},
{
  "type": "node",
  "id": 2314028892,
  "lat": 52.2919739,
  "lon": 10.5265271,
  "tags": {
    "bus": "yes",
    "name": "Rühmer Weg",
    "network": "VRB",
    "operator": "Braunschweiger Verkehrs-GmbH",
    "public_transport": "stop_position",
    "ref": "464"
  }
}
  ]
}

答案中的元素似乎有另一个顺序。如果我能以与查询相同的顺序得到答案,我现在想。 (首先是节点 2314028892,然后是 30223035,...)

任何人都知道我该如何完成这项工作?

【问题讨论】:

    标签: openstreetmap overpass-api


    【解决方案1】:

    在每个查询语句后使用“out”:

    [out:json]; 
    node(2314028892);out
    node(30223035);out
    node(268195434);out;
    node(30223039);out;
    

    出于性能原因,我建议您将此作为后期处理步骤。您已经知道正确的序列,因此您可以轻松地将其应用于查询结果。此外,您可以在单个查询中指定多个节点 ID 值:

    [out:json]; node(id:2314028892, 30223035, 268195434, 30223039);out;
    

    旁注:您也可以在查询中省略(._;>;);。节点情况下不需要。

    【讨论】:

    • 把它放在一个让我 URI too large (414) 错误,似乎你必须把它分成更小的块。 (现在 100 块可以正常工作)
    • 您需要使用 HTTP POST 而不是 GET 并在 http 正文中提供查询以克服此限制。
    猜你喜欢
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 2018-11-27
    • 1970-01-01
    相关资源
    最近更新 更多