住所データから緯度経度を取得して地図にプロットする
住所データをもらって地図上にプロットする仕事がたまにあるので、RgoogleMapsで対応しようと思っていたらAPIの仕様が変更になったせいで、そのままではマーカーがプロットできない。
仕方がないのでとりあえず動く関数を作った。
「とりあえず」なのでスクリプトに修正は加える予定。
スクリプトは以下からダウンロードしてsource("保存したディレクトリ/ggmap3.R")で読み込んでおく。
https://github.com/dichika/R/blob/master/ggmap3.R
追記110313
- google static map APIのURI制限が2048文字なので多くのマーカーは置けないことがわかった。
- 住所データはdataframe形式で入れないとエラーがでる。また現状の場合、1列しかないデータフレームの場合はダミー列を入れて2列以上にしないとエラーが出るので今後修正する。
使用例は以下。
library(XML) library(RCurl) library(RgoogleMaps) library(ReadImages) #住所データを用意する address <- data.frame(addr=c("東京都港区六本木6-10-1", "東京都港区赤坂九丁目7番1号", "東京都渋谷区代々木四丁目30番3号", "東京都千代田区霞が関1-1-1" ), stringsAsFactors = FALSE ) #自作関数のggmap3でマップデータを取得する ##location→住所データ(データフレーム) ##mapname→画像ファイル名.jpgで指定 ##num→住所データ内の住所が入力されている列番号を指定 map <- ggmap3(locationdata=address, mapname="sample.jpg", num=1) PlotOnStaticMap(map)
本来の仕様ではjpg以外も選べるが、windows以外だとインストールが面倒くさいrgdalパッケージで内部的に処理するみたいなのでとりあえずはjpg縛りとしている。