2

我正在尝试使用在网上找到的这个函数来计算地球上两个经纬度点之间的距离。

但是,我不知道如何传递我的纬度和经度值,因为我替换lat1,lon1lat2,lon2并且每次都会出错。

我在哪里输入我想要的纬度和经度值?

import math

def distance(origin, destination):
    lat1, lon1 = origin
    lat2, lon2 = destination
    radius = 6371 # km

    dlat = math.radians(lat2-lat1)
    dlon = math.radians(lon2-lon1)
    a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(lat1)) \
        * math.cos(math.radians(lat2)) * math.sin(dlon/2) * math.sin(dlon/2)
    c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
    d = radius * c

    return d

编辑:例如,如果我有

lat1 = 20 and lon1 = 100 
lat2 = 30 and lon2 = 110 

为什么当我用函数中的数字替换 lon1 时它会失败?

4

2 回答 2

3

像这样使用它:

distance((lat1, lon1), (lat2, lon2))

请注意,该函数接收两个二元素元组(或两个二元素列表,它们是相同的)作为参数,每个元组代表一个(纬度,经度)对。等效地:

origin = (lat1, lon1)
destination = (lat2, lon2)
distance(origin, destination)
于 2013-05-30T02:08:32.560 回答
0

您可以通过为每个参数传递元组来使用命名参数调用它,例如:

distance(origin=origin_tuple, destination=dest_tuple)

在哪里

origin_tuple = (origin_lat , origin_long)
dest_tuple = (dest_lat , dest_long)
于 2013-05-30T02:48:44.020 回答