我正在使用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.node
query_result.ways
和query_result.relations
给予空集。我也尝试了query_result.get_elements
或query_result['elements']
,但我无法访问数据。
所以我问我如何才能正确地检索数据,并把它放在一个csv文件/pandas dataframe中,如Overpass所示?
先谢了。
1条答案
按热度按时间6yjfywim1#
您可能必须循环使用“query_result”来访问路径和节点,然后将数据转换为您想要的任何格式。
例如