目录

  • 一、前言
  • 二、准备工作
  • 2.1注册
  • 2.2拿KEY
  • 三、调用API检索信息
  • 3.1地址补全
  • 3.2分析地标建筑
  • 3.3定位IP
  • 3.4.1查询经纬度
  • 3.4.2批量查询经纬度
  • 四、讨论


一、前言

这几天用R和MATLAB在学机器学习的时候尝试调用了API,无意间发现了腾讯地图的API,开源的,就折腾了个半个多小时,花十分钟来记录一下,以下出现的建筑名仅供参考学习(脑海里第一时间浮现的,并无他意),R版本是4.2.1

二、准备工作

2.1注册

右上角控制台,注册一个WebService API的用户,选个人开发者即可

r语言Akaike信息准则 r语言api_API

2.2拿KEY

创建应用,用途选教育,随便命名
添加Key,随便命名

r语言Akaike信息准则 r语言api_API_02

三、调用API检索信息

install.packages('jsonlite')
library(jsonlite)
key="*****-JNICX-*****-75PQ7-*****-EXFU6" #输入自己申请到的key
3.1地址补全

只需要修改前面的参数然后直接运行即可,以此类推
所有地址只需要市级即可

ad="佛山市白坭中学"

c <- fromJSON(paste0("https://apis.map.qq.com/ws/smart_address/address_complete?address=",ad,"&key=",key))
resc <- c(c$result$completed_address,
          paste0(c$result$province$name,
                 c$result$city$name,
                 c$result$district$name,
                 c$result$town$name,
                 c$result$road$name,
                 c$result$village$name))
resc #标准地址,具体地址

r语言Akaike信息准则 r语言api_大数据_03

3.2分析地标建筑
ad2="佛山市南海中学"

d <- fromJSON(paste0("https://apis.map.qq.com/ws/smart_address/place_analy?address=",ad2,"&key=",key))
resd <- c(d$result$pois$address,d$result$pois$category)
print(resd)
sub1 <- subset(as.data.frame(d$result$sub_pois), select=c(address,title,category,location))  #矩
#sub1 <- paste0(d$result$sub_pois$address,d$result$sub_pois$title,d$result$sub_pois$category,d$result$sub_pois$location) #行
print(sub1)

r语言Akaike信息准则 r语言api_开发语言_04

3.3定位IP
ip="119.131.17.224"

b <- fromJSON(paste0("https://apis.map.qq.com/ws/location/v1/ip?ip=",ip,"&key=",key))
resb <- c(b$result$location$lng,b$result$location$lat)
print(resb)

r语言Akaike信息准则 r语言api_开发语言_05

3.4.1查询经纬度

各个平台算法不同,这里的经纬度是以腾讯地图的

la="广东省广州市番禺区大学城外环东路382号"

a <- fromJSON(paste0("https://apis.map.qq.com/ws/geocoder/v1/?address=",la,"&key=",key))
resa <- c(a$result$location$lng,a$result$location$lat)
print(resa)

r语言Akaike信息准则 r语言api_r语言Akaike信息准则_06

3.4.2批量查询经纬度
la2<-c("广东省广州市番禺区大学城外环东路382号",
       "广州市番禺区广州大学城外环东路232号",
       "广东省广州市番禺区大学城外环东路132号",
       "广东省广州市番禺区大学城外环东路280号")
k <- list()
for (i in la2) {
  a <- fromJSON(paste0("https://apis.map.qq.com/ws/geocoder/v1/?address=",i,"&key=",key))
  resa2 <- c(a$result$location$lng,a$result$location$lat)
  k[[i]] <- print(resa2)
}
resa3 <- t(as.data.frame(k))
print(resa3)

r语言Akaike信息准则 r语言api_API_07

四、讨论

这里仅展示了腾讯地图的,还有可以百度地图,有R包REmap可以做可视化。之前在社区给人评论了R可以实现,还有人开怼我。。。有人觉得没用,这不网页一搜就有了;有人觉得有用,空间数据做人口学等可视化,大把;还有最重要的是批量工作流,没无用之物,有无用之人,杠我就是你对。