2014-09-30 2 views
-3

저는 python과 제 3 자 라이브러리 인 geopy를 사용하고 있습니다.도시 목록 간의 계산 거리 알고리즘

나는 예를

cities = ["New York, NY","Chicago, IL","Denver, CO"] 

에 대한 도시의 목록을 가지고 있고 나는 그들의 위도와 경도있어 경우 :

location = [(40.0149856, -105.2705456), (40.7127837, -74.0059413), (41.8781136, -87.6297982), (39.737567, -104.9847179)] 

내 문제는 다음과 같습니다

  1. 을 34.0522342 -118.2436849에서 시작;
  2. 시작 지점과 도시 목록 간의 거리를 비교하여 가장 가까운 위치의 을 찾습니다.
  3. 해당 위치에서 가장 가까운 다음 위치를 찾으십시오 [시작 지점 시작 지점]
  4. 모든 장소가 사용될 때까지 반복하십시오. 총 거리는 이됩니다.

어떻게 이것을 파이썬으로 작성할 수 있습니까? 또는 알고리즘은 무엇입니까?

+0

어떻게 했습니까? –

+0

나는 목록을 시작점과 비교했다. 예를 들어 뉴욕을 발견했다면 옷장이 나옵니다. 목록에서 나머지 도시와 비교하는 방법을 모르겠습니다. – ospzcn

답변

0

Geopy는 vincenty 또는 great_circles를 사용하여 거리를 계산할 수 있습니다. 가장 작은 거리를 찾는 목록을 반복하면 해당 위치에서 튀어 나온 총 거리에 해당 거리를 더하고 반복합니다. 다음과 같음 :

total = 0 
while location != []: 
    test = float("inf") 
    for loc in location: 
     #do distance calc here set = to dist 
     if dist < test: 
      test = dist 
      temp = loc 
    total += test 
    location.remove(loc) 
+0

그것이 내가 생각한 것입니다. 하지만 첫 번째 비교 후에 목록을 반복하는 방법. 예를 들어, 뉴욕이 시작점의 벽장 인 경우 다음 사람을 확인하는 방법은 무엇입니까? 목록의 길이가 바뀔 것입니다 – ospzcn

+0

내 대답이 업데이트되었습니다. 찾으려는 내용에 가깝습니다. – user2097159

+0

"test = float ("inf ")는 무엇입니까? – ospzcn