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

如何使用Python将给定的longitude、latitude坐标转换为具体地址?

如何用Python将经纬度转换为具体地址

嘿,作为编程新手能想到用Python解决这个问题真的超棒!这个操作我们叫逆地理编码(Reverse Geocoding),下面我给你两种容易上手的方法,一步步来:

方法1:用geopy库(免费无需API密钥)

geopy是Python里专门处理地理编码的工具库,用它做逆地理编码简单易懂,而且大部分场景下免费够用。

步骤1:安装geopy

打开你的命令行(Windows用CMD/PowerShell,Mac/Linux用终端),输入下面的命令完成安装:

pip install geopy

步骤2:编写代码示例

下面是完整的可运行代码,每一步都加了注释帮你理解:

from geopy.geocoders import Nominatim
import time

# 初始化地理编码器,随便填个自定义名称就行(比如你的项目名)
geolocator = Nominatim(user_agent="my_first_geocoding_app")

# 替换成你自己的经纬度,注意格式是 (纬度, 经度)
target_latitude = 39.9042
target_longitude = 116.4074

# 调用reverse方法执行逆地理编码
location = geolocator.reverse((target_latitude, target_longitude), exactly_one=True)

if location:
    # 打印完整地址
    print("解析到的完整地址:", location.address)
    # 也可以提取地址里的细分组件(比如城市、街道)
    address_details = location.raw['address']
    print("城市:", address_details.get('city', '未查询到城市信息'))
    print("街道:", address_details.get('road', '未查询到街道信息'))
else:
    print("抱歉,这个坐标没有匹配到可识别的地址")

# 如果批量处理多个坐标,记得加延时(Nominatim限制1秒1次请求)
# time.sleep(1)

注意事项

  • Nominatim是OpenStreetMap提供的免费服务,有请求频率限制(约1秒1次),批量转换时一定要加延时,避免被限制访问
  • 偏远地区的坐标可能无法返回详细地址,代码里的if location:就是用来处理这种异常情况的

方法2:用国内地图API(国内地址更精准)

如果你的坐标是国内的,用百度、高德这类国内地图的API会得到更准确的地址,不过需要先去对应平台注册账号,免费申请一个API密钥(步骤很简单,跟着平台指引走就行)。

下面是用高德地图API的示例代码(其他平台的逻辑大同小异):

import requests

# 替换成你自己申请的高德API密钥
my_api_key = "你的高德API密钥"
target_latitude = 39.9042
target_longitude = 116.4074

# 构造API请求URL
request_url = f"https://restapi.amap.com/v3/geocode/regeo?location={target_longitude},{target_latitude}&key={my_api_key}"

# 发送请求并解析返回结果
response = requests.get(request_url)
result_data = response.json()

if result_data['status'] == '1':
    # 提取格式化的完整地址
    full_address = result_data['regeocode']['formatted_address']
    print("解析到的完整地址:", full_address)
    # 提取更细分的地址信息
    address_components = result_data['regeocode']['addressComponent']
    print("城市:", address_components['city'])
    print("行政区:", address_components['district'])
else:
    print("地址解析失败,错误信息:", result_data['info'])

注意事项

  • 必须替换成你自己的API密钥,否则请求会直接失败
  • 国内地图平台的免费额度完全足够新手日常使用,不用担心费用问题

如果还有不清楚的地方,随时问哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 07:59:06