GEE小白入门——镶嵌image影像数据:mosaic、qualityMosaic操作

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() 函数选择具有最高质量波段得分的像素(逐像素)来生成最终的镶嵌图像,主要依靠云质量判断

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值