地理空间距离计算及优化(根据两个点经纬度计算距离)
- # coding: utf-8
- # 1.球面距离公式
- # 2.经纬度数据处理
- # In[153]:
- import pandas as pd
- table = pd.read_excel('./data/行政区划数据库_with 经纬度-省市区-邮编-区号-拼音-简称.xls')
- table_sf = table[table['LevelType']==1][['Name','lng','Lat']]
- sf_a=list();sf_b=list()
- for i in table_sf['Name']:
- for j in table_sf['Name']:
- sf_a.append(i),sf_b.append(j)
- table_a_b=pd.DataFrame()
- table_a_b['sf_a']=sf_a
- table_a_b['sf_b']=sf_b
- table_a_b_lng_Lat = table_a_b.merge(table_sf,how='inner',left_on='sf_b',right_on='Name').merge(table_sf,how='inner',left_on='sf_a',right_on='Name')[['sf_a','sf_b','lng_y','Lat_y','lng_x','Lat_x']]
- # 3.计算距离
- # In[147]:
- df = table_a_b_lng_Lat[['sf_a','sf_b','lng_y','Lat_y','lng_x','Lat_x']]
- df['distance']=pd.Series(df[['lng_y','Lat_y','lng_x','Lat_x']].apply(lambda row: getDistance(row['Lat_y'],row['lng_y'],row['Lat_x'],row['lng_x']), axis=1))
- df=df[df['distance']!=0]
- df.columns=['起点省份','终点省份','起点经度','起点纬度','终点经度','终点纬度','距离']
- df=df[['起点省份','起点经度','起点纬度','终点省份','终点经度','终点纬度','距离']]
- # In[156]:
- df.to_excel("./result/根据经纬度计算两个地点的距离.xlsx")
附件文件夹
当前路径下进入cmd输入:
- python 省份编码-经纬度.py