2013-05-30 1 views
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를 교체 할 때 왜 실패 하는가? 이런

답변

3

사용하여 :

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

공지 두 개의 원소 튜플 파라미터로서 기능 수신 (또는 2 개의 요소 목록을가 동일한 것)이, 각 A (위도를 나타내는 , 경도) 쌍. 동등하게 :

origin = (lat1, lon1) 
destination = (lat2, lon2) 
distance(origin, destination) 
+0

임 여전히 혼란 어디 유지로 실행하려고하면 오류가 발생합니다. 내 lat1 = 20, 내 lon1 = 100, lat2 = 30, lon2 = 110라고하면 어떻게 그 수를 방정식과 함수 전체에 넣을 수 있을까요? 감사합니다 – user2430623

+1

'(20, 100), (30, 200))' –

+0

로페즈 당신이 시도하기 때문에 위의 초기 코드를 편집 할 수 있습니까? 당신이 보여준 것처럼 튜플에서 – user2430623

0

당신처럼, 각각에 대해 튜플을 전달하여 명명 된 매개 변수와 함께 호출 할 수 있습니다로 사용하는 방법을

distance(origin=origin_tuple, destination=dest_tuple) 

내가

origin_tuple = (origin_lat , origin_long) 
dest_tuple = (dest_lat , dest_long)