GEE:STARFM方法对Landsat和MODIS卫星影像融合处理

作者:CSDN @ _养乐多_

本文将介绍 STARFM(Spatial and Temporal Adaptive Reflectance Fusion Model) 数据融合算法,它用于将Landsat和MODIS卫星影像进行融合处理。代码的框架如下:

  1. 导入所需的卫星影像数据集和研究区域。
  2. 进行初步的MODIS和Landsat影像筛选。
  3. 定义一些辅助函数和变量,包括去除无效像素、计算NDVI指数等。
  4. 对Landsat影像进行处理,包括裁剪、去除无效像素、计算NDVI等。
  5. 对MODIS影像进行处理,包括裁剪、计算NDVI等。
  6. 根据日期对Landsat和MODIS影像进行匹配和融合。
  7. 将融合后的影像数据导出为GeoTIFF文件。
  8. 完成融合处理过程。

整体而言,代码的目标是将Landsat和MODIS影像进行融合,以获得更高分辨率和更频繁更新的影像数据,从而在地表覆盖和变化监测等应用中提供更精确的数据。


文章目录

      • 一、STARFM介绍
          • 1.1 回归分析融合方法
          • 1.2 加权平均融合方法
      • 二、代码详解
          • 2.1 导入研究区
          • 2.2 数据集合筛选和预处理
          • 2.3 生成NDVI数据集合
          • 2.4 数据融合核心函数
          • 2.5 数据预处理
          • 2.5 回归分析
          • 2.6 提取与给定MODIS日期相关的Landsat日期信息
          • 2.7 执行回归模型
          • 2.8 数据后处理
          • 2.9 结果下载
      • 三、代码链接


一、STARFM介绍

STARFM(Spatial and Temporal Adaptive Reflectance Fusion Model)是一种空间和时间自适应反射率融合模型,用于将不同分辨率和时间间隔的遥感影像进行融合。该算法可以将低分辨率高频率(例如MODIS)和高分辨率低频率(例如Landsat)的影像进行融合,以生成高分辨率高频率的影像数据。

STARFM算法的基本思想是通过在时间和空间上匹配和融合来自不同传感器的影像,以获得具有高时空分辨率的连续影像序列。该算法主要包括以下步骤:

  1. 影像选择和预处理:选择要融合的低分辨率高频率影像(例如MODIS)和高分辨率低频率影像(例如Landsat)。对影像进行预处理,包括辐射校正、大气校正和影像配准等。

  2. 空间和时间匹配:通过空间和时间匹配,将MODIS和Landsat影像对应的像素进行配对。一种常用的方法是利用高分辨率影像的边界框(bounds)将低分辨率影像进行裁剪,以获取与高分辨率影像相同区域的低分辨率影像。

  3. 像素级别融合:对于每对匹配的像素,根据其在MODIS和Landsat影像中的特征进行融合。常用的融合方法包括加权平均、回归分析等。权重的计算可以基于像素的空间关系、时间差异以及像素值的差异等因素。

  4. 融合影像生成:通过对所有匹配像素进行融合,生成高分辨率高频率的连续影像序列。可以根据需要选择不同的时间窗口来控制融合的时间尺度。

STARFM算法的优势在于能够利用低分辨率高频率影像和高分辨率低频率影像的优势,提供更详细和更频繁更新的地表信息。它在农业监测、土地覆盖变化分析、水资源管理等领域具有广泛的应用。然而,算法也存在一些限制,如对影像配准要求较高,需要考虑不同传感器之间的差异以及时间和空间尺度的一致性等。

1.1 回归分析融合方法

回归分析融合方法是一种常用的遥感影像融合方法,用于将不同分辨率的遥感影像融合成具有高空间分辨率和高光谱分辨率的影像。该方法基于回归模型,通过建立模型来描述不同分辨率影像之间的关系,从而进行影像融合。以下是回归分析融合方法的详细介绍:

  1. 影像选择和预处理:选择要融合的低分辨率影像和高分辨率影像,并进行预处理,包括辐射校正、大气校正和影像配准等。

  2. 特征提取:对低分辨率影像和高分辨率影像进行特征提取,例如从高分辨率影像中提取的光谱信息和从低分辨率影像中提取的统计信息等。

  3. 建立回归模型:通过回归分析方法建立低分辨率影像和高分辨率影像之间的回归模型。常见的回归模型包括线性回归、多项式回归、岭回归等。模型的选择根据实际应用和数据特征来确定。

  4. 模型拟合:使用已有的训练样本数据,对回归模型进行拟合,估计模型的参数。训练样本数据包括低分辨率影像和高分辨率影像对应的像素值。

  5. 影像融合:利用已建立的回归模型和估计的参数,对整个低分辨率影像进行预测,得到对应的高分辨率影像像素值。预测过程可以采用回归模型的参数估计值和低分辨率影像的特征作为输入,通过模型计算得到高分辨率影像的像素值。

  6. 融合影像生成:根据预测的高分辨率影像像素值,生成融合后的影像。融合后的影像具有高空间分辨率和高光谱分辨率,能够提供更详细和准确的地表信息。

回归分析融合方法利用了低分辨率影像和高分辨率影像之间的关系,通过建立回归模型来实现影像融合。该方法可以根据实际应用的需要和数据的特点进行灵活调整,适用于多种遥感数据融合的场景,如光学影像融合、雷达与光学影像融合等。它能够提高影像的空间分辨率和光谱分辨率,提供更全面、准确的地表信息,为遥感应用和地表监测提供支持。

1.2 加权平均融合方法

加权平均融合方法是STARFM算法中常用的一种像素级别融合方法。该方法通过对匹配的像素在MODIS和Landsat影像中的特征进行加权平均,实现两个影像的融合。以下是加权平均融合方法的详细介绍:

  1. 影像选择和预处理:选择要融合的MODIS和Landsat影像,并进行预处理,包括辐射校正、大气校正和影像配准等。

  2. 空间和时间匹配:通过空间和时间匹配,将MODIS和Landsat影像对应的像素进行配对,确保两个影像在相同的空间区域和时间点上有匹配的像素。

  3. 特征提取:对于每对匹配的像素,从MODIS和Landsat影像中提取用于融合的特征。常见的特征包括NDVI(归一化植被指数)、反射率等。这些特征可以反映地表的植被覆盖、土壤湿度等信息。

  4. 加权计算:为了进行加权平均,需要为MODIS和Landsat影像中的每个特征确定权重。权重的计算可以基于像素的空间关系、时间差异以及像素值的差异等因素。常见的权重计算方法包括基于距离的权重、基于差异的权重等。

  5. 加权平均融合:根据计算得到的权重,对每个特征进行加权平均融合。对于每个像素,将MODIS和Landsat影像中相应特征的像素值按权重进行加权平均,得到融合后的像素值。

  6. 融合影像生成:通过对所有匹配像素进行加权平均融合,生成高分辨率高频率的连续影像序列。融合后的影像具有较高的空间分辨率和较高的频率更新,能够提供更详细和更准确的地表信息。

加权平均融合方法在STARFM算法中广泛应用,它可以根据不同特征的重要性和不同影像间的差异性,通过权重的调整来实现影像的融合。这种方法能够充分利用MODIS和Landsat影像的优势,提供更全面、准确的地表信息,适用于许多遥感应用领域。

二、代码详解

2.1 导入研究区
// 代码适用于:
// 合并Landsat 5、7和8的NDVI与MODIS Terra每日影像
// MODIS Terra和Sentinel-2
// Landsat预级和Modis每日Terra - 与基本R代码一起使用
// Landsat 8和Sentinel-2var l8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_SR"),modis = ee.ImageCollection("MODIS/006/MOD09GQ"),geometry4 = /* color: #d63000 */ee.Geometry.Polygon([[[-116.004638671875, 42.809506838324204],[-115.59539794921875, 42.78129125156276],[-115.499267578125, 43.004647127794435],[-115.499267578125, 43.28920196020127],[-116.00189208984375, 43.35114690203121],[-116.19415283203125, 43.07691312608711]]]),geometry = /* color: #98ff00 */ee.Geometry.Polygon([[[-115.93391418457031, 43.09346209534859],[-115.80276489257812, 43.095718426590174],[-115.80276489257812, 43.161366298103566],[-115.9332275390625, 43.16086543618915]]]);//***************************************变量***************************************//
// 导入Landsat 8和MODIS Terra每日地表反射率250m
var region = geometry; // 要导出的区域
var bounds = geometry4 // 图像的外部边界,用于捕捉边界效应,比区域范围大
var date_begin = '2016-03-02' // 数据收集的开始日期,必须是Landsat影像的日期
var date_end ='2016-10-13' // 数据收集的结束日期,必须是最后一个Landsat影像的后一天var csv_title = '2016_Dates_BOP' // csv输出的标题
var ls_title = '2016_landsat' // Landsat tif文件的标题
var mod_title = '2016_mod' // MODIS tif文件的标题//***************************************变量***************************************//
// 导入Landsat 8和MODIS Terra每日地表反射率250m
var region = geometry; // 要导出的区域
var bounds = geometry4 // 图像的外部边界,用于捕捉边界效应,比区域范围大
var date_begin = '2016-03-02' // 数据收集的开始日期,必须是Landsat影像的日期
var date_end ='2016-10-13' // 数据收集的结束日期,必须是最后一个Landsat影像的后一天var csv_title = '2016_Dates_BOP' // csv输出的标题
var ls_title = '2016_landsat' // Landsat tif文件的标题
var mod_title = '2016_mod' // MODIS tif文件的标题
2.2 数据集合筛选和预处理
// 对 MODIS 和 Landsat 进行初步筛选
var filt_mod = modis.filterDate(date_begin, date_end);
var filt_l8 = l8.filterDate(date_begin, date_end)
.filterBounds(bounds);// 添加边界以获取子集区域
var subset_bounds = bounds.transform('EPSG:4326', 30).bounds().getInfo();// 消除错误像素,但保留元数据日期信息
var removeBadObservations = function(image){
var valid_data_mask = ee.Image(image).select('pixel_qa').bitwiseAnd(2).neq(0);
var numberBandsHaveData =
image.mask().reduce(ee.Reducer.sum());
var allOrNoBandsHaveData =
numberBandsHaveData.eq(0).or(numberBandsHaveData.gte(9));
var allBandsHaveData = allOrNoBandsHaveData;// 确保没有任何波段值接近零
var allBandsGT = image.reduce(ee.Reducer.min()).gt(-0.001);
var result = ee.Image(image).mask(image.mask().and(valid_data_mask).and(allBandsHaveData).and(allBandsGT));
return result.copyProperties(ee.Image(image),['system:time_start']);
};
2.3 生成NDVI数据集合
// Landsat 和 MODIS 的 NDVI 函数
var getNDVI_mod = function(image){
return image
.addBands(image.normalizedDifference(['sur_refl_b02','sur_refl_b01']).multiply(10000).rename('NDVI'));};var getNDVI_l8= function(image){
var ndvi = ee.Image(image).normalizedDifference(['B5','B4']);
return ndvi.copyProperties(ee.Image(image),['system:time_start']);
};
2.4 数据融合核心函数
var filt2_l8= filt_l8.filterBounds(subset_bounds).aside(print).map(removeBadObservations).map(getNDVI_l8);// 更新不同区域的掩膜
var subset_mask = ee.Image().byte().paint(geometry4, "id").add(1);var filtered_modis = filt_mod.filterBounds(subset_bounds).aside(print).map(getNDVI_mod);

在代码中,数据融合的过程发生在以下几行:

  • varfilt2_l8=filt_l8.filterBounds(subset_bounds).aside(print).map(removeBadObservations).map(getNDVI_l8);:这一行首先对Landsat 8影像进行预处理和提取NDVI指数,其中包括去除无效像素和修正数据质量,然后通过筛选指定区域(subset_bounds)来限定融合范围。

  • varfiltered_modis=filt_mod.filterBounds(subset_bounds).aside(print).map(getNDVI_mod);:这一行对MODIS影像进行处理,提取NDVI指数,并同样通过筛选指定区域(subset_bounds)来限定融合范围。

  • var ls_collection = dates_modis.map(reduceLandsatNDVI);:这一行使用回归分析方法将Landsat 8影像和MODIS影像进行融合,通过建立回归模型并对每个MODIS日期进行处理来获得融合后的影像。

在以上代码中,首先对Landsat 8和MODIS影像分别进行预处理和特征提取,然后利用回归分析方法建立模型,并对MODIS影像进行预测和插值,得到与Landsat 8影像具有相似特征的融合影像。通过这种方式,实现了不同分辨率影像的融合,提高了影像的空间和光谱分辨率。

2.5 数据预处理
// 提取日期:
var extract_modis_date = function(row) {
var d = ee.Date(row.get('system:time_start'));
var d2 = ee.Date.fromYMD(d.get('year'), d.get('month'), d.get('day'));
var result = ee.Feature(null, {'date': d2});
result = result.set({'date': d2});
return result;
};var getQABits = function(image, start, end, newName) {
 计算需要提取的位。
var pattern = 0;
for (var i = start; i <= end; i++) {
pattern += Math.pow(2, i);
}
 返回提取的 QA 位的单波段影像,并为该波段命名。
return image.select([0], [newName])
.bitwiseAnd(pattern)
.rightShift(start); };print(filtered_modis);filtered_modis = filtered_modis.map(function(image){
var quality = getQABits(image.select(2), 4, 5, 'QAMask');
quality = quality.eq(3).not();
return image.clip(subset_bounds).mask(image.mask().multiply(subset_mask).multiply(quality));
});filtered_modis = filtered_modis.select('NDVI'); // 仅保留 NDVI 波段var modis_multiband = ee.Image(filtered_modis.filterDate(date_begin, date_end).iterate( function(x, modis_multiband) {
return ee.Image(modis_multiband).addBands(ee.Image(x));
}, filtered_modis.first()));var dates_modis = filtered_modis.map(extract_modis_date);
print(dates_modis.getInfo());var filt2_l8_ndvi = filt2_l8.map(function(image) {
return ee.Image(image)
.clip(subset_bounds)
.mask(ee.Image(image).mask().multiply(subset_mask));
});// 使用此函数选择天数范围,并检查是否有重叠
var day_expand = 1;

这段代码主要是对MODIS数据进行处理的一系列操作,下面是对每部分代码的详细解释:

  1. var extract_modis_date = function(row) { ... }:定义了一个名为extract_modis_date的函数,用于从MODIS影像中提取日期信息。在函数中,首先将系统时间转换为ee.Date对象,然后提取年、月、日信息,并创建一个ee.Feature对象存储日期信息。

  2. var getQABits = function(image, start, end, newName) { ... }:定义了一个名为getQABits的函数,用于提取MODIS影像中指定位范围的QA位信息。在函数中,通过计算位模式,提取指定位范围内的QA位,并返回单波段影像。

  3. filtered_modis = filtered_modis.map(function(image){ ... }):对filtered_modis进行映射操作,对每张影像进行处理。在处理过程中,首先通过getQABits函数获取质量控制位的掩码,并根据掩码进行筛选和裁剪,最后仅保留NDVI波段。

  4. var modis_multiband = ee.Image(filtered_modis.filterDate(date_begin, date_end).iterate( function(x, modis_multiband) { ... }, filtered_modis.first()));:通过迭代操作,将经过处理的MODIS影像合并为多波段影像。根据给定的日期范围,从filtered_modis中筛选影像,并逐渐将每张影像的波段添加到modis_multiband中。

  5. var dates_modis = filtered_modis.map(extract_modis_date);:对经过处理的MODIS影像集合filtered_modis进行映射操作,调用extract_modis_date函数,从每张影像中提取日期信息,得到日期集合dates_modis。

  6. var filt2_l8_ndvi = filt2_l8.map(function(image) { ... }):对Landsat 8影像集合filt2_l8进行映射操作,裁剪和掩码处理,得到经过处理的NDVI影像集合filt2_l8_ndvi。

  7. var day_expand = 1;:指定一个天数范围的扩展值,用于后续处理。

通过以上步骤,该段代码完成了对MODIS数据的处理,包括质量控制位的提取、影像筛选和裁剪、波段合并以及日期信息的提取。最终得到经过处理的MODIS影像集合filtered_modis和日期集合dates_modis,以及经过裁剪和掩码处理的Landsat 8 NDVI影像集合filt2_l8_ndvi。

2.5 回归分析
var reduceLandsatNDVI = function(MODISdate) {
MODISdate = ee.Date(MODISdate.get('date'));var ndvi_subset = ee.ImageCollection(filt2_l8_ndvi).filterDate( MODISdate,
MODISdate.advance(day_expand, 'day') );ndvi_subset = ndvi_subset.map(function (image) {
var diff = MODISdate.difference(ee.Date(ee.Image(image).get('system:time_start')), 'day').abs();
return ee.Image(image).set('diff', diff);
});ndvi_subset = ndvi_subset.sort('diff');
var ndvi_first = ndvi_subset.reduce('first');
var ndvi_mean = ndvi_subset.reduce('mean');return ee.Algorithms.If(
ndvi_first.bandNames(),
ndvi_first.eq(0).multiply(ndvi_mean).add(ndvi_first),
ee.Image(0)
);
};

这段代码定义了一个名为reduceLandsatNDVI的函数,该函数用于执行回归分析融合方法。下面是对这段代码的详细解释:

  1. MODISdate = ee.Date(MODISdate.get('date'));:将传入的MODISdate参数转换为ee.Date对象,以便进行日期处理。

  2. var ndvi_subset = ee.ImageCollection(filt2_l8_ndvi).filterDate(MODISdate, MODISdate.advance(day_expand, 'day'));:从经过预处理的Landsat 8影像集合filt2_l8_ndvi中,筛选出与给定MODIS日期相匹配的影像集合。这里通过filterDate方法指定日期范围,包括从MODISdate到MODISdate后延伸day_expand天的影像。

  3. ndvi_subset = ndvi_subset.map(function (image) { ... });:对影像集合中的每张影像进行映射处理。在这个函数中,首先计算了每张影像与给定MODIS日期的时间差(以天为单位),并将该时间差作为新的影像属性(‘diff’)存储在影像中。

  4. ndvi_subset = ndvi_subset.sort('diff');:按照时间差属性对影像集合进行排序,将影像按照与给定MODIS日期的接近程度进行排序。

  5. var ndvi_first = ndvi_subset.reduce('first');:从排序后的影像集合中选择第一张影像,即与给定MODIS日期最接近的影像。

  6. var ndvi_mean = ndvi_subset.reduce('mean');:对排序后的影像集合进行求平均操作,得到平均影像。

  7. return ee.Algorithms.If(ndvi_first.bandNames(), ndvi_first.eq(0).multiply(ndvi_mean).add(ndvi_first), ee.Image(0));:根据条件进行判断,如果第一张影像存在波段(即不为空),则执行以下操作:将第一张影像中值为0的像素点替换为平均影像对应位置的像素值,然后将两张影像相加;否则返回一个全零影像。最终返回融合后的影像结果。

通过上述步骤,该函数实现了回归分析融合方法中的关键步骤,即选择与给定MODIS日期最接近的影像作为基准影像,并与平均影像进行加权相加,从而得到融合后的影像结果。

2.6 提取与给定MODIS日期相关的Landsat日期信息
var extract_landsat_date = function(MODISdate) {
MODISdate = ee.Date(MODISdate.get('date'));var ndvi_subset =
ee.ImageCollection(filt2_l8_ndvi).filterDate( MODISdate,
MODISdate.advance(day_expand, 'day') );ndvi_subset = ndvi_subset.map(function (image) {
var diff = MODISdate.difference(ee.Date(ee.Image(image).get('system:time_start')), 'day').abs();
return ee.Image(image).set('diff', diff);
});ndvi_subset = ndvi_subset.sort('diff');
var d = ndvi_subset.aggregate_first('system:time_start');
var count = ndvi_subset.aggregate_count('system:time_start');d = ee.Algorithms.If(
ee.Number(count).gt(0),
ee.Date(d),
ee.Date('1971-01-01')
);
d = ee.Date(d);var d2 = ee.Date.fromYMD(d.get('year'), d.get('month'),
d.get('day'));var result = ee.Feature(null, {'LSdate': d2, 'MODISdate':
MODISdate, 'CountLSScenes': count});
result = result.set({'LSdate': d2, 'MODISdate': MODISdate,
'CountLSScenes': count});
return result;
};var dates_landsat = dates_modis.map(extract_landsat_date);Export.table(dates_landsat, csv_title);

这段代码定义了一个名为extract_landsat_date的函数,该函数用于提取与给定MODIS日期相关的Landsat日期信息。下面是对这段代码的详细解释:

  1. MODISdate = ee.Date(MODISdate.get('date'));:将传入的MODISdate参数转换为ee.Date对象,以便进行日期处理。

  2. var ndvi_subset = ee.ImageCollection(filt2_l8_ndvi).filterDate(MODISdate, MODISdate.advance(day_expand, 'day'));:从经过预处理的Landsat 8影像集合filt2_l8_ndvi中,筛选出与给定MODIS日期相匹配的影像集合。这里通过filterDate方法指定日期范围,包括从MODISdate到MODISdate后延伸day_expand天的影像。

  3. ndvi_subset = ndvi_subset.map(function (image) { ... });:对影像集合中的每张影像进行映射处理。在这个函数中,首先计算了每张影像与给定MODIS日期的时间差(以天为单位),并将该时间差作为新的影像属性(‘diff’)存储在影像中。

  4. ndvi_subset = ndvi_subset.sort('diff');:按照时间差属性对影像集合进行排序,将影像按照与给定MODIS日期的接近程度进行排序。

  5. var d = ndvi_subset.aggregate_first('system:time_start');:从排序后的影像集合中提取第一张影像的时间信息,即最接近给定MODIS日期的Landsat日期。

  6. var count = ndvi_subset.aggregate_count('system:time_start');:统计影像集合中的影像数量,即与给定MODIS日期相匹配的Landsat影像数量。

  7. d = ee.Algorithms.If(ee.Number(count).gt(0), ee.Date(d), ee.Date('1971-01-01'));:根据条件进行判断,如果影像数量大于0,则将时间信息d保留为其原始值;否则,将时间信息d设置为一个默认值’1971-01-01’。

  8. d = ee.Date(d);:将时间信息d转换为ee.Date对象,以便进行日期处理。

  9. var d2 = ee.Date.fromYMD(d.get('year'), d.get('month'), d.get('day'));:根据时间信息d的年、月、日提取年月日信息,并将其转换为ee.Date对象。

  10. var result = ee.Feature(null, {'LSdate': d2, 'MODISdate': MODISdate, 'CountLSScenes': count});:创建一个空的ee.Feature对象,并在属性中存储Landsat日期(‘LSdate’)、MODIS日期(‘MODISdate’)和Landsat影像数量(‘CountLSScenes’)。

  11. result = result.set({'LSdate': d2, 'MODISdate': MODISdate, 'CountLSScenes': count});:设置result对象的属性,将Landsat日期、MODIS日期和Landsat影像数量存储到属性中。

  12. return result;:返回存储着Landsat日期、MODIS日期和Landsat影像数量的ee.Feature对象。

  13. var dates_landsat = dates_modis.map(extract_landsat_date);:对MODIS日期集合dates_modis进行映射操作,调用extract_landsat_date函数,从每个MODIS日期中提取对应的Landsat日期信息,得到Landsat日期集合dates_landsat。

  14. Export.table(dates_landsat, csv_title);:将Landsat日期集合dates_landsat导出为CSV文件,文件名由变量csv_title指定。

通过上述步骤,该函数实现了从与给定MODIS日期相匹配的Landsat影像集合中提取Landsat日期信息的过程,并将结果存储在一个ee.Feature对象中返回。

2.7 执行回归模型
var ls_collection = dates_modis.map(reduceLandsatNDVI);
print(ls_collection,'ls collection');

var ls_collection = dates_modis.map(reduceLandsatNDVI);:这一行使用回归分析方法将Landsat 8影像和MODIS影像进行融合,通过建立回归模型并对每个MODIS日期进行处理来获得融合后的影像。

2.8 数据后处理
var ls_multiband = ls_collection.iterate( function(x,
ls_multiband)
{ return ee.Image(ls_multiband).addBands(ee.Image(x));
}, ls_collection.first());ls_multiband = ee.Image(ls_multiband).multiply(10000).int16();
ls_multiband = ls_multiband.mask(ls_multiband.mask().multiply(ls_multiband.neq(0)));// 移除重复的第一层
var ls_multiband2=ee.Image(ls_multiband.slice(1))
var modis_multiband2=ee.Image(modis_multiband.slice(1))
print(ls_multiband2)
print(modis_multiband2)

这段代码主要是对Landsat数据进行处理的一系列操作,下面是对每部分代码的详细解释:

  1. var ls_multiband = ls_collection.iterate( function(x, ls_multiband) { return ee.Image(ls_multiband).addBands(ee.Image(x)); }, ls_collection.first());:通过迭代操作,将Landsat影像集合ls_collection中的每张影像的波段逐渐添加到ls_multiband中,得到多波段影像。

  2. ls_multiband = ee.Image(ls_multiband).multiply(10000).int16();:将ls_multiband中的像素值乘以10000,并转换为16位整型数据。这通常是为了将浮点型数据转换为整型,以节省存储空间。

  3. ls_multiband = ls_multiband.mask(ls_multiband.mask().multiply(ls_multiband.neq(0)));:对ls_multiband进行掩码处理,将非零像素的掩码值保留,而零值像素的掩码设置为0。这通常是为了排除无效或无数据的像素。

  4. var ls_multiband2=ee.Image(ls_multiband.slice(1)):移除ls_multiband中的第一个波段,得到新的多波段影像ls_multiband2。这样做可能是因为在后续的处理中不需要使用第一个波段。

  5. var modis_multiband2=ee.Image(modis_multiband.slice(1)):移除modis_multiband中的第一个波段,得到新的多波段影像modis_multiband2。这样做可能是因为在后续的处理中不需要使用第一个波段。

  6. print(ls_multiband2)和print(modis_multiband2):打印输出ls_multiband2和modis_multiband2的信息,以便查看其内容和属性。

2.9 结果下载
Export.image.toDrive({image: modis_multiband2,description: mod_title,crs:'EPSG:4326 ',region:region,scale:30
});Export.image.toDrive({image: ls_multiband2, description: ls_title, crs:'EPSG:4326',region:region,scale:30
});

三、代码链接

https://code.earthengine.google.com/3e0d72e445f6cb8b4cfcf4965bb800d8?noload=true


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部