功能需求:有多组经纬度坐标,求坐标之间的距离并取最大距离值。
分析思路:网上有很多根据坐标求距离的算法,找到一个geopy的包中提供测算坐标距离的方法,简单易用,代码如下。
1 from geopy.distance import geodesic #用geodesic函数测算坐标距离 2 #计算这30组坐标之间的距离并取最大距离值 3 yx = ["22.580788,113.920658", "22.580833,113.920476", "22.580828,113.920453", "22.580819,113.920422", "22.580729,113.920324", 4 "22.580703,113.920316", "22.580683,113.92032", "22.580656,113.920332", "22.580528,113.920476", "22.580177,113.920847", 5 "22.579831,113.921199", "22.579538,113.921484", "22.57929,113.921735", "22.578931,113.922101", "22.578926,113.922119", 6 "22.578921,113.922143", "22.578917,113.92228", "22.57892,113.922311", "22.578926,113.922324", "22.579358,113.922812", 7 "22.579872,113.923412", "22.579909,113.923436", "22.579937,113.92344", "22.579954,113.923437", "22.579964,113.923428", 8 "22.580096,113.923141", "22.580266,113.922667", "22.580569,113.921566", "22.580713,113.920971", "22.580788,113.920658"] 9 10 xydis = [] #创建列表存放距离 11 for i in range(len(yx)): #使用循环遍历所有坐标 12 for j in range(i + 1, len(yx)): #加入嵌套循环,使每两个坐标之间都要计算 13 geodesic(yx[i], yx[j]).m #计算两组坐标之间的距离,单位:m(米) 14 xydis.append((geodesic(yx[i], yx[j]).m)) #距离值追加到xydis中 15 16 print(len(xydis)) #30组坐标之间的取值数量 17 print(max(xydis)) #取最大距离值 18 19 output: 20 435 #30组坐标产生435个距离值 21 332.68025785454165 #最大距离值332.68025785454165米