Решения по нехватке памяти с использованием extract () в большом растровом изображении - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть процессор Core i5 и компьютер с 8 ГБ ОЗУ, но я хотел бы использовать R и растровый пакет (функция extract ()) для вычисления пикселей (SD, Skewness и Kurtosis в 1 единице радиуса буфера) врастр geoTiff, но мое исходное изображение geoTiff имеет размеры 6244 (nrow), 8721 (ncol) и 54453924 (ncell).Этот размер изображения вызывает недостаток памяти, например, в моем коде ниже:

### <code r>
#Packages
library(raster)
library(rgdal)
library(moments) #Measures of Skewness and Kurtosis

memory.limit(size=50000)#Increase memory

## Create artificial raster for my geoTiff simulation - dimensions  of my original geoTiff: 6244, 8721, 54453924  (nrow, ncol, ncell)
r <- raster(nc=8721, nr=6244) 
r <- setValues(r, round(runif(ncell(r))* 255))

##Create geoTiff
writeRaster(r, "r.tif", drivername="GTiff")

##Open geoTiff
r2<-raster("r.tif") 

#Extract all pixel coordinates in raster
coord_r<-coordinates(r2)

#Extract standard deviation, skewness and kurtosis
Buffer<-1
SD<-function (x, na.rm = TRUE)
{
if (is.matrix(x))
    apply(x, 2, sd, na.rm = na.rm)
else if (is.vector(x))
    sqrt(var(x, na.rm = na.rm))
else if (is.data.frame(x))
    sapply(x, sd, na.rm = na.rm)
else sqrt(var(as.vector(x), na.rm = na.rm))
}
desv_pad_R<-extract(r2, coord_r, buffer = Buffer, fun = SD)
str(desv_pad_R)
sk_R <-extract(r2,coord_r,buffer=Buffer, fun=skewness, na.rm = TRUE)
str(sk_R)
k_R <-extract(r2,coord_r,buffer=Buffer, fun=kurtosis, na.rm = TRUE)
str(k_R)
# <END code> 

Существуют различные подходы (например, интеграция с SAGA GIS или GRASS, с использованием RQGIS, преобразование изображения в ASCII) для моей проблемы с использованиемтот же компьютер и работает в R?

Спасибо заранее,

...