检查在 R 中是否存在一个街道地址

3

我尝试编写一个简单的代码来检查街道地址是否存在:

在我的第一次尝试中,我输入正确的地址并得到了正确的地址:

addr <- '2147 Newhall Street,Santa Clara,CA 95050'  
url = paste('http://maps.google.com/maps/api/geocode/xml?address=',  addr,'&sensor=false',sep='')  
doc = xmlTreeParse(url) 
root = xmlRoot(doc) 
lat = xmlValue(root[['result']][['geometry']][['location']][['lat']]) 
long = xmlValue(root[['result']][['geometry']][['location']][['lng']]) 
lat
"37.3386004"
long
"-121.9405759"

如果我输入错误的街道地址,它仍然会给我提供坐标:
addr <- 'xyz,Santa Clara,CA 95050'  # set your address here
url = paste('http://maps.google.com/maps/api/geocode/xml?address=',      addr,'&sensor=false',sep='')    
doc = xmlTreeParse(url) 
root = xmlRoot(doc) 
lat = xmlValue(root[['result']][['geometry']][['location']][['lat']]) 
long = xmlValue(root[['result']][['geometry']][['location']][['lng']]) 
lat
"37.3539663"
long
"-121.9529992"

我确定上面的街道地址不存在,但我仍然得到了一些坐标。如果没有有效的街道地址,有没有办法返回一个NA值或某个标志?

1个回答

2

ggmap包中已经有一个很好的Google Maps地理编码API的包装器。如果将其output参数设置为more,它将返回一个loctype,指示地址是否精确匹配(rooftop)或近似匹配(approximaterange_interpolatedgeometric_center)。详见文档

library(ggmap)
addr <- '2147 Newhall Street,Santa Clara,CA 95050' 
geocode(addr, 'more')
# Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=2147%20Newhall%20Street,Santa%20Clara,CA%2095050&sensor=false
#         lon     lat           type loctype                                     address    north
# 1 -121.9406 37.3386 street_address rooftop 2147 newhall st, santa clara, ca 95050, usa 37.33995
#      south      east      west street_number          route    locality
# 1 37.33725 -121.9392 -121.9419          2147 Newhall Street Santa Clara
#   administrative_area_level_2 administrative_area_level_1       country postal_code
# 1          Santa Clara County                  California United States       95050

addr <- 'xyz,Santa Clara,CA 95050'
geocode(addr, 'more')
# Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=xyz,Santa%20Clara,CA%2095050&sensor=false
#        lon      lat        type     loctype                    address    north    south
# 1 -121.953 37.35397 postal_code approximate santa clara, ca 95050, usa 37.37448 37.32314
#        east      west postal_code    locality administrative_area_level_2
# 1 -121.9309 -121.9703       95050 Santa Clara          Santa Clara County
#   administrative_area_level_1       country
# 1                  California United States

哦,好的,我可以写一个条件来检查loctype是否是近似的。 - anonymous

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接