Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

RgoogleMapsで簡単GIS

RgoogleMapsはR上でgoogle mapサービスを利用できる便利ライブラリです。

たとえば、ある指定の位置をgoogle map上でプロットする場合は、以下のようにします

データとして、gps.txt

Longitude,Latitude
35.656092,139.544074

を用意します。

その後、plotMapTest.R

# This program is used to plto the points on map
library(RgoogleMaps);
##GPS情報と拡大率を指定
c_lat=0;
c_lon=0; 
c_zoom=0;

##計測データを読み込み
rt <- read.table(file='./gps.txt',header=TRUE,sep=",")
lat <- as.vector(rt[,1])
lon <- as.vector(rt[,2])
bb <- qbbox(lat = lat, lon = lon)
center = c(mean(lat), mean(lon));

if((c_lat!=0)&&(c_lon!=0)){
  center = c(c_lat, c_lon);
}

zoom <- min(MaxZoom(range(lat), range(lon)));
if(c_zoom!=0){
  zoom <- c_zoom
}
##プロット色
col <- rep(10, length(lat))
col[length(lat)]=2

##Google様から当該地域の画像を頂く
  MyMap <- GetMap.bbox(size = c(640,480),
                center=center, zoom=17, 
                destfile = "./uec.png",
                GRAYSCALE =F,
                maptype="satellite"
                );

##画像生成
  tmp <- PlotOnStaticMap(MyMap,
                                  lat = lat,
                                  lon = lon,
                                  size = c(300,300),
                                  destfile = "./uec.png",
                                  cex=3,
                                  pch=20,
                                  col=col,
                                  add=FALSE,
                                  NEWMAP = FALSE
                                  );
dev.print(bmp, 
            file = "./uec_result.png", 
            width = 640,
            height=480,
            pointsize=10
)

 $ R --vanilla < plotMapTest.R

とやってやれば

といった風に画像をプロットすることができます。*1
今回は一点だけですが、数百点規模でのプロットも可能でした。

こちらのサイトにもあるように、

  • データ処理はRubyのような文字列に強い言語
  • 表示は統計に強いR

という風に使い分けるのが賢明なようです。

*1:ちなみに、プロットしたのは電気通信大学です。