python百度地图api经纬度_Python调用百度地图和高德地图API批量获取国内城市地址经纬度坐标...

1 数据准备

经过尝试,百度地图API需要输入城市中文名称才能获取对应经纬度坐标,因此先将英文的城市名称转为中文

一共347个城市

由于在测试过程中发现高德和百度地图API分别有几个城市的地址无法获取经纬度,但是恰好能够互补,因此使用两种API联合获取347个国内城市的经纬度

需要注意的是该经纬度不是WGS84经纬度,有一定偏差,但是关系不大。

1783922-20201114152332246-1380218751.png

2 高德地图API

1 先注册成为开发者

1783922-20201112204534331-582227556.png

查看地理编码的输入和返回参数:

1783922-20201114153634296-896424835.png

1783922-20201112204318865-228398601.png

代码如下:

import requests

import json

import pprint

import pandas as pd

import csv

import pprint

key='**********' #填入自己的key

#构建函数

def getlnglat(address):

url='https://restapi.amap.com/v3/geocode/geo'

params = {'key':key,

'address':address}

res = requests.get(url, params)

json_data = json.loads(res.text)

return json_data

#打开cs

inpath=r"H:\02Course\00DATA\表格\cityname.xlsx"

outpath=r"H:\02Course\00DATA\表格\citylnglat_Gaode.xlsx"

df = pd.read_excel(inpath,encoding = 'UTF-8')

df['lng'] = 'collng'#创建新列存放经度

df['lat'] = 'collat'#创建新列存放纬度

for i in df.values:

b = i[2] #第一列的地址 .strip("'")

ind=i[0]

print(b)

json_data=getlnglat(b)

i[7] = json_data['geocodes'][0]['location']#获取经纬度

df['lng'][ind]=float(i[7].split(",")[0])#经度

df['lat'][ind]=float(i[7].split(",")[1])#纬度

pprint.pprint(json_data)

df.to_excel(outpath)

输出结果为:

1783922-20201114153304762-1344737768.png

1783922-20201114153400021-26719290.png

3 百度地图API

代码如下:

import requests,csv

import pandas as pd

import json

import requests

import json

import pprint

ak = '*******'#ak需要去百度地图申请

def getlnglat(address):

url = 'http://api.map.baidu.com/geocoder/v2/?address={}&output=json&ak={}'.format(address,ak)

res = requests.get(url)

json_data = json.loads(res.text)

return json_data

inpath=r'H:\02Course\00DATA\表格\cityname.xlsx'

outpath=r'H:\02Course\00DATA\表格\citylinlat_Baidu.xlsx'

df = pd.read_excel(inpath,encoding = 'UTF-8')

df['lng'] = 'collng'#创建新列存放经度

df['lat'] = 'collat'#创建新列存放纬度

for i in df.values:

b = i[2] #第一列的地址

print(b)

ind=i[0]

json_data=getlnglat(b)

i[7] = json_data['result']['location']['lng']#获取经度并写入

i[8] = json_data['result']['location']['lat']#获取纬度并写入

df['lng'][ind]=float(i[7])

df['lat'][ind]=float(i[8])

print(i)

df

df.to_excel(outpath)

运行结果:

1783922-20201114155221400-1916452832.png

1783922-20201114155301191-1994471957.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值