我目前正在抓取地址以将其转换为地理编码并进行绘制。 我没有使用googlemapsAPI,因为要访问它,需要输入信用卡号。 我改用另一个网站。结果应该是地址的列表,其中包含特定的long和lat值,并显示计算所用的时间。
library(dplyr)
library(jsonlite)
nominatim_osm <- function(address = NULL)
{
if(suppressWarnings(is.null(address)))
return(data.frame())
tryCatch(
d <- jsonlite::fromJSON(
gsub('\\@addr\\@', gsub('\\s+', '\\%20', address),
'http://nominatim.openstreetmap.org/search/@addr@?format=json&addressdetails=0&limit=1')
), error = function(c) return(data.frame())
)
if(length(d) == 0) return(data.frame())
return(data.frame(lon = as.numeric(d$lon), lat = as.numeric(d$lat)))
}
addresses <- c("Baker Street 221b, London", "Brandenburger Tor, Berlin",
"Platz der Deutschen Einheit 1, Hamburg", "Arc de Triomphe de l’Etoile, Paris",
"Дворцовая пл., Санкт-Петербург, Россия")
d <- suppressWarnings(lapply(addresses, function(address) {
#set the elapsed time counter to 0
t <- Sys.time()
#calling the nominatim OSM API
api_output <- nominatim_osm(address)
#get the elapsed time
t <- difftime(Sys.time(), t, 'secs')
#return data.frame with the input address, output of the nominatim_osm function and elapsed time
return(data.frame(address = address, api_output, elapsed_time = t))
}) %>%
#stack the list output into data.frame
bind_rows() %>% data.frame())
#output the data.frame content into console
d
编译上部代码时,出现以下错误:
Error in nominatim_osm(address) : object 'd' not found
我希望您能为我提供帮助,在此先感谢。