2014-09-30 132 views
-3

我正在使用python及其第三方庫 - 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. 重複,直到所有的地方都被使用。總距離爲 。

我該如何在python中編寫它?或者算法會是什麼?

+0

你是怎麼試過的? – 2014-09-30 16:36:15

+0

我已經完成了將列表與起點進行比較的情況。例如,如果我發現紐約是壁櫥,我不知道如何將該城市與其他城市進行比較。 – ospzcn 2014-09-30 20:01:02

回答

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 2014-09-30 19:57:03

+0

更新我的答案應該接近你正在做的 – user2097159 2014-09-30 20:06:16

+0

什麼是「test = float(」inf「)」? – ospzcn 2014-09-30 20:12:10