0

これは、緯度/経度を介して距離を計算するために使用したい関数です

def calculateDistance( latOne, lonOne, latTwo, lonTwo ):
    from decimal import Decimal
    latOne, lonOne, latTwo, lonTwo = [Decimal(x) for x in (latOne, lonOne, latTwo,lonTwo)]
    DISTANCE_CONSTANT = 111120.0
    coLat = math.fabs(lonOne - lonTwo)
    alpha = 90 - latTwo
    beta  = 90 - latOne

    cosAlpha = math.cos(math.radians(alpha))
    cosBeta  = math.cos(math.radians(beta))
    sinAlpha = math.sin(math.radians(alpha))
    sinBeta  = math.sin(math.radians(beta))
    cosC     = math.cos(math.radians(coLat))

    cos_of_angle_a = (cosAlpha * cosBeta)
    cos_of_angle_b = (sinAlpha * sinBeta * cosC)
    cos_of_angle_c = cos_of_angle_a + cos_of_angle_b
    angle          = math.degrees(math.acos(cos_of_angle_c))
    distance       = angle * DISTANCE_CONSTANT
    return distance

たとえば、リストに緯度と経度のセットがあるとします。

lat = ['200', '210', '240', '300'] 
long = ['10', '20', '30', '40']

と等しいlatOne、の既知の座標lonOne

lat = 100 
lon = 200 

リストをループして関数に適用する方法はありますか? 基本的に、既知の座標に常に等しく設定し、リストをループして、リスト内のこれらの値をリスト内のすべての値に提供したいと考えlatOnelonOneいますlatTwolonTwo

簡単に言えば、値を関数に渡し、距離を返し、すべての緯度と経度の値に対してこれをやり直す方法はありますか?

例えば:

latOne =100, lonOne = 200, latTwo = 200, lonOne = 10 
to function then return distance.
then run 
latOne =100, lonOne = 200, latTwo = 210, lonOne = 20 

long と lat のすべてのリスト値が関数に入力されるまで、以下同様です。

4

2 に答える 2

3

次のような意味ですか。

results = [CalculateDistance(100,200,lattwo,lontwo) 
           for lattwo,lontwo in zip(latOne,lonOne)]
于 2013-06-03T13:12:39.863 に答える