使用gee对Landsat-8多幅影像进行批量地形校正代码
时间: 2024-05-14 22:16:23 浏览: 238
以下是使用Google Earth Engine (GEE) 对Landsat-8多幅影像进行批量地形校正的代码示例:
```javascript
// Load Landsat 8 surface reflectance data.
var collection = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
.filterDate('2019-01-01', '2019-12-31')
.filterBounds(geometry)
.select(['B4', 'B3', 'B2', 'B5', 'B6', 'B7']);
// Function to apply terrain correction to a single image.
var applyTerrainCorrection = function(image) {
// Load elevation data.
var elevation = ee.Image('USGS/SRTMGL1_003');
// Compute terrain correction parameters.
var tc = ee.Terrain.hillShadow(elevation, image.metadata('sunAzimuth'), image.metadata('sunElevation'));
// Apply terrain correction to the image.
var corrected = image.addBands(tc.select(['hillshade']));
return corrected;
};
// Apply terrain correction to the image collection.
var correctedCollection = collection.map(applyTerrainCorrection);
// Export the corrected images to Google Drive.
Export.image.toDrive({
image: correctedCollection,
description: 'Landsat8_terrain_corrected',
folder: 'GEE_exports',
scale: 30,
region: geometry
});
```
在上述代码中,我们首先加载了Landsat 8表面反射率数据,并使用`filterDate()`和`filterBounds()`函数对数据进行筛选。然后,我们定义了一个名为`applyTerrainCorrection`的函数,该函数接受一个影像作为输入,并返回已进行地形校正的影像。在函数中,我们加载了SRTM高程数据,并使用`ee.Terrain.hillShadow()`函数计算了地形校正参数。最后,我们将地形校正应用到了影像中,并使用`addBands()`函数将地形校正参数作为新波段添加到了影像中。
接下来,我们使用`map()`函数将`applyTerrainCorrection`函数应用到整个影像集合中,并将结果存储在名为`correctedCollection`的变量中。最后,我们使用`Export.image.toDrive()`函数将地形校正后的影像导出到Google Drive中。
需要注意的是,上述代码中的`geometry`变量需要根据实际情况进行设置,以指定影像的空间范围。此外,如果需要,还可以调整`scale`参数以控制导出影像的空间分辨率。
阅读全文