在python中以最小距离返回lat long
我想找到最短距离的横向长组合。x_lat,x_long是常数。我想得到y_纬度,y_经度的组合,计算距离,找出最小距离,并返回相应的y_纬度,y_经度 下面是一个尝试在python中以最小距离返回lat long,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我想找到最短距离的横向长组合。x_lat,x_long是常数。我想得到y_纬度,y_经度的组合,计算距离,找出最小距离,并返回相应的y_纬度,y_经度 下面是一个尝试 x_lat = 33.50194395 x_long = -112.048885 y_latitude = ['56.16', '33.211045400000003', '37.36'] y_longitude = ['-117.3700631', '-118.244'] 我有一个距离函数,它会返回距离 from math
x_lat = 33.50194395
x_long = -112.048885
y_latitude = ['56.16', '33.211045400000003', '37.36']
y_longitude = ['-117.3700631', '-118.244']
我有一个距离函数,它会返回距离
from math import radians, cos, sin, asin, sqrt
def distance(lon1, lat1, lon2, lat2):
"""
Calculate the great circle distance between two points
on the earth (specified in decimal degrees)
"""
# convert decimal degrees to radians
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
# haversine formula
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * asin(sqrt(a))
km = 6367 * c
return km
所以我尝试了下面的方法
dist = []
for i in itertools.product(y_latitude , y_longitude):
print i
dist.append(distance(float(i[1]),float(i[0]),float(x_long), float(x_lat)))
print dist.index(min(dist))
因此,这将创建y_纬度和y_经度的所有可能组合,并计算距离并返回最小距离的索引。我无法让它返回相应的y_纬度和y_经度
这里最小距离的指数是2,输出是2。所需的输出为“33.211045400000003”,“-117.370631”,我无法使其返回
有人能帮我解决最后一个问题吗
谢谢你试试这个
dist = []
for i in itertools.product(y_latitude , y_longitude):
dist.append([distance(float(i[1]),float(i[0]),float(x_long), float(x_lat)),i])
min_lat,min_lng = min(dist, key = lambda x: x[0])[1]
附加lat和long以及dist,并获得第一个索引的min,返回mindist,而不是返回其索引,该索引只返回最小距离。我想要最小距离对应的y_lat和y_long