使用R调用百度地图API批量获取地点经纬度坐标

介绍如何利用R语言结合百度地图API高效批量转换地理位置名称为经纬度坐标,并提供代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2020-4-4 更新

挺多人反馈按照文档操作后无法获拿到坐标数据,貌似是百度地图API的AK码中间经历过升级,而且github上badbye作者写的那个baidumap库也好久没有更新过了,换用腾讯地图的开放平台又做一篇攻略,纯使用Python实现,更简单好用,欢迎围观:

https://lpwmm.blog.csdn.net/article/details/105313017

 

2018-9-30更新视频教程

B站:https://www.bilibili.com/video/av32740755/


上一篇里面说了一下用百度地图的拾取坐标系统可以在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

 

 

 

 

 

 

 

 

 

空间计量是指在地理信息系统(GIS)领域中,通过编程技术如Python,结合特定的地图服务API,比如百度地图API,来自动化地获取地理位置信息,如经纬度坐标。在Python中,你可以利用`bmap`库或者其他第三方封装的百度地图接口,如`geopy`,来进行批量地点坐标查询。 以下是简单的步骤: 1. 首先,你需要安装所需的库,例如`requests`用于发送HTTP请求,`geopy`用于处理百度地图的返回数据。可以使用`pip install requests geopy bmap`命令安装。 2. 导入必要的模块并初始化百度地图API: ```python from baidubmap import BaiduMap import geopy # 创建BaiduMap实例 bm = BaiduMap() ``` 3. 定义一个函数,输入地点名称或地址,调用百度地图API获取经纬度: ```python def get_location_by_address(address): location = geopy.geocoders.BaiduGeocoder(api_key=YOUR_API_KEY) # 请替换为你自己的百度地图API key result = location.geocode(address) if result: return (result.latitude, result.longitude) else: print(f"无法获取{address}的位置信息") return None ``` 4. 批量获取经纬度时,可以用列表或其他数据结构存储待查询的地址,然后遍历: ```python locations = ['北京故宫', '上海外滩', '广州塔'] # 地点列表 results = [get_location_by_address(loc) for loc in locations] ``` 5. 最后,`results`将是一个包含所有查询结果的列表,每个元素都是一个包含经纬度的元组。 注意:在实际应用中,需要确保你有合法有效的百度地图API密钥,并遵守其使用规定。
评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DexterLien

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值