【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が提供している気象データのようですが、簡単に取得できますね。