【发布时间】:2021-12-08 15:52:19
【问题描述】:
我有一个用于放置节点的坐标字典。我正在使用 networkx 模块来制作图表。
对于我的项目,我需要知道图中所有边的实际距离(以 m 或 km 为单位)。我现在使用的是欧几里德距离,但这当然不是真正的距离。我使用的是经纬度坐标。
这就是我的字典的一部分:
coord = {0:[ 4.98666883, 52.29477044],
1: [ 4.96969627 ,52.31851732],
2: [ 4.95026886 ,52.31294893],
3: [ 4.97016485 ,52.30191036],
4: [ 4.98254078 ,52.32017747],
5: [ 4.99130712 ,52.29755548],
6: [ 4.97406065 ,52.28985602]}
这是我用来增加边缘权重的定义:
def Length(G,coord):
for i,j in G.edges():
G[i][j]['weight'] = euclidean(coord[i],coord[j])
return G
这是我用于图表其余部分的代码。
G = nx.Graph()
G.add_nodes_from(coord.keys())
G = nx.complete_graph(coord.keys())
G = Length(G,coord) #Dit gaat goed nu
print(TotalLength(G))
出:500米
用于打印我正在使用的总长度:
Def TotalLength(G):
return G.size('weight')
这个定义每次都有效。
如何将实际距离添加到边缘?
提前致谢
【问题讨论】:
-
您需要使用Haversine 公式:en.wikipedia.org/wiki/Haversine_formula。看到这个问题:stackoverflow.com/questions/4913349/…
-
我认为我不够具体,但我想要此图中所有边的总长度。这个公式还适用吗?
-
@user17335922 离开计算机一分钟。 “图中所有边的总长度”代表什么?您将如何手动计算?你需要什么信息来计算它?
-
是的,我认为这个问题类似于这个问题。但是有什么方法可以一次计算图中所有边的长度吗?我是真正的菜鸟。
标签: python networkx latitude-longitude