设置 SpatRaster 层的值
Setting values of layer of SpatRaster
我有一个 12 层的栅格,每个月一个。我想设置某些单元格的值(我已经获得了它们的 ID),但我只想在一层上设置这些值。
这是一个光栅
test_raster <- rast(vals= 0,
nrows=1500,
ncols=2000,
xmin=xmin,
xmax=xmax,
ymin=ymin,
ymax=ymax,
nlyrs= 12,
names = tolower(month.abb),
crs="+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 +units=m +no_defs ")
这是我要执行 replacement/assignment 的单元格的 ID 以及我想用
替换它们的值
cells_to_replace_values <- c(1:300)
values_for_replacement <- sample(1:300,300)
我可以轻松成功地替换每一层中的值
> test_raster[cells_to_replace_values] <- values_for_replacement
> test_raster
class : SpatRaster
dimensions : 1500, 2000, 12 (nrow, ncol, nlyr)
resolution : 100, 100 (x, y)
extent : 350000, 550000, 250000, 4e+05 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 +units=m +no_defs
source : memory
names : jan, feb, mar, apr, may, jun, ...
min values : 0, 0, 0, 0, 0, 0, ...
max values : 300, 300, 300, 300, 300, 300, ...
但我只想分配给一个月,一月。我尝试了 2 种方法,但出现了这些错误:
尝试 1
> test_raster[cells_to_replace_values]["jan"] <- values_for_replacement
Error: [setValues] values must be numeric, integer, logical, factor or character
尝试 2
>subset(test_raster,1)[cells_to_replace_values] <- values_for_replacement
Error in subset(test_raster, 1)[cells_to_replace_values] <- values_for_replacement :
could not find function "subset<-"
有人可以建议我该怎么做吗?谢谢!
我最终找到了能够执行此操作的正确配置:
test_raster[["jan"]][cells_to_replace_values] <- values_for_replacement
图层名称必须在 [[ ]]
中,然后是单元格 ID
我有一个 12 层的栅格,每个月一个。我想设置某些单元格的值(我已经获得了它们的 ID),但我只想在一层上设置这些值。
这是一个光栅
test_raster <- rast(vals= 0,
nrows=1500,
ncols=2000,
xmin=xmin,
xmax=xmax,
ymin=ymin,
ymax=ymax,
nlyrs= 12,
names = tolower(month.abb),
crs="+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 +units=m +no_defs ")
这是我要执行 replacement/assignment 的单元格的 ID 以及我想用
替换它们的值cells_to_replace_values <- c(1:300)
values_for_replacement <- sample(1:300,300)
我可以轻松成功地替换每一层中的值
> test_raster[cells_to_replace_values] <- values_for_replacement
> test_raster
class : SpatRaster
dimensions : 1500, 2000, 12 (nrow, ncol, nlyr)
resolution : 100, 100 (x, y)
extent : 350000, 550000, 250000, 4e+05 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 +units=m +no_defs
source : memory
names : jan, feb, mar, apr, may, jun, ...
min values : 0, 0, 0, 0, 0, 0, ...
max values : 300, 300, 300, 300, 300, 300, ...
但我只想分配给一个月,一月。我尝试了 2 种方法,但出现了这些错误:
尝试 1
> test_raster[cells_to_replace_values]["jan"] <- values_for_replacement
Error: [setValues] values must be numeric, integer, logical, factor or character
尝试 2
>subset(test_raster,1)[cells_to_replace_values] <- values_for_replacement
Error in subset(test_raster, 1)[cells_to_replace_values] <- values_for_replacement :
could not find function "subset<-"
有人可以建议我该怎么做吗?谢谢!
我最终找到了能够执行此操作的正确配置:
test_raster[["jan"]][cells_to_replace_values] <- values_for_replacement
图层名称必须在 [[ ]]
中,然后是单元格 ID