搜索
人大经济论坛 附件下载

附件下载

所在主题:
文件名:  279个城市的空间距离矩阵.xlsx
资料下载链接地址: https://bbs.pinggu.org/a-3972541.html
附件大小:
997.96 KB   举报本内容

代码来源:zhugby的python使用geopy包提取城市经纬度及计算距离矩阵

我自己跑的时候发现有一点点报错,也有人有一样的错误,所以分享一下,感谢zhugby的分享

  1. #没有安装的话需要安装一下
  2. pip install geopy
  3. # 导入pandas模块
  4. import pandas as pd
  5. # 读入城市数据
  6. df=pd.read_excel(r"你的文件")
  7. df.head() #打印前五行

  8. # 使用geopy模块获取城市的经纬度坐标
  9. from geopy.geocoders import Nominatim
  10. import time
  11. gps = Nominatim(user_agent='myuseragent')

  12. loc_list_x=[]
  13. loc_list_y=[]
  14. coord=[]
  15. for i in list(df['城市']):
  16. location = gps.geocode(i)
  17. loc_list_x.append(location.longitude)
  18. loc_list_y.append(location.latitude)
  19. coord.append((location.latitude,location.longitude))
  20. time.sleep(2)# 暂停2秒钟
  21. df['经度']=loc_list_x
  22. df['维度']=loc_list_y
  23. df['坐标']=coord
  24. df.head()#打印前五行

  25. # 计算城市之间的空间距离
  26. from geopy.distance import distance
  27. import numpy as np
  28. arr=np.zeros([len(coord),len(coord)])
  29. for i in range(len(coord)):
  30. for j in range(len(coord)):
  31. arr[i,j]=distance(coord[i],coord[j]).km
  32. dis_matrix=pd.DataFrame(arr,index=list(df['城市']),columns=list(df['城市']))
  33. print(dis_matrix.head())#打印前五行

  34. # 将结果写入文件
  35. df.to_excel('空间距离坐标.xlsx')
  36. dis_matrix.to_excel('空间距离矩阵.xlsx')
复制代码

准备一个你需要的所有城市的excel,利用geopy模块获取每个城市的经纬度坐标,然后计算城市之间的空间距离,并将结果写入两个Excel文件中。
之前说的报错就是在获取城市经纬度的时候报错HTTPSConnectionPool(host='nominatim.openstreetmap.org', port=443),搜了一下,看到说虽然nominatim是免费的,但是每秒最多一个请求,所以在每次循环中暂停了2秒(我试了1秒还是报错,所以增加成2秒,虽然时间久一点)
也可以去看下zhugby的原分享,有图片更直观

___________更新:有问题各位,好像相同读音的会串,比如佛山的坐标会识别成釜山,还不知道咋弄











    熟悉论坛请点击新手指南
下载说明
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。
2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。
3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。
(如有侵权,欢迎举报)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

GMT+8, 2026-2-2 02:05