住所データから緯度経度を取得して地図にプロットする

住所データをもらって地図上にプロットする仕事がたまにあるので、RgoogleMapsで対応しようと思っていたらAPIの仕様が変更になったせいで、そのままではマーカーがプロットできない。
仕方がないのでとりあえず動く関数を作った。
「とりあえず」なのでスクリプトに修正は加える予定。

スクリプトは以下からダウンロードしてsource("保存したディレクトリ/ggmap3.R")で読み込んでおく。
https://github.com/dichika/R/blob/master/ggmap3.R

追記110313

  1. google static map APIURI制限が2048文字なので多くのマーカーは置けないことがわかった。
  2. 住所データは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縛りとしている。