相关疑难解决方法(0)

如何在R中使用外推栅格

我试图缩减使用的方法在气候条件文章使用R软件.我几乎在那里,但我错过了几个步骤

需要的包和数据

在本例中,我将一些数据上传到archive.org网站,以加载本例中使用的所需包和数据,使用以下代码:

library(raster)
library(rgdal)

download.file("https://archive.org/download/Downscaling/BatPatagonia.rds", "Bat.rds")
download.file("https://archive.org/download/Downscaling/TempMinPatNow.rds", "Tmin.rds")

BatPatagonia <- readRDS("Bat.rds")
TempMinPatNow <- readRDS("Tmin.rds")
Run Code Online (Sandbox Code Playgroud)

BatPatagonia是一个栅格文件,其中Bathymetry和从GEBCO数据集中提取和转换的区域的高度,而TempMinPatNow是从worldclim中提取的1月相同区域的最低温度.下面是数据集的图:

在此输入图像描述

这个问题的目标

为了从过去的冰川最大值下调过去的数据,我需要模拟当前的气候如果海平面与过去相同的情况.为了做到这一点,我使用GEBCO数据,并且或多或少地弄清楚海岸是什么.根据上面引用的文章中的方法,这是前面的三个步骤:

  1. 为海拔20米以上的土地创建DEM
  2. 在移动窗口中计算多元线性回归
  3. 将系数外推到海洋

第3点是我一直在努力做的事情,我将展示我如何做到前2点,并展示我一直在寻找的尝试解决第3点的问题

1.为海拔20米的土地建立DEM

为了做到这一点,我采用了BatPatagonia栅格,并使用以下代码将所有超过20米的值替换为NA值:

Elev20 <- BatPatagonia

values(Elev20) <- ifelse(values(Elev20) <= 20, NA, values(Elev20))
Run Code Online (Sandbox Code Playgroud)

生成的栅格如下图所示

在此输入图像描述

2.在移动窗口中计算多元线性回归

根据第2591页的手稿,下一步是在移动窗口中使用以下公式对超过20米的高度进行多元线性回归:

在此输入图像描述

我们已经有高程数据,但我们还需要纬度和经度的栅格,为此我们使用以下代码,首先创建纬度和经度栅格:

Latitud <- BatPatagonia
Longitud <- BatPatagonia

data_matrix <- raster::xyFromCell(BatPatagonia, 1:ncell(BatPatagonia))

values(Latitud) <- data_matrix[, 2]
values(Longitud) <- data_matrix[, 1]
Run Code Online (Sandbox Code Playgroud)

我们将乘以高度超过20米的区域的光栅掩模,这样我们只得到我们需要的值:

Elev20Mask <- BatPatagonia

values(Elev20Mask) <- ifelse(values(Elev20Mask) <= 20, NA, 1)

Longitud <- Elev20Mask*Longitud

Latitud <- Elev20Mask*Latitud
Run Code Online (Sandbox Code Playgroud)

现在我将使用响应变量和预测变量构建一个堆栈:

Preds <- …
Run Code Online (Sandbox Code Playgroud)

r pde r-raster

12
推荐指数
1
解决办法
397
查看次数

标签 统计

pde ×1

r ×1

r-raster ×1