我想将遥感图像转换data.frame
为 xy 坐标的两列和像素值的第三列。这是 的默认数据输入
ppmlasso
。
原始图像作为没有先验坐标的矩阵导入到 R 中。最小和最大坐标和分辨率在文本文件中给出,因此我使用它们im
为spatstat
. 这是一个简单的例子,可以说seq
十进制坐标,例如图像的分辨率为 10 m。
mat <- matrix(seq(1,20, by=1), nrow=4, ncol=5)
m <- mat[4:1,]
i <- im(m, xcol = seq(5,45, by=10), yrow = seq(5,35,by=10))
plot(i, axes = T)
print(mat)
到目前为止,RS 数据的两种不同表示形式 -matrix
和im
. 现在我想要第三种表示形式 -data.frame
两列用于坐标对,第三列用于相应的 RS 值。直觉上我是这样做的:
r <- raster(i)
v <- as.vector(as.matrix(r))
df <- cbind(coordinates(r),v)
print(df)
去的原因raster
是使用coordinates
调用。然而结果是错误的 - 坐标对和矩阵中的值不匹配,因为coordinates
从顶行开始沿整行调用顺序,而as.vector
按列调用值。
建议?