很多时候,我们有一系列的地名,我们需要在地图中标注出来。如果数量比较少,可以使用百度提供的坐标拾取工具来获得
http://api.map.baidu.com/lbsapi/getpoint/
但是如果数量很多,一个一个点就很难受了,如何使用Python来自动化做这样一个工作呢?
废话不多说,直接贴代码:
from urllib.request import urlopen,quote
import requests,csv
import pandas as pd
import json
def getlnglat(adress):
url = 'http://api.map.baidu.com/geocoder/v2/?address='
output = 'json'
ak = '百度秘钥'
add = quote(adress)#使用quote进行编码 为了防止中文乱码
url2 = url + add + '&output=' + output + '&ak=' + ak
req = urlopen(url2)
res = req.read().decode()
temp = json.loads(res)
return temp
getlnglat("上海")
output:
{'status': 0,
'result': {'location': {'lng': 121.48053886017651, 'lat': 31.235929042252014},
'precise': 0,
'confidence': 20,
'comprehension': 100,
'level': '城市'}}
注意:
这里面的“百度秘钥”是需要自己到百度地图开放平台申请的,申请方法不复杂。
由地名搜经纬度,由于重名等原因,很可能会有误,需要进一步核实哦。
这个从百度获得的经纬度,是百度坐标系。而如果需要转换为火星坐标系、WGS84坐标系,可以参考我的下一篇文章。