楼主: 离一啊
1528 1

[其他] 使用geopy包提取城市经纬度并生成空间距离矩阵 [推广有奖]

  • 1关注
  • 0粉丝

已卖:100份资源

博士生

23%

还不是VIP/贵宾

-

威望
0
论坛币
2647 个
通用积分
31.2668
学术水平
10 点
热心指数
10 点
信用等级
10 点
经验
2075 点
帖子
24
精华
1
在线时间
360 小时
注册时间
2018-7-22
最后登录
2025-12-17

楼主
离一啊 发表于 2023-5-16 21:07:09 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

代码来源: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的原分享,有图片更直观

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









二维码

扫码加我 拉你入群

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

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

关键词:距离矩阵 经纬度 GEO connection longitude 城市经纬度 空间距离矩阵

沙发
离一啊 发表于 2023-5-16 21:27:11
我又发现亳州也不对,他识别成博尔塔拉蒙古自治州,我不懂他这个怎么匹配的了,而且附件我好像删不掉

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-1 22:59