使用python将地名转换成经纬度——调用高德地图API

目录

  • 一、申请高德地图密匙
  • 二、调用接口(官方文档内容,助于下文理解)
  • 三、地址转换为经纬度
    • 1.处理数据—去重
    • 2.批量转换为经纬度
  • 参考

一、申请高德地图密匙

  • 进入高德开放平台 link.

  • 注册成为开发者(个人开发者就行,需使用实名以及支付宝认证)

  • 首页—>开发支持—>Web服务—>Web服务API—>地址/逆地址编码(直接进入)

  • 点击‘申请key’(或者直接从“控制台—我的应用”)—>创建新应用—>添加key
    使用python将地名转换成经纬度——调用高德地图API_第1张图片
    使用python将地名转换成经纬度——调用高德地图API_第2张图片
    使用python将地名转换成经纬度——调用高德地图API_第3张图片
    使用python将地名转换成经纬度——调用高德地图API_第4张图片
    使用python将地名转换成经纬度——调用高德地图API_第5张图片

二、调用接口(官方文档内容,助于下文理解)

参考接口参数文档(见下图)发起HTTP/HTTPS请求,第一步申请的 Key 需作为必填参数一同发送。

  • 我们需要调用的API接口是地理编码(把地理信息转换成经纬度)的接口,接口如下:
    https://restapi.amap.com/v3/geocode/geo?parameters也可直接进入网页查看(直接进入)
    使用python将地名转换成经纬度——调用高德地图API_第6张图片
    官方使用案例:
    使用python将地名转换成经纬度——调用高德地图API_第7张图片

三、地址转换为经纬度

1.处理数据—去重

import pandas as pd
people=pd.read_excel('D:/处理过的.xlsx')
#去除重复数据
#subset为依据的字段,inplace表明是在该表中进行处理
#keep表明有重复的数据保留第一个(first)和最后的(last)
people.drop_duplicates(subset=['现(暂)住地','现住地详址'],inplace=True,keep='last')
#选择一
#输出为.xlsx
#people.to_excel('D:/output.xlsx',index=False)#不包含索引名
#选择二
#输出为.csv
people.to_csv('D:/output.csv',index=False,encoding='gbk')

2.批量转换为经纬度

import requests
import codecs
from openpyxl import Workbook

wb = Workbook()
sheet = wb.active
def get_location(address, i):
    print(i)
    url = "http://restapi.amap.com/v3/geocode/geo"
    data = {
     
        'key': '*****', #需要替换为在高德地图开发者平台申请的key
        '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:/output1.csv
f = codecs.open(r"D:/output1.csv", "r", "utf-8")
i = 0
while True:
    line = f.readline()
    i = i + 1
    if not line:
        f.close()
        #设置保存路径,此处为D:/保存文件.xlsx
        wb.save(r"D:/保存文件.xlsx")
        break
    get_location(line, i)

结果:
使用python将地名转换成经纬度——调用高德地图API_第8张图片

参考

1.link

你可能感兴趣的:(数据处理,python)