2

我在 R 中有两个栅格对象,具有 216 个网格或具有相同经度和纬度坐标的单元格,一个具有每个网格的每日最大风速值,另一个具有代表单个网格中人口计数的数字。第一个栅格有 183 个图层,由以下信息表示。

> CMAWRF[[1]]
class       : SpatRaster 
dimensions  : 12, 18, 183  (nrow, ncol, nlyr)
resolution  : 0.25, 0.25  (x, y)
extent      : 3.125, 7.625, 50.625, 53.625  (xmin, xmax, ymin, ymax)
coord. ref. : lon/lat WGS 84 
source      : IPSL-IPSL-CM5A-MR_r1i1p1_IPSL-WRF381P1980.nc 
varname     : sfcWindAdjust (Bias-Adjust Near-Surface Wind Speed) 
names       : sfcWi~ust_1, sfcWi~ust_2, sfcWi~ust_3, sfcWi~ust_4, sfcWi~ust_5, sfcWi~ust_6, ... 
unit        :       m s-1,       m s-1,       m s-1,       m s-1,       m s-1,       m s-1, ... 
time        : 1980-01-01 10:30:00 to 1980-12-31 10:30:00 

第二个栅格只有 1 层,范围相同。可能会注意到,纬度坐标从 3.125 到 7.625,经度坐标从 50.625 到 53.625。这些坐标封装了荷兰。

所以我的目标是将人口栅格中的每个 I,Jth(I 表示行,J 表示列)单元格值与每层风速栅格中的每个 I,Jth 像元值相乘。但是,我只想对荷兰境内的像元值执行此操作,而不是对空间栅格覆盖的整个区域执行此操作。

有谁知道如何在 R 中做到这一点?

4

1 回答 1

1

示例数据

library(terra)
nld <- geodata::gadm("NLD", level=0, path=".")
pop <- rast(ext(nld) + 2, res=.1)    
values(pop) <- 1:ncell(pop) / 100
wth <- rast(pop, nlyr=2)
values(wth) <- runif(size(wth))    

解决方案

r <- mask(pop, nld, updatevalue=1)
x <- wth * r
plot(x, fun=\()lines(nld))

在此处输入图像描述

于 2021-10-29T16:32:38.750 回答