解决地理编码上下文中的错误“找不到对象<myvariable>”

时间:2019-10-30 12:34:15

标签: r geocoding

我目前正在抓取地址以将其转换为地理编码并进行绘制。 我没有使用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 

我希望您能为我提供帮助,在此先感谢。

0 个答案:

没有答案