R 大型光栅图层的汇总和柱状图

R 大型光栅图层的汇总和柱状图,r,histogram,na,summary,R,Histogram,Na,Summary,我是R方面的初学者,对于包含高程模型的大型光栅图层(Barrow_DEM.tif,2,5GB),我有一些问题。此外,还有一个包含10个多边形的形状文件(Barrow_DTLB.shp),我希望从光栅中获取这些多边形的高程数据。这两个文件具有相同的空间范围和正确的坐标、投影等 `setwd("...") Barrow_DEM <- raster("Barrow_DEM.tif") Barrow_DTLB <- st_read("Barrow_DTLB.shp") Barrow_DTLB

我是R方面的初学者,对于包含高程模型的大型光栅图层(Barrow_DEM.tif,2,5GB),我有一些问题。此外,还有一个包含10个多边形的形状文件(Barrow_DTLB.shp),我希望从光栅中获取这些多边形的高程数据。这两个文件具有相同的空间范围和正确的坐标、投影等

`setwd("...")
Barrow_DEM <- raster("Barrow_DEM.tif")
Barrow_DTLB <- st_read("Barrow_DTLB.shp")
Barrow_DTLB_Buffer <- st_read("Barrow_DTLB_BufferOUT.shp")
Barrow_lake <- crop(Barrow_DEM, extent(Barrow_DTLB))
raster_lake <- rasterize(Barrow_DTLB, Barrow_lake, mask = TRUE)
summary(raster_lake)`
直方图的结果如下所示:

hist(raster_lake, col=rgb(0,0,1,0.5),  breaks=100, ylab= "Frequency", xlab= "Height", main= "Histogram DTLB Barrow")
Warning message: In .hist1(x, maxpixels = maxpixels, main = main, plot = plot, ...) :
  0% of the raster cells were used (of which 92% were NA). 7651 values used
我已经在这里的另一次讨论中尝试过这个,但它对我没有帮助。
replaceNA如果我理解得很好,您希望在删除NA的同时计算光栅值的直方图

您可以提取光栅值,删除NA并制作值的直方图:

require(raster)
require(sp)
require(gstat)

# load some data and make a raster object
data(meuse.grid)
meuse.grid <- data.frame(x =meuse.grid$y , y =meuse.grid$x , val = meuse.grid$dist)
coordinates(meuse.grid) <- ~x+y
gridded(meuse.grid) <- T
meuse.grid <- raster(meuse.grid)

# get the values from the raster, remove the NA's and make an histogram
hist(na.omit(getValues(meuse.grid)))
require(光栅)
需要(sp)
要求(gstat)
#加载一些数据并生成光栅对象
数据(meuse.grid)

meuse.gridff选项将不起作用,因为首先执行getValues()或values()。您仍将耗尽内存。我认为您唯一的选择是将您的大型光栅划分为平铺,使用预定义的中断计算每个平铺的直方图,然后合并平铺直方图。或者买一台内存更大的电脑

您可以尝试:

library(raster)

v  <- getValues(raster_lake) # extract values from raster layer into a vector
v2 <- v[!is.na(v)]           # remove NA values from the vector

length(v); length(v2)        # prove that the second object is smaller
hist(v2)
库(光栅)

v谢谢!hist(na.omit(getValues(meuse.grid)))帮助我处理中等大小的光栅文件,但对于上面的skcript,它仍然不起作用。有一条错误消息:无法分配大小为3.8GB的向量如果您对如何去除NA数据有任何其他想法,则greatI建议将该对象转换为ff对象。它占用更少的内存空间。做了个梦。
require(ff)

# create a ff object from the vector or the raster values (NA's are included)
val.Ras <- ff(getValues(meuse.grid))

# you can use this ff object as any other R vector files
hist(val.Ras[,3])

# check that it takes less memory
object.size(val.Ras)
64944 bytes

object.size(getValues(meuse.grid))
3168 bytes
library(raster)

v  <- getValues(raster_lake) # extract values from raster layer into a vector
v2 <- v[!is.na(v)]           # remove NA values from the vector

length(v); length(v2)        # prove that the second object is smaller
hist(v2)