我正在计算两点(纬度,经度)的最近距离。我的代码如下:
R = 6378.0
distsecKM = []
for i in range(len(pLat)):
lat1 = math.radians(pLat[i])
lon1 = math.radians(pLon[i])
temp = []
for j in range(len(secondaryLat)):
lat2 = math.radians(secondaryLat[j])
lon2 = math.radians(secondaryLon[j])
diffLat = lat2 - lat1
diffLon = lon2 - lon1
a = ((math.sin(diffLat / 2))**2) + (math.cos(lat2)) * (math.cos(lat1)) * ((math.sin(diffLon / 2))**2)
b = 2 * math.atan2(sqrt(a), sqrt(1 - a))
dist = R * b
temp.append(dist)
distsecKM.append(min(temp))
我正在得到point1(lat1,lon1)和point2(lat2,lon2)之间的最小距离。但是,我也想获取用于计算最小距离的lat2和lon2,并将其保存到列表中。
我该怎么办?
答案 0 :(得分:1)
(我假设您的意思是temp
和temp2
相同。)
代替
temp.append(dist)
您可以简单地
temp.append((dist, lat2, lon2))
min(temp)
的计算与以前相同,因为元组按字典顺序排序(即按第一项排序,如果按第二项相等,等等)。
如果您不进行任何其他更改,那么distsecKM
将包含一个元组,而不是单个值,您必须将其解包,例如像这样:
dist, lat, lon = distsecKM[0]
或者如果您在for
循环中使用它:
for dist, lat, lon in distsecKM:
# ...
答案 1 :(得分:0)
您可以创建一个列表
lat2List = []
lon2List = []
,然后继续将值分别附加到这些列表中。
lat2List.push(lat2)
lon2List.push(lon2)