Google Earth Engine导出大影像时下载失败的一种解决方法

Google Earth Engine导出大影像时下载失败

  • 最近用gee导出了一些影像到drive云盘中,虽然不是很大,只有两百M左右,但是使用backup and sync同步软件来下载的时候却一直失败,不停的重试。
  • 同步软件不支持断点续传,一旦因为某原因中断,又要从头开始,感到十分的无奈
  • 经过多次教训,发现下载50M以内的小文件是没有问题的,因此考虑导出数据的时候使用分块来解决,最后下载这些小块再拼接起来。

分块下载的方法

  • 使用 Export.image.toDrive(image, description, folder, fileNamePrefix, dimensions, region, scale, crs, crsTransform, maxPixels, shardSize, fileDimensions, skipEmptyTiles, fileFormat, formatOptions)函数的时候,可以设置fileDimensions的大小,即分块的行列数,只输入一个数的话就是正方形的分块,分块的大小必须是shardSize的倍数,shadSize如果不指定的话默认是256,一般将分块大小设置为256的倍数。
  • 例如
Export.image.toDrive({
   
  image: img,
  description: 'test',
  folder:'test',
  scale: 30,
  region:geometry,
  fileDimensions:2560,
  maxPixels:1e13
})
<think>好的,用户想在Google Earth Engine中处理Landsat 7影像,去除条带效应并计算地表温度。首先,我需要回忆一下Landsat 7的条带问题。Landsat 7的ETM+传感器在2003年发生了故障,导致之后的影像出现了条带缺失,称为SLC-off数据。所以用户提到的条带效应可能是指这些数据缺失的条带,或者是其他类型的噪声?需要先明确这一点。 接下来,去除条带效应的方法。在GEE中处理Landsat 7的条带通常有两种方法一种是使用GEE内置的修复函数,比如`focal_mean`或者`gapFill`方法;另一种是使用影像合成来减少条带的影响,比如间序列的均值或中值合成。我需要查阅GEE的文档,确认具体有哪些可用的函数。例如,记得有一个`gapFill`函数,可以填补缺失的像元,但可能需要指定参数。 然后是地表温度的计算。Landsat 7的LST计算通常需要辐射定标和气校正。步骤致包括:获取影像的辐射亮度,计算地表比辐射率,然后应用单窗算法或其他算法来反演温度。具体公式可能涉及到热红外波段的辐射值、气透过率、地表比辐射率等参数。用户可能需要详细的步骤,比如如何从DN值转换到辐射亮度,再如何计算温度。 另外,用户可能没有提到气校正,是否需要考虑?比如是否需要使用气校正模型,或者GEE中是否有现成的数据集已经处理过这些步骤。例如,Landsat 7的Surface Reflectance产品是否可用,或者用户是否需要从原始数据开始处理。 需要将整个流程分解成步骤:数据筛选、条带修复、辐射定标、LST计算。每个步骤的具体代码实现,比如如何筛选Landsat 7的影像集,应用修复函数,进行辐射转换,最后应用温度算法。 可能还需要考虑区域和间范围的筛选,用户可能希望指定特定的区域和日期。此外,导出结果或可视化结果的方法,是否需要添加到地图中显示,或者导出为Asset、Drive等。 在回答,要确保代码示例的正确性,比如正确的波段名称,函数参数。例如,Landsat 7的TOA辐射产品是`LANDSAT/LE07/C02/T1_RT`,而地表反射率产品是`LANDSAT/LE07/C02/T1_L2`。后者可能已经进行了一些校正,但可能仍需处理条带问题。 关于条带修复,GEE的`gapFill`函数可能适用于填补缺失的像元,但需要验证。例如,使用邻近像元的均值或中值来填补。此外,合成多个影像的中值或均值可以减少条带的影响,特别是如果用户不介意间分辨率的话。 在LST计算部分,单窗算法需要气透过率、地表比辐射率等参数。这些参数的估计可能需要额外的步骤,比如使用气水汽含量数据,或者假设默认值。例如,地表比辐射率可以通过植被覆盖度来计算,而气透过率可能根据气模型估算。 最后,用户可能需要验证结果,比如与实地测量数据或其他数据集对比,但可能超出了当前问题的范围。确保提供的代码示例能够直接运行,并注释关键步骤,帮助用户理解每个部分的作用。 总结步骤: 1. 数据筛选:选择Landsat 7影像间、区域、云量过滤。 2. 条带修复:应用`gapFill`或`focal_mean`处理缺失像元。 3. 辐射定标:转换为辐射亮度或反射率。 4. 计算LST:使用单窗算法或其他方法。 5. 可视化或导出结果。 需要检查每个步骤的代码正确性,例如,`gapFill`是否适用于Landsat 7的SLC-off数据,或者是否需要其他方法。可能还需要注意不同集合的处理方式,比如T1_RT和T1_L2的区别。</think>### Google Earth Engine处理Landsat 7条带效应与地表温度计算 #### 1. 数据准备与条带修复 Landsat 7因SLC(扫描行校正器)故障导致影像出现条带缺失,可通过以下步骤修复: - **数据筛选**:选择间范围和区域,使用`cloudCover`过滤云量 ```javascript var collection = ee.ImageCollection('LANDSAT/LE07/C02/T1_RT') .filterDate('2020-01-01', '2020-12-31') .filterBounds(geometry) .filter(ee.Filter.lt('CLOUD_COVER', 10)); ``` - **条带修复**:使用`focal_mean`或`gapFill`填补缺失值 ```javascript var filled = collection.map(function(img) { return img.focal_mean({ radius: 3, kernelType: 'circle', units: 'pixels' }).copyProperties(img, ['system:time_start']); }); ``` #### 2. 地表温度计算流程 地表温度反演采用单窗算法,需完成以下步骤: **步骤1:辐射定标** $$ L_{\lambda} = (DN \times 0.05518) + 1.2378 $$ ```javascript var radiance = filled.map(function(img) { var thermal = img.select('B6_VCID_1').multiply(0.05518).add(1.2378); return img.addBands(thermal.rename('B6_radiance')); }); ``` **步骤2:亮度温度转换** $$ T_B = \frac{K_2}{\ln(\frac{K_1}{L_{\lambda}} + 1)} $$ ```javascript var kelvin = radiance.map(function(img) { var k1 = 666.09; var k2 = 1282.71; var bt = img.expression( 'k2 / log(k1/(L) + 1)', { 'k1': k1, 'k2': k2, 'L': img.select('B6_radiance') }).rename('B6_bt'); return img.addBands(bt); }); ``` **步骤3:地表比辐射率计算** 基于NDVI估算比辐射率$\varepsilon$: $$ \varepsilon = 0.004 \times P_v + 0.986 $$ ```javascript var emissivity = kelvin.map(function(img) { var ndvi = img.normalizedDifference(['B4', 'B3']).rename('NDVI'); var pv = ndvi.expression( '((ndvi - ndvi_min) / (ndvi_max - ndvi_min)) ** 2', {'ndvi': ndvi, 'ndvi_min': 0.2, 'ndvi_max': 0.5} ); return img.addBands(pv.multiply(0.004).add(0.986).rename('emissivity')); }); ``` **步骤4:单窗算法计算LST** $$ LST = \frac{T_B}{1 + (\lambda \cdot T_B / \rho) \cdot \ln \varepsilon} $$ ```javascript var lst = emissivity.map(function(img) { var bt = img.select('B6_bt'); var emis = img.select('emissivity'); return img.addBands(bt.divide( bt.multiply(1.438e-2).divide(1.0).multiply(emis.log()) ).rename('LST')); }); ``` #### 3. 结果验证与输出 - **可视化**:使用伪彩色显示温度分布 ```javascript Map.addLayer(lst.first().select('LST'), {min: 290, max: 320, palette: ['blue', 'yellow', 'red']}, 'LST'); ``` - **精度验证**:建议与MODIS地表温度产品交叉验证[^1]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

独孤尚亮dugushangliang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值