RgoogleMapsを使った放射線地図

RgoogleMaps はGoogle MapsをRから使うためのパッケージです。

options(repos="http://cran.ism.ac.jp") # 適当にCRANミラーを指定
update.packages()                      # 念のため
install.packages("png")                # これに依存する
install.packages("RgoogleMaps")

Googleのスタティックな地図を取得する関数 GetMap() で言語指定するための hl オプションが壊れているので修正した GetMap.R を置いておきます。作者には連絡済みで,次のバージョンでは直るはずです。

@nnistar さんのまとめられた福島県のデータを全部取得して放射線地図を描いてみましょう。CSVで取得したら一つにつなげて clean.rb のようなものできれいにしておきます。42万数千行ありますので,時間順にソートして,新しいデータが上に描かれるようにします。

library(RgoogleMaps)
library(RColorBrewer)
source("GetMap.R")
fukushima = read.csv("fukushima.csv", header=TRUE, as.is=TRUE)
fukushima[,6] = as.POSIXct(fukushima[,6])
o = order(fukushima[,6])
cols=c("white",brewer.pal(9, "YlOrRd"),rep("black",100))
FukushimaMap = GetMap(c(37.38,140.2), destfile="fukushima.png",
                      zoom=9, sensor="false", hl="ja")
tmp = PlotOnStaticMap(FukushimaMap, lat=fukushima[o,2],
                      lon=fukushima[o,3], pch=16,
                      col=cols[floor(fukushima[o,5]*2)+1])
tmp = PlotOnStaticMap(FukushimaMap, lat=37.422778,
                      lon=141.032339, pch="×", cex=2,
                      add=TRUE) # 福島第一原発
legend(-300, -290, xjust=0, yjust=0,
       legend=paste("≧",format((10:0)/2,digits=2,nsmall=1),"μSv/h",sep=""),
       fill=cols[11:1], bg="white")
福島県の放射線地図

GetMap() の他のオプションとして maptype="roadmap" もあります。狭い地域の場合はこちらのほうがいいでしょう。

別のサンプルも載せておきます。

福島市の放射線地図

描くものは点に限りません。文字列を描くには PlotOnStaticMap(..., FUN=text, labels=..., col=..., cex=...) のようにします。labels に文字列のベクトルを与え,cex に文字サイズ(標準は1)を与えます。

日本測地系と世界測地系

国の発表資料は日本測地系の場合がありますが,Google Mapsは世界測地系です。東京付近なら東経から12秒引き北緯に12秒足すと世界測地系になります。詳しくは国土地理院の日本測地系と世界測地系をご覧ください。Web上で変換するツールが,陸域は国土地理院のページ,海域は海上保安庁のページで提供されています。また,緯度 x' = x - 0.00010695 * x + 0.000017464 * y + 0.0046017,経度 y' = y - 0.000046038 * x - 0.000083043 * y + 0.01004 で近似計算できるそうです(Thanks: @nnistar さん)。

国土地理院が提供するTKY2JGDはWeb上・Windows上のツールですが,Macで使えるものとして BLconverter があります(Thanks: @Ishihara_Y さん)。GUIツールですがCUIでも使えます。

参考サイト(工事中)


奥村晴彦

Last modified: 2011-10-25 13:46:15