我编写了一个脚本,使用R和Google地图对地址列表进行地理编码,但它超出了Google每秒10次查询速度限制。我想将此速度降低到每秒5次查询。
我的函数构造了URL,然后使用do.call,rbind和lapply调用函数来创建我的地理编码数据集。
geoc <- function(address){
out <- tryCatch({
url <- "http://maps.google.com/maps/api/geocode/json"
response <- GET(url,query=list(sensor="FALSE",address1=address))
json <- fromJSON(content(response,type="text"))
loc <- json$results[[1]]$geometry$location
return(c(address1=address, long=loc$lng, lat=loc$lat))
})
return(out)
}
result <- do.call(rbind,lapply(as.character(sample$location),geoc))
有没有办法将此速度降低到每秒约5次查询?如果我一次只对5或10进行地理编码,那么它的效果很好,但那里的任何东西都会引发Google错误。
谢谢!
答案 0 :(得分:1)
使用Sys.sleep
等待一段时间,然后继续。您将无法将该R会话用于其他任何事情,但您可以同时运行多个R会话,这样就不会阻止您在另一个R会话中工作。