计算两个经纬度之间的距离软件_python-计算excel中各个地点之间的距离

2ef49cb6045a26ab982cfd6b1bec714a.png

python-计算excel中各个地点之间的距离

记录这个主要是为了熟悉一下pandas中一些函数的应用。
首先看一下表格中的数据:

e86891e051194d9aa6ac2b9f8c278ab2.png


用到的是GEOID,INTPTLAT,INTPLONG。
其中GEOID是每一条数据的id,后两个字段是经纬度。
需要做的是,从GEOID中抽出几个作为目标地点。然后计算其他地点到目标地点的距离,并找出最短距离:

8470788a1d019989e99f45920c3bdd7b.png

思路

首先我得把目标地点的id,经纬度给分别存起来:

goalID=['6001406500','6001423200','6001402700','6073008800']
goalLat=[]
goalLong=[]
result=pd.DataFrame()
for j in range(len(goalID)):
    for i in range(len(ID)):
        if ID[i]==int(goalID[j]):
            goalLat.append(lat[i])
            goalLong.append(long[i])
            break

由于结果的第一列是所有ID,所以我直接赋值:

result=pd.DataFrame()
result['GEOID']=allData["GEOID"]

接下来就是计算一个所有地点到目标地点的距离,然后就往result里插入一列(用的是insert函数):

for i in range(len(goalID)):
    distanceList = []
    for j in range(len(ID)):
        distanceList.append(math.pow((lat[j]-goalLat[i]),2)+math.pow(long[j]-goalLong[i],2))
    result.insert(len(result.columns),str(goalID[i]),distanceList)

大致讲一下insert的用法,insert是插入列,首先:
第一个参数是要插入的位置,这里我们直接用 len(result.columns) 意思是默认插在末尾
第二个参数是列名
第三个参数就是要插入的数据了
把所有距离都计算并插入了,我们还要计算最小距离。
这个还是使用pandas的函数:

result["min"]=result.min(axis=1)

这里,axis=1为求每行的最小值。
最后是存储数据,这里还是用pandas的函数to_csv。

result.to_csv("result.csv",index=0)

需要注意的是,这里 inedx=0 是不需要行索引,如掉去掉这一行的话,会在最左列还有一列没有列名,列的元素为1,2,3,4...。

f4f09194bdecb699225ad4d881de7d5c.png
专业代写,扫码了解
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值