1.ee.ImageCollection.mosaic
(1)描述:镶嵌合成集合中的所有图像
(2)代码说明
用法 |
---|
ImageCollection.mosaic() |
论点 | 类型 | 详情 |
---|---|---|
imagecollection | 图像集合 | 镶嵌 |
(3)代码示例
//这段代码是使用 Google Earth Engine (EE) 的 JavaScript API 编写的,用于处理和可视化 Sentinel-2 卫星图像。以下是对代码的中文解释:
// 选择2021年7月与某个兴趣点相交的Sentinel-2图像集合。
// 选择了反射率、云概率和场景分类波段。
var col = ee.ImageCollection('COPERNICUS/S2_SR')
.filterDate('2021-07-01', '2021-08-01') // 过滤日期为2021年7月
.filterBounds(ee.Geometry.Point(-122.373, 37.448)) // 过滤与给定点相交的图像
.select('B.*|MSK_CLDPRB|SCL'); // 选择波段
// 反射率RGB的可视化参数。
var visRefl = {
bands: ['B11', 'B8', 'B3'], // 选择的波段
min: 0, // 最小显示值
max: 4000 // 最大显示值
};
Map.setCenter(-122.373, 37.448, 9); // 设置地图中心点和缩放级别
Map.addLayer(col, visRefl, 'Collection reference', false); // 添加图像集合层,但不显示
// 使用多种方法将集合减少到单个图像。
var mean = col.mean(); // 计算平均值
Map.addLayer(mean, visRefl, 'Mean (B11, B8, B3)'); // 添加平均值层
var median = col.median(); // 计算中位数
Map.addLayer(median, visRefl, 'Median (B11, B8, B3)'); // 添加中位数层
var min = col.min(); // 计算最小值
Map.addLayer(min, visRefl, 'Min (B11, B8, B3)'); // 添加最小值层
var max = col.max(); // 计算最大值
Map.addLayer(max, visRefl, 'Max (B11, B8, B3)'); // 添加最大值层
var sum = col.sum(); // 计算总和
Map.addLayer(sum, {bands: ['MSK_CLDPRB'], min: 0, max: 500}, 'Sum (MSK_CLDPRB)'); // 添加云概率总和层
var product = col.product(); // 计算乘积
Map.addLayer(product, {bands: ['MSK_CLDPRB'], min: 0, max: 1e10}, 'Product (MSK_CLDPRB)'); // 添加云概率乘积层
// ee.ImageCollection.mode 返回最常见的值。如果出现多个众数值,则返回最小的众数值。
var mode = col.mode(); // 计算模式值
Map.addLayer(mode, {bands: ['SCL'], min: 1, max: 11}, 'Mode (pixel class)'); // 添加像素分类模式层
// ee.ImageCollection.count 返回有效观测的频率。在这里,图像像素基于云概率进行遮罩,
// 以向集合中添加有效观测的变异性。请注意,没有有效观测的像素将从返回的图像中遮罩掉。
var notCloudCol = col.map(function(img) { // 过滤掉云概率大于10%的像素
return img.updateMask(img.select('MSK_CLDPRB').lte(10));
});
var count = notCloudCol.count(); // 计算非云观测的数量
Map.addLayer(count, {min: 1, max: 5}, 'Count (not cloud observations)'); // 添加非云观测计数层
// ee.ImageCollection.mosaic 根据图像在集合中的位置(优先级从后到先)和像素遮罩状态进行合成,
// 其中无效(遮罩值为0)的像素由前面的有效(遮罩值>0)像素填充。
var mosaic = notCloudCol.mosaic(); // 创建掩膜图像
Map.addLayer(mosaic, visRefl, 'Mosaic (B11, B8, B3)'); // 添加掩膜层
(4)注意
ee.ImageCollection.mosaic 根据图像在集合中的位置(优先级从后到先)和像素遮罩状态进行合成。在时序影像合成时,时序影像按照时间排列,直接使用mosaic(),优先在最上层的是最新日期的影像。若想规定指定日期影像在前,需单独设置。
2.ee.ImageCollection.qualityMosaic
(1)描述:使用质量波段作为每像素排序函数来合成集合中的所有图像。
(2)代码说明
用法 | 返回 |
---|---|
ImageCollection.qualityMosaic(qualityBand) | 图像 |
论点 | 类型 | 详情 |
---|---|---|
Imageollection | 图像集合 | 镶嵌的图像 |
qualityBand | 字符串 | 集合中质量带的名称 |
(3)代码示例
//使用 Google Earth Engine (EE) 的 JavaScript API,基于云概率得分生成最佳像素镶嵌图像
// 目标是从一系列 Sentinel-2 图像生成一个最佳像素镶嵌图像,
// 其中像素质量基于云概率得分。
// qualityMosaic() 函数选择具有最高质量波段得分的像素(逐像素)来生成最终的镶嵌图像。
// 选择的图像(逐像素)中的所有波段将包含在输出中。
// Sentinel-2 SR 图像集合
var col = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
.filterBounds(ee.Geometry.Point(-103.19, 40.14)) // 过滤与给定点相交的图像
.filterDate('2020-07-01', '2020-09-01'); // 过滤日期为2020年7月至2020年9月
// 因为云概率从0到100(低到高),所以需反转 MSK_CLDPRB 波段值,
// 使得低云概率像素表示高质量。在这里,反转函数映射到图像集合上,
// 反转的 MSK_CLDPRB 波段作为一个“质量”波段添加。
col = col.map(function(img) {
var cldProb = img.select('MSK_CLDPRB'); // 选择云概率波段
var cldProbInv = cldProb.multiply(-1).rename('quality'); // 反转并重命名为“质量”
return img.addBands(cldProbInv); // 添加反转的云概率波段作为质量波段
});
// 从图像集合生成最佳像素镶嵌图像。
var img = col.qualityMosaic('quality'); // 使用质量波段生成镶嵌图像
Map.addLayer(img, visParams, 'Best-pixel mosaic (by cloud score)'); // 添加基于云得分的最佳像素镶嵌层
// 根据云概率构建最差像素镶嵌图像,使用 MSK_CLDPRB 波段作为质量波段(最差像素具有最高的云概率得分)。
var img = col.qualityMosaic('MSK_CLDPRB'); // 使用云概率波段生成镶嵌图像
Map.addLayer(img, visParams, 'Worst-pixel mosaic (by cloud score)', false); // 添加基于云得分的最差像素镶嵌层,但不显示
(4)注意
qualityMosaic() 函数选择具有最高质量波段得分的像素(逐像素)来生成最终的镶嵌图像,主要依靠云质量判断