【R】daymetr

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

Add a Comment

メールアドレスが公開されることはありません。