RSpatial:使用 terra 将网格(列表)转换为栅格

问题描述 投票:0回答:1

要从列表格式的网格构建栅格,我使用栅格 pckg:

构建网格

grd<- list(x = (1:10), y = (1:10), z = matrix(1:100, 10, 10))

班级(GRD) [1]“列表”

网格到光栅层

r = 光栅(grd)

r 类:光栅层 尺寸:10、10、100(nrow、ncol、ncell) 分辨率 : 1, 1 (x, y) 范围:0.5、10.5、0.5、10.5(xmin、xmax、ymin、ymax) crs : +proj=longlat +datum=WGS84 +no_defs 来源:记忆 名称:层 值:1、100(最小值、最大值)

非常简单。然而,随着栅格包被 terra 取代,我想调整我的脚本,但对于 terra 我找不到将网格转换为 SpatRaster 的简单方法。有没有人找到解决方案?

我尝试过 rast() 但它不起作用

r2 = 拉斯特(grd) 错误:[rast,list] x 的所有元素都不是 SpatRaster

解决方案不能是改变网格的创建方式,因为这是一个简化的示例。列表更复杂,它们在经过插值函数后以这种格式出现。 谢谢。

list grid raster terra
1个回答
0
投票

使用正确的方法(详情请参阅

?terra::rast()
matrix-method

grd <- list(x = (1:10), y = (1:10), z = matrix(1:100, 10, 10))
raster::raster(grd)
#> class      : RasterLayer 
#> dimensions : 10, 10, 100  (nrow, ncol, ncell)
#> resolution : 1, 1  (x, y)
#> extent     : 0.5, 10.5, 0.5, 10.5  (xmin, xmax, ymin, ymax)
#> crs        : +proj=longlat +datum=WGS84 +no_defs 
#> source     : memory
#> names      : layer 
#> values     : 1, 100  (min, max)


terra::rast(grd[[3]], crs = "EPSG:4326")
#> class       : SpatRaster 
#> dimensions  : 10, 10, 1  (nrow, ncol, nlyr)
#> resolution  : 1, 1  (x, y)
#> extent      : 0, 10, 0, 10  (xmin, xmax, ymin, ymax)
#> coord. ref. : lon/lat WGS 84 (EPSG:4326) 
#> source(s)   : memory
#> name        : lyr.1 
#> min value   :     1 
#> max value   :   100


创建于 2024-02-06,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.