python-3.x 如何在osmnx中从.osm文件中只读取'drive' network_type?

bhmjp9jg  于 2023-04-08  发布在  Python
关注(0)|答案(1)|浏览(160)

通常,我通过以下方式指定边界框,将一些OSM数据读入图形中,以仅包含驾驶道路:
ox.graph_from_bbox(43.54645, 43.54235, -96.73444, -96.72649, network_type='drive')
上面的边界框的图形看起来像(当使用osmnx绘制时):

现在,我希望直接从一个.osm文件中读取,该文件是直接从OSM网站上选择相同的边界框坐标导出的,我调用:
ox.graph_from_xml(file_path)
然而,现在的问题是有更多的节点和边,如下图所示:

我怀疑这与我没有指定网络类型只包含可行驶表面的事实有关。但是,在graph_from_xml函数中没有可以指定此选项的选项。那么,如何将第二个图(来自.osm文件)缩小到第一个图(来自bbox坐标)?

jtjikinw

jtjikinw1#

graph_from_xml函数不接受network_type参数,因为您没有查询任何内容。您只是将该文件的内容加载到图模型中。文档:https://osmnx.readthedocs.io/en/stable/osmnx.html#module-osmnx.osm_xml
如果你想过滤文件的内容,你应该在创建文件时,在加载到OSMnx之前进行过滤。或者,如果绝对有必要,你可以将整个文件加载到OSMnx,然后手动删除你不想要的边,方法是循环遍历它们,检查它们的类型,将它们的(u, v, key)元组标识符添加到不想要的类型列表中,然后用networkx.remove_edges_from()从图中删除它们。

相关问题