R中的geocode_OSM()返回$ query = NA在循环中失败,但可以自行工作

时间:2019-02-15 14:22:23

标签: r

我有一个在循环中使用tmaptools :: geocode_OSM()的脚本。

这里说循环:

for(i in 1:nrow(origAddress)) {
if(origAddress[i,'lon'] == ""){
print(
  paste(
    "Working on geocoding:"
    , origAddress$PartialAddress[i]
    )
  )
result <- geocode_OSM(
  origAddress$PartialAddress[i]
  , return.first.only = T
  , as.data.frame = T
)
origAddress$lon[i] <- as.numeric(result[3])
origAddress$lat[i] <- as.numeric(result[2])
} else {
print("Trying next record...")
}
}

此循环可以正常工作,直到由于某种原因而导致geocode_OSM()$query返回NA的循环中断。我正在使用的示例是一个拼写错误的地址,其中城镇拼写错误。循环结果返回:

Error in do.call(rbind, output3) : second argument must be a list
In addition: Warning message:
In FUN(X[[i]], ...) : No results found for "LAKE RONKONKAMA, NY, 11779".

在RONKONKAMA湖上方实际上是拼写为LAKE RONKONKOMA。当我在循环外运行以下命令时,我得到:

tst.rslt <- geocode_OSM(
  origAddress$PartialAddress["LAKE RONKONKAMA, NY, 11779"]
  , return.first.only = T
  , as.data.frame = T
)
print(tst.rslt)

 query      lat      lon  lat_min  lat_max  lon_min  lon_max
1  <NA> 64.57315 11.52804 57.75901 71.38488 4.087527 31.76149

0 个答案:

没有答案