Google Earth Engine(GEE)——Landsat 系列卫星及其算法的介绍(新手必备)!

简介: Google Earth Engine(GEE)——Landsat 系列卫星及其算法的介绍(新手必备)!

Landsat 采集结构

USGS 为每颗卫星生成 3 层(类别)数据:

  • 第 1 层 (T1) - 满足几何和辐射质量要求的数据
  • 第 2 层 (T2) - 不符合第 1 层要求的数据
  • 实时 (RT) - 尚未评估的数据(最多需要一个月)。

有关详细信息,请参阅有关 Collection 1 Tiers 的 USGS 文档https://www.usgs.gov/core-science-systems/nli/landsat/landsat-collection-1?qt-science_support_page_related_con=1#qt-science_support_page_related_con)。

为了同时访问经过验证的 T1 数据和最新的实时数据,我们按层和卫星将场景分组到集合中。Landsat 8 的示例如下:

ID 描述
陆地卫星/LC08/C01/T1_RT Landsat 8, Collection 1, Tier 1 + Real Time
陆地卫星/LC08/C01/T1 Landsat 8, Collection 1, Tier 1 only
陆地卫星/LC08/C01/T2 Landsat 8, Collection 1, Tier 2 only


每天都会将新获取的场景添加到 T1_RT 集合中。一旦 RT 场景被重新处理并归类为 T1 或 T2,它将从 T1_RT 集合中删除,新版本将添加到适当的集合中(数据会实时根据卫星的影像进行不断更新)。如果您的作品对删除或可能错误注册的场景很敏感,您可能希望坚持使用 T1 集合,但一般来说,任何错误注册大到足以在新获取的场景上引起注意的情况是非常罕见的。


上述每个集合都包含原始数据(即,按比例缩放的传感器辐射度)。此外,对于包含 T1 或 T2 图像的每个集合,提供 TOA(大气顶反射)和 SR(表面反射)产品。下表以 Landsat 8 数据为例描述了 TOA 和 SR 集合的集合 ID。

ID 描述
陆地卫星/LC08/C01/T1_RT_TOA Landsat 8, Collection 1, Tier 1 + Real Time, TOA
陆地卫星/LC08/C01/T1_TOA Landsat 8, Collection 1, Tier 1 only, TOA
陆地卫星/LC08/C02/T1_L2 Landsat 8, Collection 2, Tier 1 only, SR and LST
陆地卫星/LC08/C01/T2_TOA Landsat 8, Collection 1, Tier 2 only, TOA
陆地卫星/LC08/C01/T2_SR Landsat 8, Collection 1, Tier 2 only, SR


Landsat 4、5、7 和 8 存在这些数据。将上述集合定义中的“LC08”替换为下表中的 ID,以检索各种卫星的集合。

ID 描述
LT04 Landsat 4,专题地图(TM)
LT05 Landsat 5,专题地图(TM)
LE07 Landsat 7,增强型专题制图器 Plus (ETM+)
LC08 Landsat 8,操作陆地成像仪 (OLI)


Landsat 采集状态

Pre-Collection 1:不再由 USGS 生产,不受地球引擎维护,在地球引擎中仍然可用,但最终将被清除。

集合 1:由 USGS 生产至 2022-01-01,由 Earth Engine 维护至 2023-01-01。

集合 2:由 USGS 生成的主要集合,在处理摄取积压时增加 Earth Engine 中的产品可用性。有关当前可用的产品,请参阅数据目录的 Landsat 页面


Landsat 处理方法

Earth Engine 包含多种 Landsat 特定的处理方法。具体来说,有一些方法可以计算传感器处辐射度、大气顶 (TOA) 反射率、表面反射率 (SR)、云得分和无云复合材料。


传感器处辐射率和 TOA 反射率

Earth Engine 中的“原始”场景包含带有代表缩放辐射的数字 (DN) 的图像。DN 到传感器处辐射度的转换是使用存储在场景元数据中的系数的线性变换(Chander 等人,2009 年)。该ee.Algorithms.Landsat.calibratedRadiance()方法执行此转换。TOA(或传感器处)反射率的转换是一种线性变换,它考虑了太阳高度和季节性变化的地球-太阳距离。TOA 转换由该ee.Algorithms.Landsat.TOA() 方法处理。TOA 方法将热带转换为亮温。见 钱德等人。(2009)(或这个 USGS 网站Landsat 8) 以获取有关计算 TOA 反射率或亮温的更多信息。以下示例显示了 Landsat 8 图像从原始数据到辐射率和 TOA 反射率的转换:

当然这里的函数可以不用过多了解,因为上面提供了各种数据,所以我们直接用就可以:

代码:

// 加载一景影像,然后显示结果
var raw = ee.Image('LANDSAT/LC08/C01/T1/LC08_044034_20140318');
Map.centerObject(raw, 10);
Map.addLayer(raw, {bands: ['B4', 'B3', 'B2'], min: 6000, max: 12000}, 'raw');
// 将原始数据转换为辐射。
var radiance = ee.Algorithms.Landsat.calibratedRadiance(raw);
Map.addLayer(radiance, {bands: ['B4', 'B3', 'B2'], max: 90}, 'radiance');
// 将原始数据转换为大气顶部反射率。
var toa = ee.Algorithms.Landsat.TOA(raw);
Map.addLayer(toa, {bands: ['B4', 'B3', 'B2'], max: 0.2}, 'toa reflectance');


原始数据结果:


辐射数据结果:


反射率数据结果:


地表反射率

Landsat 表面反射率 (SR) 数据可作为 USGS Collection 2, Level 2 存档的副本在 Earth Engine 中使用。请注意,Landsat 4、5 和 7 SR 数据是使用 LEDAPS 算法生成的,而 Landsat 8 SR 数据是使用 LaSRC 算法生成的。 了解这些算法及其与 USGS 的区别。(https://www.usgs.gov/core-science-systems/nli/landsat/landsat-collection-2-surface-reflectance

您可以像这样访问 USGS Collection 2, Level 2 Landsat 8 图像:

//单张影像可以这么访问
var srImage = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20201028');
//整个集合可以这么访问:
var surfaceReflectanceL4 = ee.ImageCollection('LANDSAT/LT04/C02/T1_L2');
var surfaceReflectanceL5 = ee.ImageCollection('LANDSAT/LT05/C02/T1_L2');
var surfaceReflectanceL7 = ee.ImageCollection('LANDSAT/LE07/C02/T1_L2');
var surfaceReflectanceL8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2');


简单的云评分(主要是选择影像进行筛选来指定的)

为了通过相对云度对 Landsat 像素进行评分,Earth Engine 在该ee.Algorithms.Landsat.simpleCloudScore()方法中提供了基本的云评分算法 。(有关实现的详细信息,请参阅 此代码编辑器示例脚本https://code.earthengine.google.com/dc5611259d9ccab952526b3c2d05ce07)。以下示例使用云评分算法来屏蔽 Landsat 8 图像中的云:

函数:

ee.Algorithms.Landsat.simpleCloudScore(image)

使用亮度、温度和 NDSI 的组合计算 [0,100] 范围内的简单云似然分数。这不是一个健壮的云检测器,主要用于比较同一点的多个外观以获取*相对*云可能性。


Computes a simple cloud-likelihood score in the range [0,100] using a combination of brightness, temperature, and NDSI. This is not a robust cloud detector, and is intended mainly to compare multiple looks at the same point for *relative* cloud likelihood.


Arguments:

image (Image):

The Landsat TOA image to process.这里仅对TOA影像有用

Returns: Image

代码:

// 加载一景影像并展示
var cloudy_scene = ee.Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140926');
Map.centerObject(cloudy_scene);
Map.addLayer(cloudy_scene, {bands: ['B4', 'B3', 'B2'], max: 0.4}, 'TOA', false);
// 添加云评分带。它被自动称为“云”。
var scored = ee.Algorithms.Landsat.simpleCloudScore(cloudy_scene);
// 这里就是筛选云量小于20的部分
var mask = scored.select(['cloud']).lte(20);
// 将MASK的结果应用到图像并显示结果。
var masked = cloudy_scene.updateMask(mask);
Map.addLayer(masked, {bands: ['B4', 'B3', 'B2'], max: 0.4}, 'masked');
// 加载 Landsat 8 组合并设置 SENSOR_ID 属性,这里选取第一幅影像
var mosaic = ee.Image(ee.ImageCollection('LANDSAT/LC8_L1T_8DAY_TOA').first())
  .set('SENSOR_ID', 'OLI_TIRS');
//云计算镶嵌并显示结果。
var scored_mosaic = ee.Algorithms.Landsat.simpleCloudScore(mosaic);
Map.addLayer(scored_mosaic, {bands: ['B4', 'B3', 'B2'], max: 0.4},
    'TOA mosaic', false);


去云之后的结果:


没有去云的影像


如果您在代码编辑器中运行此示例,请尝试切换 TOA 图层的可见性以比较掩膜和未掩膜图像之间的差异。观察到输入simpleCloudScore() 是单个 Landsat TOA 场景。另请注意,simpleCloudScore()添加了一个称为‘cloud’输入图像的波段。云带包含从 0(不多云)到 100(最多云)的云分数。前面的示例在云分数上使用任意阈值 (20) 来屏蔽多云像素。要将此算法应用于 Landsat 场景的 Earth Engine 镶嵌,请设置SENSOR_ID 属性:

// 加载 Landsat 8 组合并设置 SENSOR_ID 属性。
var mosaic = ee.Image(ee.ImageCollection('LANDSAT/LC8_L1T_8DAY_TOA').first())
  .set('SENSOR_ID', 'OLI_TIRS');
// 云计算马赛克并显示结果。
var scored_mosaic = ee.Algorithms.Landsat.simpleCloudScore(mosaic);
Map.addLayer(scored_mosaic, {bands: ['B4', 'B3', 'B2'], max: 0.4},
    'TOA mosaic', false);


SENSOR_ID是单个图像的属性。当 Earth Engine 对许多图像进行拼接时,它必须丢弃单个图像元数据,包括 SENSOR_ID属性。为了对镶嵌影像进行云评分,Earth Engine 会查找该属性但无法找到它,从而导致错误。手动设置属性以避免这种情况。Landsat 5、7 和 8 的传感器 ID 分别为“TM”、“ETM+”和“OLI_TIRS”


简单复合——这个函数功能比较常用

为了创建简单的无云 Landsat 复合材料,Earth Engine 提供了该 ee.Algorithms.Landsat.simpleComposite()方法。此方法在每个位置选择场景子集,转换为 TOA 反射率,应用简单的云分数并取最少云像素的中值。此示例使用默认参数创建一个简单的组合,并将其与使用云分数阈值和百分位数的自定义参数的组合进行比较:

ee.Algorithms.Landsat.simpleComposite(collection, percentile, cloudScoreRange, maxDepth, asFloat)

从原始 Landsat 场景集合中计算 Landsat TOA 合成。它应用标准 TOA 校准,然后使用 SimpleLandsatCloudScore 算法为每个像素分配一个云分数。它在每个点选择尽可能低的云分数范围,然后根据接受的像素计算每个波段的百分位值。该算法还使用 LandsatPathRowLimit 算法在超过 maxDepth 输入场景可用的区域中仅选择最少云的场景。


Computes a Landsat TOA composite from a collection of raw Landsat scenes. It applies standard TOA calibration and then assigns a cloud score to each pixel using the SimpleLandsatCloudScore algorithm. It selects the lowest possible range of cloud scores at each point and then computes per-band percentile values from the accepted pixels. This algorithm also uses the LandsatPathRowLimit algorithm to select only the least-cloudy scenes in regions where more than maxDepth input scenes are available.


Arguments:

集合(ImageCollection):
要合成的原始 Landsat ImageCollection。
百分位数(整数,默认值:50):
合成每个波段时要使用的百分位值。
cloudScoreRange(整数,默认值:10):
每个像素接受的云分数范围的大小。
maxDepth(整数,默认值:40):
用于计算每个像素的最大场景数的近似限制。
asFloat(布尔值,默认值:false):
如果为真,则输出波段与 Landsat.TOA 算法的单位相同;如果为 false,TOA 值将通过乘以 255(反射带)或减去 100(热带)并四舍五入到最接近的整数来转换为 uint8。

collection (ImageCollection):

The raw Landsat ImageCollection to composite.

percentile (Integer, default: 50):

The percentile value to use when compositing each band.

cloudScoreRange (Integer, default: 10):

The size of the range of cloud scores to accept per pixel.

maxDepth (Integer, default: 40):

An approximate limit on the maximum number of scenes used to compute each pixel.

asFloat (Boolean, default: false):

If true, output bands are in the same units as the Landsat.TOA algorithm; if false, TOA values are converted to uint8 by multiplying by 255 (reflective bands) or subtracting 100 (thermal bands) and rounding to the nearest integer.


Returns: Image

代码:

//通过时间筛选加载一年的影像
var collection = ee.ImageCollection('LANDSAT/LT05/C01/T1')
    .filterDate('2010-01-01', '2010-12-31');
// 使用默认参数创建无云合成。
var composite = ee.Algorithms.Landsat.simpleComposite(collection);
// 使用云分数阈值和百分位数的自定义参数创建无云复合影像。
var customComposite = ee.Algorithms.Landsat.simpleComposite({
  collection: collection,
  percentile: 75,
  cloudScoreRange: 5
});
// 显示合成。
Map.setCenter(-122.3578, 37.7726, 10);
Map.addLayer(composite, {bands: ['B4', 'B3', 'B2'], max: 128}, 'TOA composite');
Map.addLayer(customComposite, {bands: ['B4', 'B3', 'B2'], max: 128},
    'Custom TOA composite');


加载后的影像:这是默认参数下的影像


调参之后的影像


请注意,简单合成的输入是原始图像的集合。另请注意,默认情况下,反射带输出的反射率缩放为 8 位,热带输出为开尔文负 100,以适应 8 位范围。您可以通过将asFloat参数设置为 true来更改此行为,以获得未缩放、未移位的浮点输出。

万字长文建议:一件三联!



相关文章
|
7月前
|
数据可视化 定位技术 Sentinel
如何用Google Earth Engine快速、大量下载遥感影像数据?
【2月更文挑战第9天】本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,批量下载指定时间范围、空间范围的遥感影像数据(包括Landsat、Sentinel等)的方法~
2673 1
如何用Google Earth Engine快速、大量下载遥感影像数据?
|
7月前
|
编解码 人工智能 算法
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
Google Earth Engine——促进森林温室气体报告的全球时间序列数据集
98 0
|
7月前
|
编解码 算法 定位技术
GEE时序——利用sentinel-2(哨兵-2)数据进行地表物候学分析(时间序列平滑法估算和非平滑算法代码)
GEE时序——利用sentinel-2(哨兵-2)数据进行地表物候学分析(时间序列平滑法估算和非平滑算法代码)
646 3
|
7月前
|
机器学习/深度学习 算法 数据可视化
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
基于Google Earth Engine云平台构建的多源遥感数据森林地上生物量AGB估算模型含生物量模型应用APP
246 0
|
6月前
|
缓存 算法
基于机会网络编码(COPE)的卫星网络路由算法matlab仿真
**摘要:** 该程序实现了一个基于机会网络编码(COPE)的卫星网络路由算法,旨在提升无线网络的传输效率和吞吐量。在MATLAB2022a中测试,结果显示了不同数据流个数下的网络吞吐量。算法通过Dijkstra函数寻找路径,计算编码机会(Nab和Nx),并根据编码机会减少传输次数。当有编码机会时,中间节点执行编码和解码操作,优化传输路径。结果以图表形式展示,显示数据流与吞吐量的关系,并保存为`R0.mat`。COPE算法预测和利用编码机会,适应卫星网络的动态特性,提高数据传输的可靠性和效率。
|
5月前
|
算法
基于PID-bang-bang控制算法的卫星姿态控制matlab仿真
该文主要介绍了一个基于PID-bang-bang控制算法的卫星姿态控制系统。在MATLAB2022a中进行了仿真,生成了控制收敛曲线和姿态调整动画。系统通过PID控制器减少误差,结合Bang-Bang控制实现快速响应。核心程序涉及卫星位置、推力向量的计算及动画绘制。PID控制器利用比例、积分、微分项调整输出,Bang-Bang控制则在误差超出阈值时提供即时修正。两者结合以平衡控制精度和响应速度,适应卫星姿态的精确调节需求。
|
7月前
|
数据处理
Google Earth Engine(GEE)——sentinel-1数据处理过程中出现错误Dictionary does not contain key: bucketMeans
Google Earth Engine(GEE)——sentinel-1数据处理过程中出现错误Dictionary does not contain key: bucketMeans
121 0
|
7月前
|
数据采集 编解码 人工智能
Google Earth Engine(GEE)——全球每日近地表空气温度(2003-2020年)
Google Earth Engine(GEE)——全球每日近地表空气温度(2003-2020年)
241 0
|
7月前
|
人工智能
Google Earth Engine(GEE)——1984-2019年美国所有土地上的大火烧伤严重程度和范围数据集
Google Earth Engine(GEE)——1984-2019年美国所有土地上的大火烧伤严重程度和范围数据集
76 0
|
18天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。