Python: 如何从 OpenStreetMaps 中将水道作为图表导入,以便我可以使用 networkx 进行图表分析
Python: How can I import waterways from OpenStreetMaps as a graph so I can do graph analysis with networkx
首先感谢您花时间帮助我 :-)
我想从水道创建一个无向图,例如从威尼斯或阿姆斯特丹的运河。
OpenStreetMaps 有这些城市的水路网络图,但 OSMnx 包没有这样的过滤器来过滤水路(或者我可能还不知道 ;-))。
import osmnx as ox
G = ox.graph_from_bbox(52.36309012572587,4.890326718121118,52.36590601699889,4.898316757037793, network_type='all')
G_projected = ox.project_graph(G)
ox.plot_graph(G_projected)
我想我可以只下载整个地图,然后只过滤水路网络。但我不知道如何进一步解决这个问题。 OSMnx 将是最好的,因为我立即有一个图表,我可以将其用于 networksx 的功能,例如 Dijkstra 的最短路径。
我想到的另一种方式是立交桥套餐:
import overpass
import networkx as nx
import matplotlib.pyplot as plt
api= overpass.API()
data = api.get('way(52.36309012572587,4.890326718121118,52.36590601699889,4.898316757037793);(._;>;)', verbosity='geom')
[f for f in data.features if f.geometry['type'] == "LineString"]
但这仍然行不通,因为我还没有想出如何过滤数据并将其转换为图表以便 networkx 可以使用它。
希望你们(和女孩们 :-))能帮助我,因为我不知道如何走得更远。
亲切的问候,
杰伦
您可以使用 OSMnx 获取其他类型的基础设施,例如运河、铁路、电力线等,如 this example 中所述,使用 custom_filter
参数:
import osmnx as ox
ox.config(use_cache=True, log_console=True)
G = ox.graph_from_place('Amsterdam', retain_all=False, truncate_by_edge=False,
simplify=True, custom_filter='["waterway"~"canal"]')
fig, ax = ox.plot_graph(G)
首先感谢您花时间帮助我 :-) 我想从水道创建一个无向图,例如从威尼斯或阿姆斯特丹的运河。
OpenStreetMaps 有这些城市的水路网络图,但 OSMnx 包没有这样的过滤器来过滤水路(或者我可能还不知道 ;-))。
import osmnx as ox
G = ox.graph_from_bbox(52.36309012572587,4.890326718121118,52.36590601699889,4.898316757037793, network_type='all')
G_projected = ox.project_graph(G)
ox.plot_graph(G_projected)
我想我可以只下载整个地图,然后只过滤水路网络。但我不知道如何进一步解决这个问题。 OSMnx 将是最好的,因为我立即有一个图表,我可以将其用于 networksx 的功能,例如 Dijkstra 的最短路径。
我想到的另一种方式是立交桥套餐:
import overpass
import networkx as nx
import matplotlib.pyplot as plt
api= overpass.API()
data = api.get('way(52.36309012572587,4.890326718121118,52.36590601699889,4.898316757037793);(._;>;)', verbosity='geom')
[f for f in data.features if f.geometry['type'] == "LineString"]
但这仍然行不通,因为我还没有想出如何过滤数据并将其转换为图表以便 networkx 可以使用它。
希望你们(和女孩们 :-))能帮助我,因为我不知道如何走得更远。
亲切的问候,
杰伦
您可以使用 OSMnx 获取其他类型的基础设施,例如运河、铁路、电力线等,如 this example 中所述,使用 custom_filter
参数:
import osmnx as ox
ox.config(use_cache=True, log_console=True)
G = ox.graph_from_place('Amsterdam', retain_all=False, truncate_by_edge=False,
simplify=True, custom_filter='["waterway"~"canal"]')
fig, ax = ox.plot_graph(G)