高德地图和百度地图都提供了坐标拾取系统,通过坐标查询或坐标反查操作可以查询一个地址对应的经纬度或经纬度对应的地址名称。但是,手动查询的方式效率很低,也不能进行批量查询。

本篇就来介绍在R语言中调用高德地图API来进行快速、批量查询的方法。使用高德地图API前先需要申请一个Key,因此在介绍具体代码之前,先来介绍如何申请一个Key。

1 高德地图API Key

高德地图的API Key是一串由数字和字母组成的文本。

首先在浏览器中搜索“高德地图API”或者直接点击链接“https://lbs.amap.com/api/webservice/summary/”可进入高德地图API的“概述”界面,注册并登录,如下图所示。

读者可以通过浏览该界面的内容,对Web API有个大致的了解;在界面底端可以看到一个如下图所示的“获取API Key”按钮,点击进去。

然后再点击右上角的“创建新应用”按钮,此举相当于创建一个管理Key的文件夹,因为平台是允许单个用户申请多个API Key的。

在创建应用后,就可以点击“添加”按钮来申请Key了。如下图所示,Key名称可以自行命名,“服务平台”选择“Web服务”,“可使用服务”会自动显示该类型范围对应的功能。

点击“阅读并同意”和“提交”按钮后,申请过程就完成了。

2 地理编码

在第一幅图所示的界面,点击左侧的“地理/逆地理编码”栏,或者直接点击下方的链接:

https://lbs.amap.com/api/webservice/guide/api/georegeo

打开的界面就是高德地图API的地理编码和逆地理编码的使用方法。本节先介绍地理编码,下节再介绍地理逆编码。

2.1 单个查询

如下图所示;第二红框内提供了地理编码的服务地址:https://restapi.amap.com/v3/geocode/geo?parameters。

这个服务地址由两部分组成:一部分是固定的前缀https://restapi.amap.com/v3/geocode/geo?;另一部分是可变的参数parameters。可用的参数及其说明见下图。

在使用时将地址中的parameters替换成相应的参数即可;参数keyaddress是必需参数;多个参数之间使用&符号连接,如key=1234&address=北京市通州区

API接口返回的数据格式为JSON或XML。从上图output参数可以看出,JSON为默认格式。在R语言中,可以使用jsonlite工具包中的fromJSON()函数来提取相应的信息。

library(jsonlite)
a <- fromJSON("https://restapi.amap.com/v3/geocode/geo?address=北京市朝阳区阜通东大街6号&key=70689caec277e125c9a1")
  • 代码中的key为无效值,各位读者可以将其替换成自己申请的Key。

上面代码得到的a是一个列表结构的数据,其包含的字段如下图所示,其中经纬度信息储存在$geocodes$location中。

a$geocodes$location
## [1] "116.482086,39.990496"
  • 需要注意的是,这里获取的经纬度是加密后的数值,与WGS坐标相比有偏移。

2.2 批量查询

批量查询可以利用for循环或者apply族、map族函数,下面提供一个例子。

library(tidyverse)
library(magrittr)
library(jsonlite)
## 对`fromJSPN()`函数进行改造,使之仅返回经纬度信息
lonlat <- function(x) return(fromJSON(x)$geocodes$location)## 示例数据
key <- "706188c0afec277e12522bb5c9a1"  ## 替换成自己的Key
data <- data.frame(dizhi = c("北京市天安门", "北京师范大学","北京市通州区梨园镇"
))## 使用map函数
data %<>%mutate(url = paste0("https://restapi.amap.com/v3/geocode/geo?","key=", key,"&address=", dizhi),json = map(url, lonlat))data$json
## [[1]]
## [1] "116.397477,39.908692"
##
## [[2]]
## [1] "116.364139,39.962637"
##
## [[3]]
## [1] "116.662951,39.866859"

上述批量查询的方法,实际上每次只查询了一个地址。当batch参数设置为true时,可以一次至多对10个地址进行查询;此时address参数可以使用|进行间隔,具体介绍见下图。

示例代码:

dizhi = paste0("北京市海淀区新街口外大街", 19:29, "号")
paste0(dizhi, collapse = "|")
## [1] "北京市海淀区新街口外大街19号|北京市海淀区新街口外大街20号|北京市海淀区新街口外大街21号|北京市海淀区新街口外大街22号|北京市海淀区新街口外大街23号|北京市海淀区新街口外大街24号|北京市海淀区新街口外大街25号|北京市海淀区新街口外大街26号|北京市海淀区新街口外大街27号|北京市海淀区新街口外大街28号|北京市海淀区新街口外大街29号"paste0("https://restapi.amap.com/v3/geocode/geo?","key=", key,"&batch=true","&address=") %>%paste0(paste0(dizhi, collapse = "|")) %T>%print() %>%fromJSON() -> a
## [1] "https://restapi.amap.com/v3/geocode/geo?key=706188c0af89caec277e12522bb5c9a1&batch=true&address=北京市海淀区新街口外大街19号|北京市海淀区新街口外大街20号|北京市海淀区新街口外大街21号|北京市海淀区新街口外大街22号|北京市海淀区新街口外大街23号|北京市海淀区新街口外大街24号|北京市海淀区新街口外大街25号|北京市海淀区新街口外大街26号|北京市海淀区新街口外大街27号|北京市海淀区新街口外大街28号|北京市海淀区新街口外大街29号"a$geocodes$location
##  [1] "116.366301,39.961575" "116.370333,39.961966" "116.370953,39.957542"
##  [4] "116.368826,39.958226" "116.371613,39.956099" "116.370891,39.958173"
##  [7] "116.370809,39.953157" "116.370891,39.958173" "116.371244,39.952472"
## [10] "116.372080,39.953763"

3 逆地理编码

逆地理编码与地理编码的使用方法是类似的,这里仅作简要介绍。

API服务地址的形式:

https://restapi.amap.com/v3/geocode/regeo?parameters

参数及其说明:

上述信息具体可在网址“https://lbs.amap.com/api/webservice/guide/api/georegeo”中查看。

技巧 | 在R语言中使用高德地图的API进行地理/逆地理编码(地址与经纬度的相互转换)...相关推荐

  1. leaflet |(1)在R语言中导入高德地图

    本号计划出几篇推文介绍leaflet这个工具包,它的功能是创建交互式网络地图(Create Interactive Web Maps),并添加各类要素.参考资料见网址:https://rstudio. ...

  2. leaflet (1)在R语言中导入高德地图

    本号计划出几篇推文介绍leaflet这个工具包,它的功能是创建交互式网络地图(Create Interactive Web Maps),并添加各类要素.参考资料见网址:https://rstudio. ...

  3. 在vue项目中使用高德地图JS API

    在vue项目中使用高德地图JS API,而不是amap依赖包~ 一. 必做的准备工作 注册账号并申请key 首先,注册开发者账号,成为高德开放平台开发者 登陆之后,在进入「应用管理」 页面「创建新应用 ...

  4. 高德地图api接口文档_在 R 语言里面调用高德地图接口:地理编码与路径规划

    你知道从广州南站去珠江新城怎么走么?今天就让我们一起使用 R 语言调用高德地图的地理编码(地址转经纬度)接口和路径规划接口来回答这个问题. 准备工作 注册高德地图,创建应用添加 Key(注意申请 Ke ...

  5. tmap | R语言中专门绘制地图的工具包

    tmap工具包的名称是Thematic Maps的缩写,是R中专门绘制地图的工具包.该包语法与ggplot2包比较类似,都是通过符合+来进行图层叠加. 加载示例数据: library(tidyvers ...

  6. 在python中调用高德地图(Amap)api

    目录 1 准备工作 1.1 其他任务 2 多个小任务 2.1 (正)地理编码 2.2 逆地理编码 2.3 步行路径规划 1 准备工作 首先去高德地图开放平台(https://lbs.amap.com/ ...

  7. R语言中的地理/投影坐标系统(下)[翻译]

    原文链接:https://mgimond.github.io/Spatial/coordinate-systems-in-r.html. 译文分上.下两篇,这里为下篇. ❝ 「译者注」:在原文的本部分 ...

  8. 高德地图 Android API 的基站定位原理及使用方法

    基站定位是根据通讯网络基站信息进行定位的方法,此定位方法需要有较丰富的基站地理信息数据支持.高德地图目前的基站数据库支持 GSM 网络和CDMA网络. 定位机制 Android 平台主要使用三个 Cl ...

  9. cordova下使用高德地图js api在4g流量下定位失败问题的解决

    问题描述 cordova页面中使用高德地图js api AMap.Geolocation的geolocation.getCurrentPosition()方法进行定位 用手机4g打开该页面,定位失败, ...

最新文章

  1. php和python交互-Python如何实现简单的用户交互程序(示例)
  2. 网易=4 ×(新浪 + 搜狐)
  3. 一次短信验证码攻击的应急响应
  4. why my filter by titleID does not work
  5. windows下PostgreSQL 安装与配置
  6. Kafka 的生产者优秀架构设计
  7. java 链表算法_数据结构算法Java版(一) 链表
  8. 计算机毕业设计中用js+html+java文件下载(一)
  9. 面向对象基本特性和设计原则
  10. SQL2008安装教程
  11. 笔记No.1——第一行代码:Android(第2版)
  12. 大数据挖掘与分析——用八爪鱼爬虫采集百度搜索内容
  13. 视频截图获取视频某一帧做图片
  14. 三角网格剖分工具 Triangle 安装及使用
  15. 2、Gantt 入门 (vue3 + ts)
  16. 虚拟网络监控进阶之路-DeepFlow
  17. saas平台相关内容
  18. Teardrop代码编程,创建虚假包
  19. SVN权限的简单配置
  20. 基于亚像素的边缘检测方法

热门文章

  1. 负载均衡SLB中开启会话保持并选择重写Cookie时的配置方法
  2. Json学习总结(6)——Fastjson远程代码执行漏洞
  3. Maven学习总结(40)——Maven安装项目jar到本地和私服相关总结
  4. 项目管理学习总结(2)——需求收集和管理
  5. 互联网推送服务原理:长连接+心跳机制(MQTT协议)
  6. 计算机知识点背诵了就忘了怎么办,背得滚瓜烂熟的知识点,为什么一上考场全忘了?这样做,事半功倍…...
  7. android的控件常用方法是,Android常用控件属性分析
  8. 如何避免文件被删无法找回的尴尬?
  9. shell编程基础:逻辑运算
  10. 云效支持自定义构建镜像 征集10家企业免费使用