2013-05-30 3 views
2

Я пытаюсь использовать эту функцию, найденную в Интернете, чтобы рассчитать расстояние между двумя точками широты и долготы на Земле.Как передать параметры функции Python?

Однако, я не знаю, как передать свои значения широты и долготы, потому что заменить lat1, lon1 и lat2, 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 

EDIT: Например, если у меня есть

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

почему он не в состоянии, когда я заменяю lon1 с номером в функции?

ответ

3

использовать его как это:

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

Обратите внимание, что функция принимает в качестве параметров два двухэлементных кортежей (или два списка два элемента, это было бы то же самое), каждый из которых представляет (широта , долгота) пара. Эквивалентное:

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

Im до сих пор путают о том, как использовать это, как я держу когда я пытаюсь выполнить ошибку. Скажем, мои lat1 = 20 и мои lon1 = 100 и lat2 = 30 и lon2 = 110, как бы я тогда поместил эти числа в ваше уравнение и всю функцию. Спасибо – user2430623

+1

Нравится это: 'distance ((20, 100), (30, 200))' –

+0

Lopez, пожалуйста, вы можете редактировать внутренний код выше, потому что Im пытается ваш, и он вообще не работает, потому что я продолжаю получать недопустимый синтаксис, когда я печатаю в кортежах, как вы показали – user2430623

0

Вы могли бы назвать его с именованными параметрами, передавая кортежи для каждого из них, как:

distance(origin=origin_tuple, destination=dest_tuple) 

Где

origin_tuple = (origin_lat , origin_long) 
dest_tuple = (dest_lat , dest_long) 
Смежные вопросы