一、前言
这几天用R和MATLAB在学机器学习的时候尝试调用了API,无意间发现了腾讯地图的API,开源的,就折腾了个半个多小时,花十分钟来记录一下,以下出现的建筑名仅供参考学习(脑海里第一时间浮现的,并无他意),R版本是4.2.1
二、准备工作
2.1注册
右上角控制台,注册一个WebService API的用户,选个人开发者即可
地址:https://lbs.qq.com/webservice_v1/index.html
2.2拿KEY
创建应用,用途选教育,随便命名
添加Key,随便命名
三、调用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 #标准地址,具体地址
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)
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)
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)
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包REmap可以做可视化。之前在社区给人评论了R可以实现,还有人开怼我。。。有人觉得没用,这不网页一搜就有了;有人觉得有用,空间数据做人口学等可视化,大把;还有最重要的是批量工作流,没无用之物,有无用之人,杠我就是你对。