【发布时间】:2021-09-14 07:39:00
【问题描述】:
我正在尝试运行此示例代码。它说“AttributeError:'MultiDiGraph'对象没有属性'node'”,我发现g.node已被弃用并被g.nodes取代。但是如果我只是将其更改为 g.nodes,则会出现另一个错误:
Traceback (most recent call last):
File "/home/anderledani/PycharmProjects/pythonProject1/snaptoroadtest.py", line 12, in <module>
nn = min((u, v), key=lambda n: ox.distance.great_circle_vec(lat, lng, G.nodes[n]['y'], G.nodes[n]['x']))
File "/home/anderledani/PycharmProjects/pythonProject1/snaptoroadtest.py", line 12, in <lambda>
nn = min((u, v), key=lambda n: ox.distance.great_circle_vec(lat, lng, G.nodes[n]['y'], G.nodes[n]['x']))
File "/home/anderledani/PycharmProjects/pythonProject1/venv/lib/python3.8/site-packages/networkx/classes/reportviews.py", line 187, in __getitem__
return self._nodes[n]
KeyError: 0
我尝试运行的代码:
import matplotlib.pyplot as plt
import osmnx as ox
ox.config(log_console=True, use_cache=True)
# get graph and define a reference point
G = ox.graph_from_point((13.743942, 100.570006), network_type='drive', dist=350, simplify=True)
lat = 13.744001
lng = 100.570457
# get nearest node incident to nearest edge to reference point
geom, u, v = ox.distance.get_nearest_edge(G, (lat, lng))
nn = min((u, v), key=lambda n: ox.distance.great_circle_vec(lat, lng, G.nodes[n]['y'], G.nodes[n]['x']))
# plot the reference point and this nearest node
fig, ax = ox.plot_graph(G, node_color='#999999', show=False, close=False)
ax.scatter(lng, lat, c='r', marker='x')
ax.scatter(G.nodes[nn]['x'], G.nodes[nn]['y'], c='r', s=50, zorder=2)
plt.show()
【问题讨论】: