Python 如何比较两个图中的节点和边?
我有柏林2020年1月1日和2021年1月1日的图表,但我如何比较这两张地图中边和节点的变化Python 如何比较两个图中的节点和边?,python,networkx,osmnx,Python,Networkx,Osmnx,我有柏林2020年1月1日和2021年1月1日的图表,但我如何比较这两张地图中边和节点的变化 import osmnx as ox import pandas as pd import networkx as nx import matplotlib.pyplot as plt from itertools import combinations from IPython.display import clear_output import matplotlib.cm as cm import
import osmnx as ox
import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt
from itertools import combinations
from IPython.display import clear_output
import matplotlib.cm as cm
import matplotlib.colors as colors
from IPython.display import Image
在2021-01-01年获得柏林网络
ox.utils.config(overpass_settings='[out:json][timeout:180][date:"2021-01-01T00:00:00Z"]')
G_21=ox.graph.graph_from_place('Berlin,Germany', network_type='all_private', simplify=True, retain_all=True, truncate_by_edge=False,which_result=None, buffer_dist=None, clean_periphery=True,custom_filter='["highway"~"cycleway|path|living_street"]["bicycle"!~"no"]')
fig, ax = ox.plot_graph(G_21,node_size=1,edge_linewidth=0.5)
2020-01-01柏林网络
ox.utils.config(overpass_settings='[out:json][timeout:180][date:"2020-01-01T00:00:00Z"]')
G_20=ox.graph.graph_from_place('Berlin,Germany', network_type='all_private', simplify=True, retain_all=True, truncate_by_edge=False,which_result=None, buffer_dist=None, clean_periphery=True,custom_filter='["highway"~"cycleway|path|living_street"]["bicycle"!~"no"]')
fig, ax = ox.plot_graph(G_20,node_size=1,edge_linewidth=0.5)
现在,我想知道如何识别节点和边的更改,然后在G_21中标记添加的节点和边,在G_20中标记删除的节点和边。记住,只使用NetworkX图形对象,因此您可以像对待任何NetworkX图形一样对待生成的两个图形,包括使用设置逻辑处理它们的节点/边:
将osmnx作为ox导入
地点='德国柏林'
cf=“[“高速公路”~“自行车道|小径|生活街”][“自行车”!~“不”]
设置=“[out:json][timeout:180][date:{year}-01-01T00:00:00Z]”
#获取2021年的图表
ox.utils.config(立交桥设置=settings.format(年份=2021))
G_21=ox.graph.graph_from_place(place,custom_filter=cf,retain_all=True)
#获取2020年图表
ox.utils.config(立交桥设置=settings.format(年份=2020))
G_20=ox.graph.graph_from_place(place,custom_filter=cf,retain_all=True)
#标识已删除/添加的节点/边
nodes_del=G_20.nodes-G_21.nodes
nodes_add=G_21.nodes-G_20.nodes
边=G_20.边-G_21.边
边添加=G_21.边-G_20.边
除了确定删除/添加了哪些节点/边外,您还可能对其属性值的更改感兴趣,在这种情况下,您可以检查节点/边的属性dict,并查看哪些键/值组合发生了更改