【问题标题】:How to batch geocode using googleway with tidyverse functions?如何使用具有 tidyverse 功能的 googleway 批量地理编码?
【发布时间】:2019-04-14 22:30:17
【问题描述】:

我正在寻找一种使用googlewaygoogle_geocode() 进行批量地理编码的方法,它一次只能返回一个结果。我想使用 tidyverse 函数,而其他答案使用了较旧且更令人困惑的 apply 系列函数。

【问题讨论】:

  • @Samuel Liew 删除了我的答案,所以我想我无法分享解决方案。

标签: r googleway


【解决方案1】:

这是我使用 tidyverse 函数的解决方案。

这会获取地理编码以及格式化的地址,以备不时之需(结果的其他组件也可以返回,只需将它们添加到返回的地图函数的最后一行的表中。

suppressPackageStartupMessages(require(tidyverse))
suppressPackageStartupMessages(require(googleway))

set_key("your key here")

df <- tibble(full_address = c("2379 ADDISON BLVD HIGH POINT 27262", 
                                      "1751 W LEXINGTON AVE HIGH POINT 27262", "dljknbkjs"))

df %>% 
  mutate(geocode_result = map(full_address, function(full_address) {
    res <- google_geocode(full_address) 

    if(res$status == "OK") {

      geo <- geocode_coordinates(res) %>% as_tibble()

      formatted_address <- geocode_address(res)

      geocode <- bind_cols(geo, formatted_address = formatted_address)
    }
    else geocode <- tibble(lat = NA, lng = NA, formatted_address = NA)

    return(geocode)

  })) %>%
  unnest()
#> # A tibble: 3 x 4
#>   full_address                  lat   lng formatted_address                
#>   <chr>                       <dbl> <dbl> <chr>                            
#> 1 2379 ADDISON BLVD HIGH POI…  36.0 -80.0 2379 Addison Blvd, High Point, N…
#> 2 1751 W LEXINGTON AVE HIGH …  36.0 -80.1 1751 W Lexington Ave, High Point…
#> 3 dljknbkjs                    NA    NA   <NA>

reprex package (v0.2.1) 于 2019-04-14 创建

【讨论】:

    猜你喜欢
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多