8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[R]住所から座標データ取得

Last updated at Posted at 2019-10-15

Rで住所から座標データを取得したくなったのでメモ

API

geocoding.jpのAPIを利用します。
調べた限り、無料でフリーに使えるapiはこれだけ?
ggmapライブラリなるものでgeocodingが昔は使えたようですが、今はAPI_KEYを求められるのでダメな模様。

ggmapを使っても取得できるようです。(11/3修正)
参考:ggmapパッケージを用いて住所から緯度経度のデータを得る

コード

リクエストに対して、結果はxml形式で返ってくるようですが、html上で表示されるのでrvestを使用して座標のみ取り出します。

library(rvest)

url <- paste0("https://www.geocoding.jp/api/?v=1.1&q=", "所望の住所")
                     
page <- read_html(url)
page %>% html_nodes("lat") %>% html_text() -> lat
page %>% html_nodes("lng") %>% html_text() -> lng
          
geo <- data.frame(lat, lng)

これだけで座標は取得できました。
複数の場合は以下

サンプル
# 複数住所も可
# 住所リスト
> jusho
[1] "日野市東豊田3-16"      "墨田区堤通2-6-10"      "墨田区東向島1-7-11"
> str(jusho)
chr [1:3] "日野市東豊田3-16" "墨田区堤通2-6-10" "墨田区東向島1-7-11"


url <- paste0("https://www.geocoding.jp/api/?v=1.1&q=", jusho)
                       
lat <- c()
lng <- c()

for(i in 1:length(url)){
      page <- read_html(url[i])
      
      page %>% html_nodes("lat") %>% html_text() -> lat_i
      page %>% html_nodes("lng") %>% html_text() -> lng_i
      
      lat <- c(lat, lat_i)
      lng <- c(lng, lng_i)
      Sys.sleep(5) #取得元に負担をかけないよう1データ取得ごとに5秒あける
    }
    

geo_list <- data.frame(jusho, lat, lng)

> geo_list
                 jusho       lat        lng
1      日野市東豊田3-16 35.666307 139.387277
2      墨田区堤通2-6-10  35.73371 139.816348
3  墨田区東向島1--11 35.721908  139.81308

座標を取得できました。
ここまで取れればleafletなどで可視化するなど、色々できそうです。

参考

住所から緯度経度を取得するpythonスニペット
geocoding.jp
ggmapパッケージを用いて住所から緯度経度のデータを得る

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?