python - 绘制 OpenStreetMap 关系不会生成连续线
问题描述
全部,
我一直在研究全球所有 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 pandas.DataFrame 包含“relation”类型的行(在本例中为 1)、几种“way”类型和许多“node”类型。据我了解,我将使用“关系”行、“成员”列来提取路径的顺序(指向节点),并使用该顺序来列出节点的纬度和经度(供以后在传单中使用),以正确的顺序,即导致地图上连续路径的顺序。
然而,事实并非如此。对于这种特殊的关系,我最终得到以下情节:
如果我们将其与关系在openstreetmap.org本身上的显示方式进行比较,我们会发现它出错了(关注路径的中间、东部)。我有很多这样的例子,尽管也有很多关系可以正确显示。
所以我想知道,我错过了什么?是否有需要忽略标签的节点?我已经尝试了几件事,包括省略带有任何标签的节点,这无济于事。某处我的处理是错误的,但我不明白在哪里。
解决方案
推荐阅读
- swift - 单击保存按钮后,让待办事项应用程序更新或刷新
- go - Go 项目不从 github 拉取导入更新
- python - Tried installing FastAi but I got "ERROR: No matching distribution found for torchvision>=0.7"
- c - Using main(int arc, char *argv[])?
- hyperlink - How to include the last word of hyperlink text in TRichEdit in the blue, underline format of the rest?
- c - Function return via pointer doesn't work correctly
- javascript - NodeJS createWriteStream JavaScript heap out of memory
- reactjs - React Incorrect render when combine withRouter/withStyles and mobx's observer
- lambda - 继续通过式程序
- reactjs - react-toastify showing twice with SSR