使用R中的坐标和像素值列将图像转换为数据帧

时间:2015-03-27 16:40:06

标签: r spatstat

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

原始图像作为矩阵导入R中,没有先验坐标。最小和最大坐标和分辨率在文本文件中给出,因此我使用它们为im创建spatstat类。 这是一个简单的例子,让我们说seq小数点坐标,例如图像的分辨率为10米。

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按列调用值。

建议?

1 个答案:

答案 0 :(得分: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

应该这样做;)