如何在国家边界内乘以栅格的单元格值
How to multiply cell values of rasters within a country border
我在 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、J(I 代表行,J 代表列)像元值与风速栅格中每个层的每个 I、J 像元值相乘。但是,我只想对荷兰国家边界内的像元值执行此操作,而不是空间栅格覆盖的整个区域。
有谁知道如何在 R 中执行此操作?
示例数据
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))
我在 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、J(I 代表行,J 代表列)像元值与风速栅格中每个层的每个 I、J 像元值相乘。但是,我只想对荷兰国家边界内的像元值执行此操作,而不是空间栅格覆盖的整个区域。
有谁知道如何在 R 中执行此操作?
示例数据
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))