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来更改此行为,以获得未缩放、未移位的浮点输出。
万字长文建议:一件三联!