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_RTLandsat 8, Collection 1, Tier 1 + Real Time
陆地卫星/LC08/C01/T1Landsat 8, Collection 1, Tier 1 only
陆地卫星/LC08/C01/T2Landsat 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_TOALandsat 8, Collection 1, Tier 1 + Real Time, TOA
陆地卫星/LC08/C01/T1_TOALandsat 8, Collection 1, Tier 1 only, TOA
陆地卫星/LC08/C02/T1_L2Landsat 8, Collection 2, Tier 1 only, SR and LST
陆地卫星/LC08/C01/T2_TOALandsat 8, Collection 1, Tier 2 only, TOA
陆地卫星/LC08/C01/T2_SRLandsat 8, Collection 1, Tier 2 only, SR

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

ID描述
LT04Landsat 4,专题地图(TM)
LT05Landsat 5,专题地图(TM)
LE07Landsat 7,增强型专题制图器 Plus (ETM+)
LC08Landsat 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, percentilecloudScoreRangemaxDepthasFloat)

从原始 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来更改此行为,以获得未缩放、未移位的浮点输出。 

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

  • 8
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Google Earth Engine (GEE) 中计算Landsat影像的土层厚度是一个复杂的过程,需要结合多个数据源和模型来进行估算。以下是一种基于遥感和地下水模型的方法,用于估算土层厚度: 1. 数据准备:首先,你需要获取Landsat影像数据和其他地理数据,如高程数据、土壤类型数据等。你可以使用GEE提供的`ee.ImageCollection`来加载Landsat影像数据集,并使用`ee.Image`加载其他地理数据。 2. 高程数据处理:使用高程数据来估算土层厚度。你可以计算地表到地下水位之间的距离,并将其作为土层厚度的近似值。你可以使用高程数据计算距离的方法,如计算每个像元到地下水位的垂直距离。 3. 土壤类型数据处理:土壤类型对土层厚度有很大影响。你可以使用土壤类型数据来估算不同土壤类型下的土层厚度。这可以通过建立土壤类型与土层厚度之间的关系模型来实现。你可以使用机器学习方法,如回归分析或随机森林等,来建立这种关系。 4. 模型训练和预测:使用已知的土层厚度数据和相应的遥感数据作为训练集,训练土层厚度模型。然后,使用这个模型对未知土层厚度的区域进行预测。你可以使用机器学习算法,如决策树回归或随机森林回归等。 请注意,这只是一种基于遥感和地下水模型的方法,用于估算土层厚度。实际上,土层厚度的估算是一个复杂的问题,通常需要结合大量的地面测量数据和地下水模型来进行精确估算。因此,在实际应用中,建议结合实地观测数据和专业知识来进行土层厚度的准确估算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此星光明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值