利用google地图API接口,批量获取谷歌地图提供的经纬度数据。原理类似于R软件中ggmap包中的geocod。
geocode_cn<-function(address){
require(ggmap)
require(rjson)
##批量转换中文字符
for(i in 1:length(address)){
location[i]<-paste(paste('%',unlist(iconv(address[i],from='GB2312',
to="utf-8",toRaw=T)),sep=''),collapse='')
}
posturl <-paste(location, sep = "&")
url_string<-paste("http://maps.googleapis.com/maps/api/geocode/json?address=",
posturl,"&sensor=false",sep="")
gc2<-matrix(0,length(address),2)
for(i in 1:length(address)){
url_string2<-URLencode(url_string[i])
connect<-url(url_string2)
lines<-try(readLines(connect,warn=FALSE),silent=TRUE)
close(connect)
gc<-fromJSON(paste(lines,collapse=""))
if(gc$status=="OK") {
lat <-gc$results[[1]]$geometry$location$lat
lon <-gc$results[[1]]$geometry$location$lng
} else {
lat<-NA
lon<-NA
}
res<-cbind(lon,lat)
gc2[i,]<-res[1,]
}
return(gc2)
}
https://blog.sciencenet.cn/blog-568299-1048883.html
上一篇:
在公共卫生的背景下学习概率论下一篇:
写给刚入学的硕士研究生的几段话