1

我想将遥感图像转换data.frame为 xy 坐标的两列和像素值的第三列。这是 的默认数据输入 ppmlasso

原始图像作为没有先验坐标的矩阵导入到 R 中。最小和最大坐标和分辨率在文本文件中给出,因此我使用它们imspatstat. 这是一个简单的例子,可以说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 数据的两种不同表示形式 -matrixim. 现在我想要第三种表示形式 -data.frame两列用于坐标对,第三列用于相应的 RS 值。直觉上我是这样做的:

r <- raster(i)
v <- as.vector(as.matrix(r))
df <- cbind(coordinates(r),v)
print(df)

去的原因raster是使用coordinates调用。然而结果是错误的 - 坐标对和矩阵中的值不匹配,因为coordinates从顶行开始沿整行调用顺序,而as.vector按列调用值。

建议?

4

1 回答 1

2
as.data.frame(i)
#    x  y value
#1   5  5     4
#2   5 15     3
#3   5 25     2
#4   5 35     1
#5  15  5     8
#6  15 15     7
#7  15 25     6
#8  15 35     5
#9  25  5    12
#10 25 15    11
#11 25 25    10
#12 25 35     9
#13 35  5    16
#14 35 15    15
#15 35 25    14
#16 35 35    13
#17 45  5    20
#18 45 15    19
#19 45 25    18
#20 45 35    17

应该这样做;)

于 2015-03-27T17:07:01.947 回答