Appendix D — Calculate Potential Evapotranspiration (PET)

English version

潜在蒸発散量 Potential evapotranspiration; PETを計算します。 方法はThornthwaite method(Thornthwaite 1948)です。 パッケージはSPEIを使用します(Beguería and Vicente-Serrano 2023)

ライブラリの読み込み

データの読み込み

このリポジトリの解析では、環境変数 PROJECT_DATA_DIR にデータの保存先を指定しています。 必要に応じて、適宜変更してください。

data_dir <- Sys.getenv("PROJECT_DATA_DIR")
# data_dir <- "data" # もし環境変数が設定されていない場合は、直接パスを指定してください。
sf_climate <- readRDS(file.path(
  data_dir,
  "climate_mesh_data_joined/climate_mesh_data.rds"
))

計算用データフレームの作成

緯度、月平均気温を抽出します。

latitudes <- sf_climate$latitude
df_temp <- sf_climate[, grep("mean_temperature", names(sf_climate))]
df_temp <- st_drop_geometry(df_temp) # ジオメトリを削除
df_temp <- df_temp[, 1:12] # 年平均気温を除外

keep <- complete.cases(df_temp) # NAを含まない行
removed_rows <- which(!keep) # 削除される元の行番号

df_temp_clean <- df_temp[keep, ]
sf_climate_clean <- sf_climate[keep, ]
row.names(df_temp_clean) <- sf_climate_clean$mesh_code_3rd

PETの計算

SPEI::thornthwaite() 関数を使用してPETを計算します。 もしメッセージを抑制したい場合は、引数にverbose = FALSEを追加してください。

n <- nrow(df_temp_clean) # サンプル数
pet_month <- matrix(NA, n, 12)
for (i in seq_len(n)) {
  pet_month[i, ] <- SPEI::thornthwaite(
    Tave = as.numeric(df_temp_clean[i, ]),
    lat = latitudes[i],
    verbose = FALSE
  )
}

PETデータの整形

pet_monthマトリックスをデータフレームに変換し、列名を設定します また、年間PETも計算します。

df_pet <- as.data.frame(pet_month)
names(df_pet) <- paste0("PET", 1:12)
df_pet$PET_year <- rowSums(df_pet)

データの結合

mesh_code_3rdをキーにして、PETデータを元の気候データと結合します。 結合後、ジオメトリを削除して、データフレームとして保存します。

df_pet$mesh_code_3rd <- row.names(df_temp_clean)
sf_merged <- merge(
  sf_climate,
  df_pet,
  by = "mesh_code_3rd",
  all.x = TRUE,
  sort = FALSE
)
df_merged <- st_drop_geometry(sf_merged)

データの保存

RDS形式とCSV形式で保存します。 必要に応じて、保存先のパスを変更してください。

save_dir <- file.path(data_dir, "climate_mesh_data_joined")
saveRDS(sf_merged, file.path(save_dir, "climate_mesh_data_with_pet.rds"))
write.csv(
  df_merged,
  file.path(save_dir, "climate_mesh_data_with_pet.csv"),
  row.names = FALSE
)

References

Beguería, Santiago, and Sergio M. Vicente-Serrano. 2023. SPEI: Calculation of the Standardized Precipitation-Evapotranspiration Index. https://doi.org/10.32614/CRAN.package.SPEI.
Thornthwaite, C. W. 1948. “An Approach Toward a Rational Classification of Climate.” Geographical Review 38 (1): 55–94. https://doi.org/10.2307/210739.