これは、緯度/経度を介して距離を計算するために使用したい関数です
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
リストをループして関数に適用する方法はありますか? 基本的に、既知の座標に常に等しく設定し、リストをループして、リスト内のこれらの値をリスト内のすべての値に提供したいと考えlatOne
てlonOne
いますlatTwo
。lonTwo
簡単に言えば、値を関数に渡し、距離を返し、すべての緯度と経度の値に対してこれをやり直す方法はありますか?
例えば:
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 のすべてのリスト値が関数に入力されるまで、以下同様です。