R语言学习记录:Raster包的brick和stack以及Terra包的SpatRaster
Brick

RasterBrick是一个多层栅格对象。它们通常由多图层(多波段)文件创建,但它们也可以完全存在于内存中。它们类似于RasterStack(可以用stack函数创建),但是当使用RasterBrick时,处理时间应该更短。然而,RasterBrick却不那么灵活,因为它们只能指向一个文件。
RasterBrick可以从Raster图层对象、RasterStack对象或(多图层)文件创建。还可以从空间像素*、空间网格*和范围对象中创建,以及从三维数组中创建。
Stack

Rasterstack是具有相同空间范围和分辨率的栅格图层对象的集合。stack可以从栅格图层对象创建,或者从栅格文件创建,或者两者同时创建。它也可以从空间像素的数据框或空间网格数据框对象中创建。

使用单图层对象分析栅格数据很常见。但是许多情况下,多变量的栅格数据集也经常被使用。Raster包对多图层数据有两类:“RasterStack”和“RasterBrick”。
这两类的主要区别就是:brick只能连接到一个单独的(多图层)文件。相对应的,stack可以从分散的文件或者从一些单独文件的图层(波段)组成。
实际上,stack是具有相同空间范围和分辨率的图层的集合。本质上,stack是图层的list。Stack可以很轻松地从不同位置的文件组成,并且他们可以与只在内存中存在的图层混合。
Brick对象事实上是一个多图层的对象,并且处理一个brick对象可以比stack更有效率(两者都有同样的数据的话)。然而,brick只涉及一个单独的文件。一个典型的例子是一个多波段的卫星image或者全球气候模型的输出文件(每个栅格像元一年中每一天的温度值的时间序列)。
Stack和brick对象的methods通常会返回一个brick。
SpatRaster

写这个笔记的时候才发现terra包好像也支持对矢量进行操作。它规定了一个矢量类别:SpatVector

总结:terra包对绝大部分操作应该是更为便捷的,但是raster包至今仍在更新。而且在github和stackexchange(overflow)上也有很多对terra包的问题反馈。但不可否认的是,它在处理大数据上比raster包更快,效率更高。