挺多人反馈按照文档操作后无法获拿到坐标数据,貌似是百度地图API的AK码中间经历过升级,而且github上badbye作者写的那个baidumap库也好久没有更新过了,换用腾讯地图的开放平台又做一篇攻略,纯使用Python实现,更简单好用,欢迎围观:
https://lpwmm.blog.csdn.net/article/details/105313017
上一篇里面说了一下用百度地图的拾取坐标系统可以在web里面鼠标点击获取坐标,配合按键精灵去模拟手动搜索点击复制的方法批量获取坐标,效率其实很低的,不过凑活先满足了坐标比较少的情况下的需求,但是对于大量位置信息想要转换成经纬度坐标,还是得上高效率的方法了,研究了一下用R+百度地图的扩展包,很方便的就可以对大量的地理位置名称进行坐标解析,记录一下过程:
首先还是得先搞到个百度地图开发者的AK码,否则没法调用百度地图API的,这里就不展开讲了
推荐直接下载安装RStudio,开源的R开发IDE环境,比官方的R-GUI界面友好很多,然后在RStudio里面设置一下安装包的源地址:
我用的是兰州大学的镜像源,速度就挺快了的,切换好源以后开始安装需要的扩展包,首先要装的是devtools
这里输入包名的时候还会有联想补全,相当好用的。装好devtools后在控制台里面引用一下,就可以调用install_github的命令了
library(devtools)
install_github('badbye/baidumap')
这是大神badbye写的适用于R的百度地图扩展包,github地址:https://github.com/badbye/baidumap
下面就可以开始初始化了
library(baidumap)
options(baidumap.key = '这里填写百度地图AK码')
初始化完成后的调用实例代码:
> getCoordinate(c('安阳高新技术产业开发区','安阳县安丰乡','安阳县白璧镇','安阳县柏庄镇','安阳县北郭乡','安阳县崔家桥镇','安阳县都里镇','安阳县韩陵镇','安阳县洪河屯乡','安阳县磊口乡','安阳县伦掌镇','安阳县吕村镇','安阳县马家乡','安阳县曲沟镇','安阳县善应镇','安阳县水冶镇','安阳县铜冶镇','安阳县辛村镇','安阳县许家沟乡','安阳县永和镇'), formatted = T)
longtitude latitude
安阳高新技术产业开发区 114.3518 36.11027
安阳县安丰乡 114.2960 36.23181
安阳县白璧镇 114.5040 36.09331
安阳县柏庄镇 114.3960 36.20138
安阳县北郭乡 114.7187 36.09208
安阳县崔家桥镇 114.4826 36.14603
安阳县都里镇 114.3171 36.12513
安阳县韩陵镇 114.4261 36.15789
安阳县洪河屯乡 114.3097 36.19475
安阳县磊口乡 114.0087 36.16260
安阳县伦掌镇 114.1496 36.25207
安阳县吕村镇 114.6346 36.09709
安阳县马家乡 114.0356 36.04292
安阳县曲沟镇 114.2113 36.13035
安阳县善应镇 114.1379 36.05460
安阳县水冶镇 114.1373 36.13610
安阳县铜冶镇 114.0785 36.23582
安阳县辛村镇 114.6492 36.04364
安阳县许家沟乡 114.1048 36.12409
安阳县永和镇 114.5780 36.09985
一秒出结果有木有!这个getCoordinate()函数还有其他的用法:
getCoordinate('北京大学') # json
getCoordinate('北京大学', output='xml') # xml
getCoordinate('北京大学', formatted = T) # character
getCoordinate(c('北京大学', '清华大学'), formatted = T) # matrix