ここではRの jsonlite というパッケージを使う(この中で curl というパッケージも呼び出される)。次のようにしてインストールしておく。
install.packages("jsonlite")
install.packages("curl")
例として,原子力規制委員会の東日本大震災関連情報 放射線モニタリング測定結果等をとりあげる。
まずは http://radioactivity.nsr.go.jp/data/ja/master/prefectures.json にアクセスしてみる。三重県は http://radioactivity.nsr.go.jp/data/ja/master/prefecture_24.json であることがわかる。同様にして,http://radioactivity.nsr.go.jp/data/ja/master/area_24000.json に行き,四日市市の県保健環境研究所(緯度34.991940,経度136.485000,高さ1860.000000cm)の実データが http://radioactivity.nsr.go.jp/data/ja/real/area_24000/2401_trend.json にあることがわかる。
library(jsonlite)
x = fromJSON("http://radioactivity.nsr.go.jp/data/ja/real/area_24000/2401_trend.json")
これで x$last$airF$time
に最終時刻(例:"2015/04/15 16:30"
),x$last$airF$value
に値(例:0.062
,単位μSv/h)が入る。
現在時刻 x$time
を最終時刻とする10分刻みの24時間の実測値(6×24=144個)が x$day$airF$value
に入る。ただし 0
は欠測値。
airF
ではなく airM
や単なる air
の地点もある。固定型モニタリングポスト(fixed),可搬型モニタリングポスト(mobile?),それ以外(リアルタイム線量測定システム)の違いかと思われる。地点によっては地上1mの推定値が est
に入る。
24時間の実測値をプロットする例(Rでは単に air
とすれば,なければ airF
や airM
を拾う):
v = x$day$air$value
v = ifelse(v == 0, NA, v)
t = seq(from=as.POSIXct(x$time)-24*3600+600, by=600, length.out=24*6)
plot(t, v, type="o", pch=16, las=1, xlab="", ylab="", ylim=range(c(0,v),na.rm=TRUE))
福島県は次のように分類されている:
上の一覧で例えば福島市については,次の三つのファイルがある。
RでJSONデータを処理する (rjson) - DiaryException の例である(若干改変した)。
library(jsonlite)
m = fromJSON("http://maps.google.com/maps/api/elevation/json?path=43.0,141.4|26.2,127.7&samples=500&sensor=false")
e = m$results$elevation
l = m$results$location$lng
plot(l, e, type="l", xlab="経度", ylab="標高(m)")
(……続く……)