使用Overpy和Python从OSM收集信息:以表格形式收集结果时的问题

iezvtpos  于 2023-03-28  发布在  Python
关注(0)|答案(1)|浏览(105)

我正在使用Overpass查询来收集通过坐标识别的给定框中不同类型方式的长度信息。我设法使用OverPass Turbo来完成,但我在Python中遇到了麻烦。
在Overpass中,我可以编写以下查询:

[out:csv(length,value)];
way[highway](50.6,7.0,50.8,7.3);
for (t["highway"])
{
  make stat value=_.val,length=sum(length());
  out;
}

这个查询给了我一个我喜欢的有两个列(长度和值)的表。然而,我在使用overpy在python中实现它时遇到了麻烦。当然这不能工作:

import overpy
api = overpy.Overpass()

query_result = api.query("""
[out:csv(length,value)];
way[highway](50.6,7.0,50.8,7.3);
for (t["highway"])
{
  make stat value=_.val,length=sum(length());
  out;
}
    """)

所以我试着用JSON导出它

query_result = api.query("""
[out:json];
way[highway](50.6,7.0,50.8,7.3);
for (t["highway"])
{
  make stat value=_.val,length=sum(length());
  out;
}
    """)

它有点工作(我猜),因为我得到:<overpy.Result at 0x7fcbfd659610>
然而,现在我不知道如何访问数据,因为我在立交桥。query_result.nodequery_result.waysquery_result.relations给予空集。我也尝试了query_result.get_elementsquery_result['elements'],但我无法访问数据。
所以我问我如何才能正确地检索数据,并把它放在一个csv文件/pandas dataframe中,如Overpass所示?
先谢了。

6yjfywim

6yjfywim1#

您可能必须循环使用“query_result”来访问路径和节点,然后将数据转换为您想要的任何格式。
例如

for highway in query_result.ways: 
           # Each iteration should give you the way
           for node in highway.nodes:
             # Each iteration should give you the node the value

相关问题