栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 调用高德 API 实现地址转为经纬度

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 调用高德 API 实现地址转为经纬度

Python 调用高德 API 实现地址转为经纬度
  • 前言
  • 一、申请高德的Key
  • 二、要转换的地址放入文件
  • 三、编写代码
  • 四、运行结果
  • 总结


前言

偶然接触到这个东西,记录一下


一、申请高德的Key

高德开放平台网址

注册登录后,点击右上角头像旁边的控制台

点击“我的应用”,然后右边有个“创建新应用”,点击后输入一些内容,就创建成功了,key 就获取到了


二、要转换的地址放入文件

可选 csv、xlsx、txt,推荐 txt ,因为 txt 无论如何都不会报错,csv 和 xlsx 高概率会报 UTF-8 编码无法转换的错,网上的解决方案都是修改编码,这样不行,所以还是 txt 吧

一个地址换一行,如果用 xlsx 的话也一样,一个地址换一行


三、编写代码

这代码也不是我本人写的,我也不怎么会 Python ,所以没有注释讲解。。。

将下面的 key 替换成你刚刚创建的新应用下面的 key,然后地址文件改成你们刚刚创建的 txt

import requests
import codecs
from openpyxl import Workbook

wb = Workbook()
sheet = wb.active


def get_location(address, i):
    print(i)
    # 这是高德的API接口地址
    url = "https://restapi.amap.com/v3/geocode/geo"
    data = {
        # 替换为你在高德地图开发者平台申请的key
        'key': 'a8c3f94ebc2fea82c283effa241aa066',
        'address': address
    }
    r = requests.post(url, data=data).json()
    sheet["A{0}".format(i)].value = address.strip('n')
    print(r)
    if r['status'] == '1':
        if len(r['geocodes']) > 0:
            GPS = r['geocodes'][0]['location']
            sheet["B{0}".format(i)].value = '[' + GPS + ']'
        else:
            sheet["B{0}".format(i)].value = '[]'
    else:
        sheet["B{0}".format(i)].value = '未找到'


# 将地址信息替换为自己的文件,一行代表一个地址,根据需要也可以自定义分隔符
# 读取地址文件。我的为D:下载documents地点.txt
f = codecs.open(r"D:下载documents地点.txt", "r", "utf-8")
i = 0
while True:
    line = f.readline()
    i = i + 1
    if not line:
        f.close()
        # 设置保存路径
        wb.save(r"D:下载documents经纬度信息.xlsx")
        break
    get_location(line, i)


四、运行结果

你设置的路径下生成了结果文件,打开看看


准确度还挺高,这种直接写小区名和学校名都能识别到,高德 niubility


总结
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/688747.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号