从 RasterBrick 创建 big.matrix 个对象
Creation of big.matrix object from RasterBrick
为了对大型栅格数据集执行 kmean 聚类分析,我尝试使用 brick
函数将我的 RasterBrick
对象转换为 big.matrix
对象,但是当我阅读.grd 文件返回 R
所有信息都丢失了。
library(raster)
library(bigmemory)
library(biganalytics)
#initialize raster
one <- raster(matrix(rnorm(400), 20, 20))
two <- raster(matrix(rnorm(400), 20, 20))
three <- raster(matrix(rnorm(400), 20, 20))
#save brick object as .grd file
brick(one, two, three, filename = "test")
#read .grd file in as big.matrix
big_matrix <- as.big.matrix("test.grd", type = "double")
#check dimensions
dim(big_matrix)
#perform kmeans
bigkmeans(big_matrix, 3)
我可以在我的目录中看到 .grd 和 .gri 文件,但我不知道如何读回它们,或者如何将 .grd 文件输入 bigkmean
函数。知道我该怎么做吗?
示例数据
library(raster)
library(bigmemory)
b <- brick(system.file("external/rlogo.grd", package="raster"))
如果文件不是那么大,你可以这样做
x <- as.big.matrix(values(b))
否则,您可以使用这里的功能。
r2bm <- function(from, filename="") {
b <- big.matrix(ncell(from), nlayers(from), backingfile=filename )
nc <- ncol(from)
tr <- blockSize(from)
for (i in 1:tr$n) {
start <- ((tr$row[i]-1) * nc) + 1
end <- start + (tr$nrows[i] * nc) - 1
b[start:end, ] <- getValues(from, row=tr$row[i], nrows=tr$nrows[i])
}
b
}
现在使用它
y <- r2bm(b, "bg.dat")
为了对大型栅格数据集执行 kmean 聚类分析,我尝试使用 brick
函数将我的 RasterBrick
对象转换为 big.matrix
对象,但是当我阅读.grd 文件返回 R
所有信息都丢失了。
library(raster)
library(bigmemory)
library(biganalytics)
#initialize raster
one <- raster(matrix(rnorm(400), 20, 20))
two <- raster(matrix(rnorm(400), 20, 20))
three <- raster(matrix(rnorm(400), 20, 20))
#save brick object as .grd file
brick(one, two, three, filename = "test")
#read .grd file in as big.matrix
big_matrix <- as.big.matrix("test.grd", type = "double")
#check dimensions
dim(big_matrix)
#perform kmeans
bigkmeans(big_matrix, 3)
我可以在我的目录中看到 .grd 和 .gri 文件,但我不知道如何读回它们,或者如何将 .grd 文件输入 bigkmean
函数。知道我该怎么做吗?
示例数据
library(raster)
library(bigmemory)
b <- brick(system.file("external/rlogo.grd", package="raster"))
如果文件不是那么大,你可以这样做
x <- as.big.matrix(values(b))
否则,您可以使用这里的功能。
r2bm <- function(from, filename="") {
b <- big.matrix(ncell(from), nlayers(from), backingfile=filename )
nc <- ncol(from)
tr <- blockSize(from)
for (i in 1:tr$n) {
start <- ((tr$row[i]-1) * nc) + 1
end <- start + (tr$nrows[i] * nc) - 1
b[start:end, ] <- getValues(from, row=tr$row[i], nrows=tr$nrows[i])
}
b
}
现在使用它
y <- r2bm(b, "bg.dat")