使用 ggmap 包将地理编码转换为文本地址时出错
Error when translating geocode to text address using ggmap package
我想使用 ggmap
的函数添加一个列,其中包含 data.table 中列出的每个商店的文本地址,基于商店的地理编码(经度和纬度):revgeocode
.
为此,我有一个包含以下信息的 data.table:
dt
shop_id LON LAT
Shop1 -86.82651 21.15774
Shop2 -86.82663 21.17349
Shop3 -86.84672 21.14235
我想使用下面的 for
循环来添加一个列,该列以可读文本显示每家商店的地址:
dt$address <- "TEXT"
i = nrow(dt)
for (i in c(1:nrow(dt))) {
dt$address[i] <- revgeocode( as.numeric( dt[i,c("LON","LAT"] ),
output = "address", source = "google")
}
不幸的是,循环并没有完全起作用。我收到了某些地理编码的以下警告消息:
1: In revgeocode(as.numeric(sucs[i, c("LONGITUD", "LATITUD")]), output
= "address", : reverse geocode failed - bad location? location = "-86.8266333"reverse geocode failed - bad location? location =
"21.1734889"
理论上,这些代码都应该有效,因为商店的地理编码是直接从 Google 地球提取的。有没有人知道为什么有些 goecodes return 作为 bad location
警告?
谢谢!
没问题运行你的循环(我更正了语法):
for( i in 1:nrow(dt) ) {
dt$address[i] <- revgeocode( as.numeric(dt[i, c("LON","LAT")]), output = "address" )
}
> dt
shop_id LON LAT
1 Shop1 -86.82651 21.15774
2 Shop2 -86.82663 21.17349
3 Shop3 -86.84672 21.14235
address
1 Av Coba 9, 22, 77500 Cancún, Q.R., Mexico
2 Carr. Tulum - Cancún 3d, 63, 77513 Cancún, Q.R., Mexico
3 Av Kohunlich Smza 50 Mza 27 Lotes 102 103 y 104, Capistrano, 50, 77533 Cancún, Q.R., Mexico
可能错误是由 Google API return 编辑的,因为在特定时间后未能 return 地址, 很常见。您可以通过添加一个条件循环来解决它,让它一直尝试直到所有地址都被 returned:
dt$address <- NA
while( anyNA(dt$address) ) {
for( i in 1:nrow(dt) ) {
if( is.na(dt[i,"address"]) ) {
dt$address[i] <- revgeocode( as.numeric(dt[i, c("LON","LAT")]), output = "address" )
}
}
}
我想使用 ggmap
的函数添加一个列,其中包含 data.table 中列出的每个商店的文本地址,基于商店的地理编码(经度和纬度):revgeocode
.
为此,我有一个包含以下信息的 data.table:
dt
shop_id LON LAT
Shop1 -86.82651 21.15774
Shop2 -86.82663 21.17349
Shop3 -86.84672 21.14235
我想使用下面的 for
循环来添加一个列,该列以可读文本显示每家商店的地址:
dt$address <- "TEXT"
i = nrow(dt)
for (i in c(1:nrow(dt))) {
dt$address[i] <- revgeocode( as.numeric( dt[i,c("LON","LAT"] ),
output = "address", source = "google")
}
不幸的是,循环并没有完全起作用。我收到了某些地理编码的以下警告消息:
1: In revgeocode(as.numeric(sucs[i, c("LONGITUD", "LATITUD")]), output = "address", : reverse geocode failed - bad location? location = "-86.8266333"reverse geocode failed - bad location? location = "21.1734889"
理论上,这些代码都应该有效,因为商店的地理编码是直接从 Google 地球提取的。有没有人知道为什么有些 goecodes return 作为 bad location
警告?
谢谢!
没问题运行你的循环(我更正了语法):
for( i in 1:nrow(dt) ) {
dt$address[i] <- revgeocode( as.numeric(dt[i, c("LON","LAT")]), output = "address" )
}
> dt
shop_id LON LAT
1 Shop1 -86.82651 21.15774
2 Shop2 -86.82663 21.17349
3 Shop3 -86.84672 21.14235
address
1 Av Coba 9, 22, 77500 Cancún, Q.R., Mexico
2 Carr. Tulum - Cancún 3d, 63, 77513 Cancún, Q.R., Mexico
3 Av Kohunlich Smza 50 Mza 27 Lotes 102 103 y 104, Capistrano, 50, 77533 Cancún, Q.R., Mexico
可能错误是由 Google API return 编辑的,因为在特定时间后未能 return 地址, 很常见。您可以通过添加一个条件循环来解决它,让它一直尝试直到所有地址都被 returned:
dt$address <- NA
while( anyNA(dt$address) ) {
for( i in 1:nrow(dt) ) {
if( is.na(dt[i,"address"]) ) {
dt$address[i] <- revgeocode( as.numeric(dt[i, c("LON","LAT")]), output = "address" )
}
}
}