【R】daymetr
2021年4月9日
1. はじめに
daymetr
は、Daymet web services.へのインターフェースでDaymet気象データを簡単に取得、編集ができます。
2. インストール
CRANからインストールできます。
install.packages("daymetr")
3. つかってみる
例にあるようjにテネシー州にあるオークリッジ国立研究所周辺の降水量(snow water equivalent data (SWE, kg/m2))をプロットすることを目的とします。まずは、データの取得。
library(tidyverse)
library(daymetr)
library(raster)
詳細は、次で表示されます。
?daymetr
ピクセルデータとしてダウンロードするには、以下のようにします。netCDF subset (ncss) dataとしてダウンロードします。データは、tempdir()に保存されます。
ORNLab <- data.frame( lat = 36.0133, lon = -84.2625) location <- c( ORNLab$lat + 0.5, ORNLab$lon - 0.5, ORNLab$lat - 0.5, ORNLab$lon + 0.5 ) download_daymet_ncss( location = location, start = 2010, end = 2010, frequency = "daily", param = "swe", path = tempdir(), silent = FALSE)
ダウンロードしたデータを読み込みます。
r <- raster::stack(file.path(tempdir(),"swe_daily_2010_ncss.nc"))
プロジェクション方式を変換して再読み込みし、データの処理をします。
projection(r) <- "+proj=lcc +lat_1=25 +lat_2=60 +lat_0=42.5 +lon_0=-100 +x_0=0 +y_0=0 +ellps=WGS84 +units=km +no_defs" r <- raster::projectRaster(r, crs = "+init=epsg:4326") yearly_total_swe <- max(r) yearly_total_swe <- yearly_total_swe %>% rasterToPoints %>% as.data.frame() %>% rename('lon' = 'x', 'lat' = 'y', 'swe' = 'layer') %>% filter(swe > 0)
ラスターデータのプロットをしてみます。
ggplot(yearly_total_swe) + geom_raster(aes( lon, lat, fill = swe)) + geom_point( data = ORNLab, aes( lon, lat ), pch = 17, colour = "white" ) + scale_fill_viridis_c( na.value = NA ) + labs(title = "Yearly SWE maximum")
4. さいごに
NASAが提供している気象データのようですが、簡単に取得できますね。