对不起,大代码转储。我的问题是与我的最后一个循环。我试图建立一个新的字典,“候选人”,它包含一个网站与另一个网站的所有可能的组合,映射到它们之间的距离。例如,假设网站1的ID为1234,网站2的ID为1235,网站3的ID为1236.我最终想要的候选字典是{'1234_1235':distance,'1234_1236':distance},即全部从一个网站到其他网站的可能组合。这些组合已经包含在dictkey中;我只需要重新组织它们。这样我就可以离开最短距离,最终得到每个站点的“最近邻居”列表。设置一个新的键值字典
for i in np.arange(num_sites):
lat1 = lat[i]
lon1 = lon[i]
site1=site[i]
rat1 = lat1*np.pi/180.0
ron1 = lon1*np.pi/180.0
for j in np.arange(i+1,num_sites):
lat2 = lat[j]
lon2 = lon[j]
site2= site[j]
rat2 = lat2*np.pi/180.0
ron2 = lon2*np.pi/180.0
使用haversine公式
d = 2.0*np.arcsin(np.sqrt((np.sin((rat1-rat2)/2))**2 +
np.cos(rat1)*np.cos(rat2)*(np.sin((ron1-ron2)/2))**2))
# dist_arr[i,j] = 6371.0 * d
dictkey[site1+"_"+site2] = 6371.0*d
temporary = set()
for key in dictkey:
parts = key.split("_")
site_one = parts[0]
site_two = parts[1]
temporary.add(site_one)
for temps in temporary:
candidates = dict()
for key in dictkey:
parts = key.split("_")
site_one = parts[0]
site_two = parts[1]
if site_one == temps:
candidates[site_one] = dictkey[key]
很好,谢谢!有没有办法让nearest_site输出原始网站,所以我知道哪个网站是家,哪个网站是最近的网站?否则,如果我做类似candidates.get(site1,{})的东西,我会得到所有最近的邻居ID,但不是原始站点号。非常酷的想法,但字典词典! – Ravmcgav