Reduce openstreetmap graph size in networkx -
i have graph (transformed osmnx) of london's walk path, containing 667.588 edges, different highway
attributes (the street types in openstreetmap). running shortest_path algorithm quite slow (4 seconds). improve speed, want largely reduce number of edges in systematic way without losing main connections/city structures, not sure how it? suggestions? there way group close nodes more important one, reduce size?
you can extract edges desired highway types main graph g
:
highways_to_keep = ['motorway', 'trunk', 'primary'] h = nx.multidigraph() u,v,attr in g.edges(data=true): if attr['highway'] in highways_to_keep: h.add_edge(u,v,attr_dict=attr) h.node[u] = g.node[u] h.node[v] = g.node[v]
here, first initialized empty multidigraph
, type of graph used osmnx
, populate data main graph g
, if 'highway'
attribute in our list of highways_to_keep
. can find more highway types in this openstreetmap page.
our graph valid networkx graph, need 1 more thing before can take advantage of osmnx functionalities well. if execute g.graph
, see graph attributes contains crs
(coordinate reference system) , other things. should add information newly create graph:
h.graph = g.graph
here plot of h
, osmnx.plot_graph(h)
:
Comments
Post a Comment