You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python中geocoder/geopy的返回语言为英文?

反向地理编码获取英文国家名的解决方案

不管是geopy还是geocoder,它们底层都调用OpenStreetMap的Nominatim服务,而Nominatim本身支持通过language参数指定返回结果的语言,以下是具体实现方法:

1. 使用geopy实现

在reverse方法中直接传入language='en'参数,同时可从返回结果的原始数据中直接提取国家名,无需解析整个地址字符串:

from geopy.geocoders import Nominatim
# 建议设置规范的user-agent(如项目名称、邮箱前缀),降低被屏蔽概率
geolocator = Nominatim(user_agent="my-geocoding-project")
location = geolocator.reverse("31.107, 103.146", language='en')
# 从raw字典中提取国家名
country_name = location.raw.get('address', {}).get('country', '')
print(country_name)  # 输出:China

2. 使用geocoder实现

通过extra_kwargs参数传递language='en'给底层Nominatim请求,同样从原始数据中提取国家名:

import geocoder
g = geocoder.osm([31.107, 103.146], method='reverse', extra_kwargs={'language': 'en'})
# 从raw字典中提取国家名
country_name = g.raw.get('address', {}).get('country', '')
print(country_name)  # 输出:China

补充说明

  • language参数接受ISO 639-1标准语言代码(如'en'对应英文、'fr'对应法语)
  • 规范设置user-agent能有效降低Nominatim服务屏蔽请求的概率,避免使用http这类模糊名称

内容的提问来源于stack exchange,提问作者elk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 03:22:38