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

求助:如何用Python提取Google逆地理编码中的日本城市名称

解决Google逆地理编码中动态提取日本城市名称的问题

别再死磕固定索引切片了!Google逆地理返回的地址组件顺序完全不固定——会根据坐标精度、地区行政结构变来变去,按types字段筛选才是靠谱的解决方案。针对你的2000个日本坐标,我给你整理了一套实用的提取逻辑:

核心思路

跳过索引,直接遍历返回结果里的address_components数组,检查每个组件的types是否包含'locality'(这是Google官方定义的城市级地理标识)。只要匹配到,就提取对应的short_name——这种方法完全不依赖组件的位置,不管返回顺序怎么变都能拿到正确值。

Python实现示例

假设你已经拿到了逆地理编码的JSON响应,用这个函数就能轻松提取:

def extract_japan_city(geocode_response):
    # 优先取第一个匹配结果(通常是最精确的地址)
    first_result = geocode_response.get('results', [{}])[0]
    address_components = first_result.get('address_components', [])
    
    # 先找标准的locality类型
    for component in address_components:
        if 'locality' in component.get('types', []):
            return component['short_name']
    
    # 日本部分地区可能用其他类型标识城市级区域,加备选逻辑
    fallback_types = ['sublocality', 'administrative_area_level_2']
    for component in address_components:
        component_types = component.get('types', [])
        if any(t in component_types for t in fallback_types):
            return component['short_name']
    
    # 所有情况都没匹配到,返回None或自定义提示
    return None

额外提示

  1. 批量处理2000个坐标时,记得遵守Google Maps API的请求限制——建议给每个请求加0.5秒左右的间隔,或者用批量请求接口,避免触发限流导致请求失败
  2. 可以拿几个特殊坐标测试(比如东京的区、北海道的小镇、冲绳的村落),如果发现还有其他需要匹配的types,直接加到fallback_types里就行
  3. 要是你用的是其他编程语言,逻辑也是一样的:遍历地址组件,按types筛选,别碰索引!

这样不管返回结果里locality在第几个位置,都能精准提取,再也不用每次调整切片索引了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:54:47