2016-04-06 9 views
3

私は住所が存在するかどうかをチェックするために簡単なコードを記述しようとしている内に存在するかどうか:チェックは、住所は、R

を私の最初の試みで、私は書き込みアドレスを入れて、それが私に正しいアドレスを与える:

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値または何らかの旗を返すことができますか?

答えて

2

ggmapパッケージには、既にGoogle MapsジオコーディングAPIの素晴らしいラッパーが用意されています。 outputパラメータをmoreに設定すると、アドレスが正確に一致するか(rooftop)、近似値(approximate,range_interpolated,geometric_center)を示すloctypeが返されます。詳細については、the documentationを参照してください。

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 
+0

わかりました。次に、loctypeが近似値であるかどうかをチェックするための条件を書くことができます。 – anonymous