地理编码地址到 R 中的县
Posted
技术标签:
【中文标题】地理编码地址到 R 中的县【英文标题】:Geocode address to county in R 【发布时间】:2021-06-29 00:06:31 【问题描述】:我有一个街道地址列表,我想将其地理编码到县。我在 R 中工作。下面是简化示例。不幸的是,由于新的 Google API 服务条款,您需要拥有自己的 API 密钥才能运行我的代码——它不应该被共享,所以请不要将它包含在您的解决方案代码中。
我怀疑这是格式问题,但我对 R 太陌生,不知道解决方案。
library(tidyverse)
library(ggmap)
register_google(key = <YOUR GOOGLE KEY>)
ltr <- letters %>% head(5)
adr <- c('110 State St, Albany, NY' ,
'100 State Cir, Annapolis, MD' ,
'206 Washington St SW, Atlanta, GA' ,
'210 State St, Augusta, ME' ,
'1100 Congress Ave, Austin, TX')
rawAdr <- data.frame(ltr , adr)
# the following only retrieves latitude and longitude
latlonAdr <- geocode(location = rawAdr$adr) %>%
bind_cols(rawAdr , .)
# the following retrieves county (among much other information),
# but it is formatted in a way that is
# impossible to use. For instance, county a is in variable long_name...17,
# but the same name is repeated for all addresses. The county for address b is given in
# long_name...64, again the same name for all addresses.
geoAdr <- geocode(location = rawAdr$adr , output = 'all') %>%
bind_cols(rawAdr , . )
我想要一个列出 ltr、adr 和(正确)县的文件。感谢您的任何帮助! (抱歉,我将有几个小时无法查看答案。)
【问题讨论】:
【参考方案1】:geocode 函数的返回值是一个长的嵌套列表,您需要在列表中钻取以找到感兴趣的字段。
这是一个绕过 ggmap 包并返回 JSON 响应的解决方案,这更容易解析:
library(magrittr)
ltr <- letters %>% head(5)
adr <- c('110 State St, Albany, NY' ,
'100 State Cir, Annapolis, MD' ,
'206 Washington St SW, Atlanta, GA' ,
'210 State St, Augusta, ME' ,
'1100 Congress Ave, Austin, TX')
rawAdr <- data.frame(ltr , adr)
#replace spaces with + for a valid web address
adrs <-gsub(" ", "+", adr)
#add the key here to the http address
urls <-paste("https://maps.googleapis.com/maps/api/geocode/json?","address=",adrs,"&key=***keyGoesHere***",sep="")
#query the API, and search for the row that contains the word County and return that value
counties <- sapply(urls, function(url)
print(url)
rgc <- jsonlite::fromJSON(url)
county <-rgc$results$address_components[[1]]$long_name[grep("County", rgc$results$address_components[[1]]$long_name)]
county
)
rawAdr$County <- counties
rawAdr
【讨论】:
这很好,你也知道如何添加状态吗? @JohnClegg,所有这些信息都应该存储在响应变量 rgc 中。 上面的“counties”变量只包含url和县名 是的,这是真的。在函数内部,这一行jsonlite::fromJSON(url)
返回整个位置记录。需要从这里解析出所需的信息。如果您需要帮助,请提出一个新问题,而不是使用评论部分。以上是关于地理编码地址到 R 中的县的主要内容,如果未能解决你的问题,请参考以下文章