首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用OSMnx从OSM格式的XML文件创建过滤图?

如何使用OSMnx从OSM格式的XML文件创建过滤图?
EN

Stack Overflow用户
提问于 2020-08-18 09:56:32
回答 1查看 1.3K关注 0票数 1

在Python中,我们可以使用函数osmnx.graph_from_place()和过滤器custom_filter='["waterway"="river"]'来获得经过过滤的图形。

代码语言:javascript
运行
复制
import osmnx as ox
G = ox.graph_from_place("isle of man", custom_filter='["waterway"="river"]') # download directly.
fig, ax = ox.plot_graph(G, node_color='r')

我想从我的磁盘中从一个OSM格式的XML文件中获得一个过滤过的图形,但是函数xml()不支持参数custom_filter。如何从*.osm数据中获取经过过滤的图形?

这将只绘制整个*.osm数据集:

代码语言:javascript
运行
复制
import osmnx as ox
G = ox.graph_from_xml("isle-of-man-latest.osm") # from disk.
fig, ax = ox.plot_graph(G, node_color='r')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-18 15:42:08

OSMnx的custom_filter参数允许您使用OverpassQL筛选过路查询,以生成过滤后的原始数据以用于图形构造。如果您正在加载一个.osm文件,那么您将显式地绕过天桥查询步骤,直接导入原始数据的本地文件以供图形构造。OSMnx根据所提供的任何原始数据构造图形。

你有几个选择。首先,您可以直接使用OSMnx的graph_from_placegraph_from_polygon函数来获取图形,而不是在可能的情况下从.osm文件加载。其次,如果您需要使用graph_from_xml并希望对其进行筛选,您可以在构建它之后过滤它:

代码语言:javascript
运行
复制
import osmnx as ox
ox.config(use_cache=True, log_console=True)

# create a graph with more edges than you want
G = ox.graph_from_place('Piedmont, CA, USA', network_type='drive', simplify=False)

# filter graph to retain only certain edge types
filtr = ['tertiary', 'tertiary_link', 'secondary', 'unclassified']
e = [(u, v, k) for u, v, k, d in G.edges(keys=True, data=True) if d['highway'] not in filtr]
G.remove_edges_from(e)

# remove any now-disconnected nodes or subcomponents, then simplify toplogy
G = ox.utils_graph.get_largest_component(G)
G = ox.simplify_graph(G)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63466207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档