【问题标题】:Why matrix to raster shows up rotated?为什么矩阵到栅格显示旋转?
【发布时间】:2019-02-23 12:14:47
【问题描述】:

我正在尝试将矩阵 (myMat) 转换为栅格数据 (myRas);但是,我不确定为什么会突然旋转。这可以通过使用t() 90 度旋转轻松解决,但是,如果有人解释为什么这种不需要的旋转一直发生,我将不胜感激?!有没有办法防止呢?

set.seed(23022019)
library(raster)
library(RColorBrewer)

#myMat
myMat<-matrix(runif(3*3), ncol=3) 
image((myMat), col=rev(brewer.pal(9,"RdYlBu")))

#myRas
myRas <- raster(myMat)
image((myRas), col=rev(brewer.pal(9,"RdYlBu")))

【问题讨论】:

  • @www :这不是stackoverflow.com/questions/14513480/… 的副本----即使标题暗示了这一点。这个问题是关于从具有 x、y 和 z 向量的列表中创建 RasterLayer
  • @RobertHijmans 当然。让我重新打开它。

标签: r matrix rotation r-raster


【解决方案1】:

我认为myRas 没有旋转;并且 image(myMat) 被旋转。见下文。

library(raster) 
myMat<-matrix(1:9, ncol=3, byrow=TRUE)
myRas <- raster(myMat)

par(mfrow=c(1,2))
image(myMat, col=terrain.colors(9), main="image(myMat)")
plot(myRas,  col=terrain.colors(9), main="plot(raster(myMat))")
text(myRas)

myMat
#     [,1] [,2] [,3]
#[1,]    1    2    3
#[2,]    4    5    6
#[3,]    7    8    9

发生的情况是image(myMat) 按行读取值,并按列从下到上填充值。您可能希望这样做,但这是一个轮换。相反,raster(myMat) 将值保持在相同的顺序。

graphics::image 的帮助解释了为什么它显示这样的值;即使它可能很难遵循。如果您提供具有值的矩阵,但不提供 x 和 y 坐标,则第一个参数 (x) 是“为方便起见而不是 z”。这将为 x 和 y 提供从 0 到 1 的等距值,并且假定 (z) 值按升序排列(从左下角开始按行排列!)。

【讨论】:

  • 这是矩阵到光栅转换规则的一个微妙点。我认为他们的帮助文档中没有明确提到这一点。
  • 我扩展了我的答案来解释 graphics::image 的作用。至于raster,对于那些不会发生的意想不到的事情,我不知道会怎么说。
猜你喜欢
  • 1970-01-01
  • 2014-07-31
  • 2018-01-09
  • 1970-01-01
  • 1970-01-01
  • 2013-06-05
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
相关资源
最近更新 更多