告知家属
在写论文做空间计量的时候,需要14省份的经纬度数据,完全可以通过查找地图来填补经纬度数据,但是呢?
为了不拖更,偏偏要用python来实验一下,那就开始吧
百度API密钥
没注册的注册了哈!不会注册请看以前的博客【传送门】
创建应用
控制台->我的应用【随便取名】
【随便取名】
IP白名单默认就行
【提交】
调试代码+获取经纬度
import json
from urllib.request import urlopen, quote
import requests,csv
# 这里可以自己建一个列表读入地区数据
address = ['内蒙古','贵州','新疆','宁夏','广东','广西','海南','重庆','四川','甘肃','青海','陕西','西藏','云南']
def getlnglat(address):
url = 'http://api.map.baidu.com/geocoding/v3/'
output = 'json'
ak = 'fFHM8CoBXURMvSUqb38RtEwAlvFm03TT' #'你申请的密钥***'
add = quote(address) #由于本文城市变量为中文,为防止乱码,先用quote进行编码
uri = url + '?' + 'address=' + add + '&output=' + output + '&ak=' + ak
req = urlopen(uri)
res = req.read().decode() #将其他编码的字符串解码成unicode
temp = json.loads(res) #对json数据进行解析
return temp
f = open('city.csv','w',encoding='gbk',newline='') # 更改一下encoding编码
csv_writer = csv.writer(f)
csv_writer.writerow(["city", "lng", "lat"])
for i in address:
lng = getlnglat(i)['result']['location']['lng'] #采用构造的函数来获取经度
lat = getlnglat(i)['result']['location']['lat'] #获取纬度
str_temp = [i,lng,lat]
csv_writer.writerow(str_temp) #写入文档
f.close()
代码+经纬度算反距离矩阵
【参考我的其他博文】