R:使用getURL()提取地址

时间:2014-08-12 21:56:47

标签: r google-maps url geocoding spatial

我有大量谷歌地图网址,并希望从网址获取一个干净的地址进行地理编码。我最近在RCurl包中找到了getURL(),这给了我很多信息

  

库(RCurl)

     

使用getURL(" https://maps.google.com/?q=loc%3A+%32%34%34%30+Seattle%2C+%39%38%31%31%36+WA+US&#34)

但我真正感兴趣的是将地址片段放在getURL()输出的前端:

  

...< meta content = \" loc: 2440 Seattle,98116 WA US - Google Maps \"属性= \" OG:标题\"> ...

更新:我刚刚意识到上述网址是一个不好的例子,这是一个不同的例子:

  

使用getURL(" https://maps.google.com/?q=loc%3A+%31%30%30%35%36+Interlake+Ave+N+seattle+WA+US&#34)

     

...< meta content = \" loc: 10056 Interlake Ave N seattle WA US - Google Maps \"属性= \" OG:标题\"> ...

有没有人就如何有效地解决这个问题提出建议?我的抱怨,我是R的中间人,非常感谢你的帮助。谢谢!

1 个答案:

答案 0 :(得分:3)

使用Google Maps XML-API,如下所示:

require(XML)

burl <- "http://maps.google.com/maps/api/geocode/xml?address="
address <- "2440 Seattle, 98116 WA US"
request <- paste0(burl,URLencode(address))

doc <- htmlTreeParse(request, useInternalNodes=TRUE)
# Interpreted Adress
xmlValue(doc[["//formatted_address"]])
[1] "2440, Seattle-Tacoma International Airport (SEA), Seattle, WA 98158, USA"

修改
如果您只有编码的网址,请使用URLdecode对其进行解码,而不是下载网址:

URL <- "https://maps.google.com/?q=loc%3A+%32%34%34%30+Seattle%2C+%39%38%31%31%36+WA+US"
URL <- gsub(".*loc","",URL) # Get rid of https://...
URL <- URLdecode(URL)
gsub("[:]|[+]", " ", URL) # Get rid of ":" and "+"
[1] "  2440 Seattle, 98116 WA US"