【问题标题】:Real distance lat lon coordinates imported from a dictionary从字典导入的真实距离经纬度坐标
【发布时间】: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')

这个定义每次都有效。

如何将实际距离添加到边缘?

提前致谢

【问题讨论】:

标签: python networkx latitude-longitude


【解决方案1】:
from haversine import haversine

def TotalLength(G,coord):
    for i,j in G.edges():
        G[i][j]['weight'] = haversine(coord[i],coord[j])
    return G

def Length(G):
    return G.size('weight') 
print(TotalLength(G))

我还必须将坐标从 [4.98666883, 52.29477044] 更改为 [52.29477044, 4.98666883]。

感谢大家的帮助。

此致,

一个编程傻瓜,不知何故必须在没有编程经验的情况下用 python 完成他的论文。

【讨论】:

    猜你喜欢
    • 2014-12-16
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多