python中geopy怎么用

geopy用于地理编码和逆地理编码,支持多种服务如Nominatim;需设置user_agent,遵守请求限制,建议生产环境使用付费API。

geopy 是一个 Python 第三方库,用于地理编码(将地址转为经纬度)和逆地理编码(将经纬度转为地址)。它支持多种服务,比如 Google Maps、OpenStreetMap (Nominatim)、Bing 等。下面介绍常见用法。

安装 geopy

在命令行运行:

pip install geopy

使用 Nominatim 进行地理编码(地址转经纬度)

Nominatim 是 OpenStreetMap 提供的免费服务,适合非商业用途。使用前需设置一个合法的 user agent。

示例代码:

from geopy.geocoders import Nominatim

# 创建地理编码器对象
geolocator = Nominatim(user_agent="my_app")

# 输入地址
location = geolocator.geocode("北京市天安门")

if location:
    print((location.latitude, location.longitude))
    print(location.address)

输出类似:

(39.9037442, 116.3972847)
Tian'anmen, Dongcheng District, Beijing, 100006, China

逆地理编码(经纬度转地址)

把坐标转换成可读地址:

from geopy.geocoders import Nominatim

geolocator = Nominatim(user_agent="my_app")

# 输入经纬度
location = geolocator.reverse("39.9037442, 116.3972847")

if location:
    print(location.address)
    print(location.raw) # 原始数据字典

注意事项和建议

使用 geopy 时注意以下几点:

  • Nominatim 有使用限制,每秒只能请求一次,频繁请求可能被封 IP
  • 必须设置 user_agent,否则请求会被拒绝
  • 生产环境或高频率需求建议使用付费服务如 Google Geocoding API
  • 处理网络异常时加上 try-except 更稳妥

基本上就这些。geopy 接口简单,重点是选对服务提供商并遵守其使用规则。