从立交桥API中的节点ID获取纬度和经度

时间:2018-06-28 07:57:32

标签: openstreetmap overpass-api

我使用此查询从立交桥API中的节点ID获取纬度和经度:

from contextlib import contextmanager
import time

@contextmanager
def measuretime():
    start = time.time()
    try:
        yield
    finally:
        print(time.time() - start)

with measuretime():
    do_stuff()

我得到这个答案:

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

答案中的元素似乎具有其他顺序。现在,我想以与查询中相同的顺序获得答案。 (首先是节点2314028892,然后是30223035,...)

任何人都知道我该怎么做?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

旁注:您也可以在查询中省略(._;>;);。如果是节点则不需要。