У меня есть скрипт, который использует 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