Существует ли способ построения глобального индекса теплоты с использованием данных WorldClim в R?
Для тех, кто не знаком с индексом теплоты, это уравнение, написанное Yim & Kira для описания длины и интенсивности растущего периода,см. здесь: https://www.jstage.jst.go.jp/article/seitai/25/2/25_KJ00001775740/_pdf/-char/en
Мой пример: у меня есть набор данных о населенных пунктах, где я использовал данные WorldClim для получения среднемесячной температуры в каждом месте и описал их в таблице:
## # A tibble: 5 x 18
## species latitude longitude temp_1 temp_2 temp_3 temp_4 temp_5 temp_6
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Magnol… 31.0 -91.5 9.05 11.1 15.5 19.6 23.1 26.3
## 2 Magnol… 35.7 -93.2 2.45 4.89 10.2 15.5 19.5 23.8
## 3 Magnol… 35.7 -93.2 2.45 4.89 10.2 15.5 19.5 23.8
## 4 Magnol… 43.2 -76.3 -5.33 -4.55 0.98 7.42 13.7 18.5
## 5 Magnol… 35.6 -92.9 2.45 4.89 10.2 15.5 19.5 23.8
## # … with 9 more variables: temp_7 <dbl>, temp_8 <dbl>, temp_9 <dbl>,
## # temp_10 <dbl>, temp_11 <dbl>, temp_12 <dbl>, valid_cells <dbl>,
## # warmth_index <dbl>, row_id <int>
Затем данные преобразуются из широкого в длинный:
reshaped_data <- raw_data %>%
tidyr::gather(key = "month", value = "temp", temp_1:temp_12) %>%
mutate(month = stringr::str_remove(month, "temp_") %>% readr::parse_number(),
warm = case_when(temp > 5 ~ TRUE,
TRUE ~ FALSE))
Используя уравнение Йима и Кира, коллега написал следующее для расчета индекса тепла в каждом месте:
warmth_index <- function(warm, temp){
warm_months <- sum(warm)
temp_sum <- sum(warm * temp) # when multiplied, the warm logical vector becomes 0 & 1
temp_sum - (5 * warm_months)
}
Это уравнение позволяет мне вычислять Индекс тепла, используя средние температуры в определенных местах, и делает это, как только я изменил все данные.
Но моя проблема заключается в следующем: я хотел быНайдите все места в мире, где найден подобный Индекс Тепла.Я предполагаю, что мне следует использовать RasterStacks (например, https://www.benjaminbell.co.uk/2018/02/rasterstacks-and-rasterplot.html), чтобы связать вместе все файлы tiff WorldClim и функцию calc (), как если бы вы рассчитывали максимальную или минимальную глобальную температуру (например,
ma.t.MIN <- calc(ma.t.min, min)
ma.t.MAX <- calc(ma.t.max, max)
*).1021 * Но я не уверен, как применить уравнение индекса теплоты к RasterStack, так как оно опирается на измененный тиббл, а не на tiff в папке моего проекта ... есть идеи, как это сделать? В конечном счете, я хотел бы закончитьс графиком, показывающим мир, оцененный по Индексу Тепла.