gpt4 book ai didi

python - 绘制 OpenStreetMap 关系不会生成连续线

转载 作者:行者123 更新时间:2023-12-04 13:08:14 36 4
gpt4 key购买 nike

全部,
我一直在研究全局所有 MTB 步道的索引。我是 Python 人,所以对于所有涉及的步骤,我都尝试使用 Python 模块。
我能够像这样从 OSM 立交桥 API 中获取关系:

from OSMPythonTools.overpass import Overpass
overpass = Overpass()

def fetch_relation_coords(relation):
rel = overpass.query('rel(%s); (._;>;); out;' % relation)
return rel

rel = fetch_relation_coords("6750628")
我选择这个特定的关系 (6750628) 因为它是导致不连续(或其他错误)图的几个关系之一。
我处理“rel”对象以获得如下所示的pandas.DataFrame:
elements = pd.DataFrame(rel.toJSON()['elements'])
“元素”看起来像这样:
elements dataframe
Elements pandas.DataFrame 包含“关系”类型的行(在本例中为 1)、几个“方式”类型和许多“节点”类型。我的理解是,我将使用“关系”行、“成员”列来提取方式的顺序(指向节点),并使用该顺序来制作节点的纬度和经度列表(供以后在传单中使用),以正确的顺序,即在 map 上导致连续路径的顺序。
然而,事实并非如此。对于这种特殊关系,我最终得到了以下情节:
plot of latitudes and longitudes of OSM relation 6750628
如果我们将其与 openstreetmap.org 上显示关系的方式进行比较本身,我们看到它出错了(专注于小道的中部、东部)。我有很多发生这种情况的例子,尽管也有很多关系可以正确显示。
所以我想知道,我错过了什么?是否有需要忽略标签的节点?我已经尝试了几件事,包括省略带有任何标签的节点,这无济于事。某处我的处理是错误的,但我不明白在哪里。

最佳答案

如果我选择以不同的方式在彼此之上绘制,我确实会得到一个连续的图(索引包含每种方式所有节点的索引):
All ways plotted separately
在数据库中,我更愿意对节点进行排序,因为我可以使用它们即时制作 GPX 文件。但我想我确实用这种方法回答了我自己的问题,谢谢@scai 把我引向这个方向。

关于python - 绘制 OpenStreetMap 关系不会生成连续线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68375034/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com