Python: как мне импортировать водные пути из OpenStreetMaps в виде графика, чтобы я мог выполнять анализ графиков с помощью 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 был бы лучшим вариантом, поскольку тогда у меня сразу же появился график, который я мог бы использовать для функций сетей x, таких как кратчайший путь Дейкстры.

Другой способ, о котором я думал, - это пакет путепровода:

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 мог их использовать.

Надеюсь, вы, ребята (и девушки :-)), сможете мне помочь, потому что я понятия не имею, как двигаться дальше.

С уважением,

Jeroen


person Jeroen123    schedule 13.09.2018    source источник


Ответы (1)


Вы можете использовать OSMnx для получения других типов инфраструктуры, таких как каналы, железные дороги, линии электропередач и т. Д., Как описано в этот пример, используя параметр 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)
person gboeing    schedule 19.09.2018
comment
Спасибо, если вы наберете Infrastructure = 'way [waterway], это работает, теперь мне просто нужно правильно настроить график! :-) - person Jeroen123; 20.09.2018