将图像转换为数据框,其中包含 R 中坐标和像素值的列
converting image to data frame with columns for coordinates and pixel value in R
我想将遥感图像转换为 data.frame
,两列用于 xy 坐标,第三列用于像素值。这是默认的数据输入
ppmlasso
.
原始图像作为矩阵导入到 R 中,没有先验坐标。最小和最大坐标和分辨率在文本文件中给出,因此我使用它们为 spatstat
创建 im
class。
这是一个简单的例子,让我们说 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
按列调用值。
建议?
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
应该这样做 ;)
我想将遥感图像转换为 data.frame
,两列用于 xy 坐标,第三列用于像素值。这是默认的数据输入
ppmlasso
.
原始图像作为矩阵导入到 R 中,没有先验坐标。最小和最大坐标和分辨率在文本文件中给出,因此我使用它们为 spatstat
创建 im
class。
这是一个简单的例子,让我们说 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
按列调用值。
建议?
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
应该这样做 ;)