【问题标题】:Error when translating geocode to text address using ggmap package使用 ggmap 包将地理编码转换为文本地址时出错
【发布时间】:2018-06-18 16:51:54
【问题描述】:

我想使用ggmap 的函数:revgeocode,根据商店的地理编码(经度和纬度)添加一列,其中包含 data.table 中列出的每个商店的文本地址。

为此,我有一个包含以下信息的 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: 在 revgeocode(as.numeric(sucs[i, c("LONGITUD", "LATITUD")]) 中,输出 =“地址”,:反向地理编码失败 - 位置错误? location = "-86.8266333"反向地理编码失败 - 位置错误?位置 = “21.1734889”

理论上,这些代码应该都能正常工作,因为商店的地理代码是直接从 Google 地球中提取的。有谁知道为什么有些 goecode 会返回 bad location 警告?

谢谢!

【问题讨论】:

    标签: r ggmap geocode


    【解决方案1】:

    运行你的循环没问题(我更正了语法):

    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 在一段时间后未能返回地址而返回的错误,这很常见。你可以通过添加一个条件循环来解决它,让它一直尝试直到返回所有地址:

    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" )
        }
      }
    }
    

    【讨论】:

    • PS: 不需要i = nrow(dt) 这一行
    • 谢谢卡洛斯!
    猜你喜欢
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 2018-10-10
    • 2021-01-24
    相关资源
    最近更新 更多