当前位置:首页 > Python > 正文

Python geopy库使用完全指南 - 地理编码与位置处理教程

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等库进行批量地理数据处理,或结合地图库实现位置可视化。

发表评论