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

geopy 是一个 Python 第三方库,用于地理编码(将地址转为经纬度)和逆地理编码(将经纬度转为地址)。它支持多种服务,比如 Google Maps、OpenStreetMap (Nominatim)、Bing 等。下面介绍常见用法。
安装 geopy
在命令行运行:
pip install geopy使用 Nominatim 进行地理编码(地址转经纬度)
Nominatim 是 OpenStreetMap 提供的免费服务,适合非商业用途。使用前需设置一个合法的 user agent。
示例代码:
立即学习“Python免费学习笔记(深入)”;
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 Nominatimgeolocator = 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 接口简单,重点是选对服务提供商并遵守其使用规则。











