我想将遥感图像转换为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数据的两种不同表示形式 - 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
按列调用值。
建议?
答案 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
应该这样做;)