麋鹿分布图制作(一)——调用百度API查询地名的坐标

最近在做保护生物学的论文,查论文的过程中发现之前的麋鹿分布图是手绘的,看起来真的是。。。,因此我决定重新画一下这个图。

这个地图的绘制我分为两个部分:(一)调用百度API查找地点的经纬度,(二)用python的basemap模块绘制分布图。

我手录了麋鹿数据(点击下载)

在使用百度地图之前,我们需要先注册、申请一个百度地图的API,具体操作见教程

import json
from urllib.request import urlopen, quote
import requests
import pandas as pd
pd.set_option('display.max_columns', None)
# 显示所有的行

def getlnglat(address):
    url = 'http://api.map.baidu.com/geocoder/v2/'
    output = 'json'
    ak = '99flG4xrb8OrWR2fOGBfLxqB9DdkhC90'
    # 这个是申请的百度地图API的密码
    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

milu = pd.read_excel('miludistrbute.xlsx')
milu['lat'] = None
milu['lon'] = None
# 添加经纬度的两列,在R里面可以不用提前做俩空的列的,直接添加就行了,但是python里还是要加。

for i in range(0,len(milu.index)):

	if 'result' in getlnglat(milu.iloc[i][3]):
	# 这个是防止有些地址查询不到,就会被迫中断循环
	    milu['lon'][i] = getlnglat(milu.iloc[i][3])['result']['location']['lng']
	    milu['lat'][i] = getlnglat(milu.iloc[i][3])['result']['location']['lat']
	    print(milu.iloc[i])
	else:
		continue

milu.to_excel('milu1.xlsx')
# 最后保存一下这个数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值