上一篇
Python geopy库使用完全指南 - 地理编码与位置处理教程
- Python
- 2025-07-18
- 1582
Python geopy库使用完全指南
geopy是Python中处理地理编码的利器,可轻松实现地址与经纬度的相互转换。本教程将详细介绍其安装、基础用法及实战技巧。
安装geopy
pip install geopy
地理编码(地址转坐标)
from geopy.geocoders import Nominatim
# 初始化地理编码器
geolocator = Nominatim(user_agent="geo_app")
# 地址转坐标
location = geolocator.geocode("天安门广场")
print(f"经度: {location.longitude}, 纬度: {location.latitude}")
# 输出:经度: 116.397755, 纬度: 39.903179
逆地理编码(坐标转地址)
# 坐标转地址
reverse_location = geolocator.reverse("31.2304, 121.4737")
print(reverse_location.address)
# 输出:中国上海市黄浦区外滩
计算两地距离
from geopy.distance import geodesic
# 定义两地坐标
shanghai = (31.2304, 121.4737)
beijing = (39.9042, 116.4074)
# 计算球面距离
distance = geodesic(shanghai, beijing).km
print(f"上海到北京直线距离:{distance:.2f}公里")
# 输出:上海到北京直线距离:1067.84公里
使用百度地图API
from geopy.geocoders import Baidu
# 需申请百度API密钥
baidu_geolocator = Baidu(api_key='您的API密钥')
location = baidu_geolocator.geocode("广州塔")
print(location.point)
# 输出:23.114155, 113.324763
处理异常
from geopy.exc import GeocoderUnavailable
try:
location = geolocator.geocode("不存在的地址示例")
if location:
print(location.address)
else:
print("未找到该地址")
except GeocoderUnavailable:
print("地理编码服务不可用")
使用建议
- 设置合理超时:
geolocator = Nominatim(timeout=10)
- 使用用户代理标识:
user_agent="your_app_name"
- 商业项目考虑付费API(如Google/Baidu)提高稳定性
- 批量处理时添加延时避免被限流
通过本教程,您已掌握geopy的核心功能。实际应用中可结合Pandas等库进行批量地理数据处理,或结合地图库实现位置可视化。
本文由NianMan于2025-07-18发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://521pj.cn/20255899.html
发表评论