Как рассчитать термические показатели в R по данным WorldClim - PullRequest
1 голос
/ 09 июня 2019

Существует ли способ построения глобального индекса теплоты с использованием данных 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 в папке моего проекта ... есть идеи, как это сделать? В конечном счете, я хотел бы закончитьс графиком, показывающим мир, оцененный по Индексу Тепла.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...