我们知道,GEE中的栅格数据类型包括了Image和它的集合ImageCollection。相应的,也出现了很多基于Image和ImageCollection开发的函数。
然而,在GEE中,却几乎没有找到基于Pixels的函数类型
。因此,如何开展逐像元分析,成为了GEE算法构建的难点。
在GEE中,栅格数据的构建是以波段(
Band
)为最小单元构成影像(Image),而一个影像(Image)包含多个波段(
Band
),多个影像组合成为了影像集合(ImageCollection)。因此,可以说GEE中的栅格数据分析几乎都是以影像为单元开展的。然而,在很多研究中,我们需要对
逐像元开展分析,包括变化分析、邻域分析、叠加分析等等
。如何开展这类研究成为了一个难点。下图为栅格数据的关系图:
慢慢的,我们不满足于仅仅是开展整幅影像的处理、分析以及建模。
我们需要对像元数据开展分析,最常用的就是采样!
例如土地利用分类、生物量估算、碳汇估算等,因此有了如下的代码:
var samplePoints = image.sample({
region: roi,
scale: 30,
numPixels: numSamples,
seed: 42,
geometries: true
});
当然,我们有时候也会对影像中的像元进行卷积分析,这里就涉及核运算了。GEE中确实提供了不少的核算子,我们以最常用的正方形为例:
var squareKernel = ee.Kernel.square({
radius: 2,
units: 'pixels',
normalize: true
});
var convolvedImage = image.convolve(squareKernel);
然而,以上并没有解决我们对于逐像元的分析需求,只能满足部分需求,远远达不到我们想构建自己的模型。
我们换个思路。
GEE的影像的像元由一个一个正方形组成,它是不是和矢量数据的一个一个点组成Feature很相似?
恰巧的是,GEE提供了Sample函数,它刚好可以将栅格数据转换成一个一个的点数据,而基于Feature的函数分析,GEE是提供了海量的API的,这就为GEE逐像元分析提供了思路!
因此,引出本文想表达的一个观点,GEE逐像元分析,不就是将像元分析转换成点分析吗?大不了最后再将点数据再转换成栅格数据嘛!!!
其流程如下图所示:
此后,我们可以开展任意基于像元的操作了。基于这个思路,我想至少可以开发几十种不同的算法了。