読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

RgoogleMapsで簡単GIS

R 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:ちなみに、プロットしたのは電気通信大学です。