

Pythonで緯度経度をインプットしたときに、複数の2地点間距離を求めるコードを作成しています。  
公式をもとに距離を求める関数は作成できたのですが、今のコードだと各地点の緯度経度を都度インプットしてそれぞれ距離を出さないといけないので、地点数が増えたときに膨大な手間がかかります。

ですので添付画像のようなリストをインポートして、経度緯度情報をもとに総当たりで2地点間距離を出せるようにしたいのですが、どのような書き方をすれば良いかご教示お願いできませんでしょうか。

コードは以下

[code]

    #モジュールimport
    from math import sin, cos, acos, radians
    
    #地球の半径を6371kmとする
    earth_rad = 6371
    
    ##関数定義
    def latlng_to_xyz(lat, lng):
        rlat, rlng = radians(lat), radians(lng)
        coslat = cos(rlat)
        return coslat*cos(rlng), coslat*sin(rlng), sin(rlat)
    
    def dist_on_sphere(pos0, pos1, radius=earth_rad):
        xyz0, xyz1 = latlng_to_xyz(*pos0), latlng_to_xyz(*pos1)
        return acos(sum(x * y for x, y in zip(xyz0, xyz1)))*radius
    
    Osaka = 34.702113, 135.494807
    Tokyo = 35.681541, 139.767103
    London = 51.476853, 0.0
    
    print(dist_on_sphere(Osaka, Tokyo)) # 403.63km
    print(dist_on_sphere(London, Tokyo)) # 9571.22km
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/1KorS.png)](https://i.stack.imgur.com/1KorS.png)


CC BY-SA 4.0
2020-09-04T06:28:46.493
70128
2020-09-04T10:14:31.783
2020-09-04T10:04:43.847
32986
41580
question
python python3
リストをもとに総当たりさせて、経度緯度から距離を求めるコード


リストが意図している形式かわかりませんが、サンプルを提示しますね。

[code]

    store_list = [
        [0, "札幌店",   "北海道", 43.062083, 141.354389],
        [1, "仙台店",   "宮城県", 38.268056, 140.869722],
        [2, "東京店",   "東京都", 35.689472, 139.691750],
        [3, "名古屋店", "愛知県", 35.181389, 136.906389],
        [4, "大阪店",   "大阪府", 34.693750, 135.502111]
    ]
    
    def print_distance_list(lst):
        store, lat, lon = 1, 3, 4
        for i, lhs in enumerate(lst):
            for rhs in lst[i+1:]:
                dist = dist_on_sphere((lhs[lat], lhs[lon]), (rhs[lat], rhs[lon]))
                print(lhs[store], rhs[store], f'{dist:.2f}', 'km')
    
    print_distance_list(store_list)
    
[/code]


CC BY-SA 4.0
2020-09-04T09:57:13.587
70137
2020-09-04T10:04:35.057
2020-09-04T10:04:35.057
32986
41756
70128
answer