当前位置: 首页 > 知识库问答 >
问题:

使用R将光栅转换为矩阵

郑功
2023-03-14

我目前正在将原始矩阵转换为光栅以使用焦距函数,然后我想将光栅转换回矩阵。但是,当我尝试将光栅函数用作时,出现了一条错误消息。矩阵()。即使有这个非常简单的例子:

r <- raster(ncol=3, nrow=3)
r[] <- 1:ncell(r)
as.matrix(r)

以下是我得到的:

如果(!is.null(names(x)))列表(names(x),,则数组(x,c(length(x),1L)中出错:

“dimnames”[1]的长度不等于数组范围

我正在使用RstuIO、R版本3.4.0和ncdf4光栅rgdal库。

谢谢你的帮助。

共有1个答案

微生耘豪
2023-03-14

确保您使用的是as。矩阵功能来自光栅软件包,而非基本版本。

我假设您使用库或require加载包:

library(raster)
r <- raster()
r[] <- 1:ncell(r)

当我使用as时。矩阵,它工作:

> str(as.matrix(r))
 int [1:180, 1:360] 1 361 721 1081 1441 1801 2161 2521 2881 3241 ...

当您使用的基本版本为时。矩阵,您将确切收到以下错误消息:

> base::as.matrix(r)
Error in array(x, c(length(x), 1L), if (!is.null(names(x))) list(names(x),  : 
  length of 'dimnames' [1] not equal to array extent

因此,如果仅加载库对您不起作用,请尝试这样调用函数:raster::as。矩阵(r)

 类似资料:
  • 我有一个带有空间坐标和一个变量的矩阵数据。空间分辨率为1000米。 我想将其转换为光栅格式。 我使用下面的代码来完成它。但我得到的决心与我得到的不一样。有没有更好的方法可以用我的真实数据获得相同的分辨率?

  • 下面的代码在我的图像上生成两个框。我正计划进一步分析这些框内的像素。 在下面的例子中,在红色方块的情况下,我不想继续下去,因为它的右上角有黑色像素。而我想继续在绿色方块的情况下,因为它没有一个黑色像素沿着它的边缘。

  • 我必须将一些投影光栅(具有ndvi值)转换为csv或excel文件。我想保持网格形式,第一行作为公制lon值,第一列作为公制lat值。在交叉点应该有ndvi值。 我通常用“as”。数据frame(光栅,xy=T)将值导出为数据帧,但在这种情况下,我将获得一种值矩阵。 我想要的 安然后,write.csv....

  • 我被指派了从中剪裁光栅的任务。来自的nc文件。tif文件。 编辑(来自注释):我想提取临时值。来自的信息。nc,因为我需要检查特定区域的年平均温度。要进行比较,必须在完全相同的区域进行比较。这个nc文件比之前选中的区域大,因此我需要将其“剪裁”到。如果我有。这个tif数据的格式为0 | 1,其中为0(或.tif小于.nc)。nc数据应“剪辑”。最后,我想保留。nc数据,但在范围内。tif同时仍保留

  • 我想将光栅数据聚合到自定义形状文件中的每个多边形。 在这种情况下,我想获得撒哈拉以南非洲次国家区域城市化的平均程度。 我的sf如下所示: 或绘制: 另一方面,光栅数据采用以下形式: 这些比整个星球所需的要细得多。为了加速计算,我首先聚合光栅,然后将其转换为shapefile,剩余的每个光栅像素都转换为shapefile中的点几何形状。然后,这个shapefile可以聚合到我的区域边界。诚然,这不是

  • 有没有办法格式化到使用moment.js?它更容易格式化为('HH: MM: SS'),但传递变量为65并转换为('mm: ss')给我的响应为'01:00'而不是'01:05', 看法 脚本 下面是我在JSFIDDLE中的代码参考 https://jsfiddle.net/ujjumaki/2x1ndpja/13/