当前位置:   article > 正文

GEE代码实例教程详解:长时间序列NDVI分析_csdn gee ndvi代码

csdn gee ndvi代码

简介

本篇博客将介绍如何使用Google Earth Engine (GEE) 对长时间序列的Landsat数据进行归一化植被指数(NDVI)分析。通过此分析,可以监测和评估1982年至2024年间的植被变化趋势。

背景知识

Landsat数据集

Landsat是美国地质调查局和美国航天局联合发射的一系列卫星,提供地表的长时间序列、中等分辨率的遥感数据。

NDVI

归一化植被指数(NDVI)是一种常用的遥感指数,用于估算植被覆盖度和植被健康状态。

完整代码

// 定义研究区域的坐标点
var cor = [
  [48.62559911358055, 31.65418476680761],
  [48.91124364483055, 31.65418476680761],
  [48.91124364483055, 31.885355756064595],
  [48.62559911358055, 31.885355756064595],
  [48.62559911358055, 31.65418476680761]
];

// 创建多边形区域
var roi = ee.Geometry.Polygon(cor);

// 将地图中心设置为研究区域
Map.centerObject(roi);

// 定义NDVI计算函数
function ndvi_tm_etm(img) {
  var bands = img.multiply(0.0000275).add(-0.2);
  var ndvi = bands.normalizedDifference(['SR_B4', 'SR_B3']).rename('ndvi');
  return ndvi.copyProperties(img, img.propertyNames());
}

// 定义SLC偏移修正函数
function slc_off(img) {
  var bands = img.multiply(0.0000275).add(-0.2);
  var ndvi = bands.normalizedDifference(['SR_B4', 'SR_B3']).rename('ndvi');
  var filter = ndvi.focalMedian(1, 'square', 'pixels', 10);
  var filled = filter.blend(ndvi).rename('ndvi');
  return filled.copyProperties(img, img.propertyNames());
}

// 定义OLI传感器NDVI计算函数
function ndvi_oli(img) {
  var bands = img.multiply(0.0000275).add(-0.2);
  var ndvi = bands.normalizedDifference(['SR_B5', 'SR_B4']).rename('ndvi');
  return ndvi.copyProperties(img, img.propertyNames());
}

// 筛选Landsat 4-9数据集并计算NDVI
var landsat4 = ee.ImageCollection("LANDSAT/LT04/C02/T1_L2")
  .select('SR_B.*')
  .filterDate('1982', '1994')
  // ... 其他筛选条件 ...
  .map(ndvi_tm_etm);

var landsat5 = ee.ImageCollection("LANDSAT/LT05/C02/T1_L2")
  .select('SR_B.*')
  .filterDate('1984', '2013')
  // ... 其他筛选条件 ...
  .map(ndvi_tm_etm);

// ... Landsat 7 SLC正常和偏移后的数据 ...

var landsat8 = ee.ImageCollection("LANDSAT/LC08/C02/T1_L2")
  .select('SR_B.*')
  .filterDate('2013', '2024')
  // ... 其他筛选条件 ...
  .map(ndvi_oli);

var landsat9 = ee.ImageCollection("LANDSAT/LC09/C02/T1_L2")
  .select('SR_B.*')
  .filterDate('2021', '2024')
  // ... 其他筛选条件 ...
  .map(ndvi_oli);

// 合并所有Landsat数据集并排序
var landsat_collections = landsat4.merge(landsat5)
  .merge(landsat7_slcon).merge(landsat7_slcoff).merge(landsat8).merge(landsat9)
  .sort('system:time_start');

// 打印NDVI时间序列图表
print(
  ui.Chart.image.series({
    imageCollection: landsat_collections,
    region: roi,
    reducer: ee.Reducer.mean(),
    scale: 100,
    xProperty: 'system:time_start'
  })
);

// 导出2010年的NDVI图像到Google Drive
Export.image.toDrive({
  image: landsat_collections.filterDate('2010', '2011').toBands().clip(roi).float(),
  description: 'landsat2010',
  scale: 30,
  crs: 'EPSG:4326',
  maxPixels: 1e13,
  region: roi,
  folder: 'test'
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91

代码详解

1. 定义研究区域

创建一个多边形区域roi,用于限定分析的地理范围,并设置地图中心。

2. 定义NDVI计算函数

定义ndvi_tm_etm函数,用于计算Landsat 4-5和7(SLC正常)的NDVI。

3. 定义SLC偏移修正函数

定义slc_off函数,用于处理Landsat 7 SLC偏移后的数据。

4. 定义OLI传感器NDVI计算函数

定义ndvi_oli函数,用于计算Landsat 8-9的NDVI。

5. 筛选和处理Landsat数据集

分别筛选Landsat 4-9的数据集,应用相应的NDVI计算函数,并处理SLC偏移问题。

6. 合并和排序数据集

将所有处理过的Landsat数据集合并,并按时间排序。

7. 可视化NDVI时间序列

使用ui.Chart.image.series打印NDVI时间序列图表。

8. 导出数据

将2010年的NDVI图像导出到Google Drive。

结论

本教程展示了如何使用GEE对长时间序列的Landsat数据进行NDVI分析。通过此分析,可以监测植被覆盖度的变化,为生态研究和环境监测提供支持。

进一步探索

GEE提供了多种工具和方法来进行时间序列分析和环境监测。在后续的教程中,我们将继续探索GEE在不同领域的应用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/936304
推荐阅读
相关标签
  

闽ICP备14008679号