当前位置:   article > 正文

Google Earth Engine(GEE)计算长时序的月VCI和TCI_计算植被状况指数与温度状况指数

计算植被状况指数与温度状况指数

今天来简单分享在上一篇文章的基础上计算植被状况指数(VCI)和温度条件指数(TCI)

目标:

利用MODIS为数据源,在GEE计算某一地区对月VCI和TCI,并制作统计图

以武汉市为研究区

Kogan等提出的植被状态指数(vegetation condition index,VCI)。与NDVI一样,VCI也可以通过NOAA卫星的AVHRR传感器获取,VCI对干旱敏感可以消除地理位置、生态系统对NDVI的影响,成为了大规模遥感干旱监测的理想数据,它的可靠性得到了大量数据的证明。它是在ndvi的基础上计算得出的。

同样而言,TCI也是在LST的基础上计算得出的,

具体的定义的可以查阅相关的论文

GEE实现代码:

首先确定研究区和使用的数据集

  1. var roi = ee.FeatureCollection("users/lilei655123/WUhan");
  2. Map.centerObject(roi,7)
  3. var styling = {color:"red",fillColor:"00000000"};
  4. Map.addLayer(roi.style(styling),{},"geometry")
  5. //添加MODIS植被指数16天全球250米
  6. var Coll_NDVI = ee.ImageCollection("MODIS/006/MOD13Q1")
  7. //MODIS/006/MOD13A1
  8. var Coll_LST = ee.ImageCollection("MODIS/006/MOD11A2")
  9. //MODIS/006/MOD11A1

确定起止时间和月份

  1. var startYear = 2010;
  2. var endYear = 2020;
  3. var startDate = ee.Date.fromYMD(startYear, 1, 1);
  4. var endDate = ee.Date.fromYMD(endYear, 12, 31);

合成NDVI和LST

  1. Coll_NDVI = Coll_NDVI.filterDate(startDate, endDate).select("NDVI");
  2. Coll_NDVI = ee.ImageCollection(ee.Algorithms.If(Coll_NDVI.size().eq(0),
  3. ee.ImageCollection(ee.Image(0).selfMask().rename('NDVI')),
  4. Coll_NDVI
  5. ));
  6. Coll_LST = Coll_LST.filterDate(startDate, endDate).select("LST_Day_1km");
  7. Coll_LST = ee.ImageCollection(ee.Algorithms.If(Coll_LST.size().eq(0),
  8. ee.ImageCollection(ee.Image(0).selfMask().rename('LST_Day_1km')),
  9. Coll_LST
  10. ));
  11. // MOD12Q1数据的NDVI比例为0.0001 [ 最小值=-2000,最大值=10000]
  12. var Coll_NDVI = Coll_NDVI.map(function(img) {
  13. return img
  14. .divide(10000).float().set("system:time_start", img.get("system:time_start")); // keep time info
  15. });
  16. var Coll_LST = Coll_LST.map(function(img) {
  17. return img
  18. .multiply(0.02).subtract(273.15).float().set("system:time_start", img.get("system:time_start")); // keep time info
  19. });
  20. print(Coll_NDVI);
  21. print(Coll_LST);

合成VCI和TCI

  1. var VCI2 = monthlyNDVI.map(function(image) {
  2. var img = image.select('NDVI').clip(roi);
  3. return image.addBands(image.expression(
  4. "100*(NDVI-min)/(max-min)",{
  5. "NDVI" : img,
  6. "max" : ee.Image(MonthlyMAX.filter(ee.Filter.eq('month', image.get('month'))).first()),
  7. "min" : ee.Image(MonthlyMIN.filter(ee.Filter.eq('month', image.get('month'))).first()),
  8. })
  9. .rename('VCI')).copyProperties(img,['system:time_start','system:time_end']);
  10. });
  11. //print(VCI2)
  12. Map.addLayer(VCI2)
  13. Map.centerObject(roi)
  14. var clipped_VCI = VCI2.mean().clip(roi).select('VCI');
  15. var VCI_Vis = {
  16. min: 0.0,
  17. max: 100.0,
  18. palette: [
  19. 'red', 'yellow', 'green'],
  20. };
  21. Map.addLayer(clipped_VCI, VCI_Vis, 'VCI');
  22. //计算TCI: 温度条件指数(TCI)
  23. // 温度条件指数(TCI)
  24. var TCI2 = monthlyLST.map(function(image) {
  25. var img = image.select('LST_Day_1km').clip(roi);
  26. return image.addBands(image.expression(
  27. "100*(LST_Day_1km-min)/(max-min)",{
  28. "LST_Day_1km" : img,
  29. "max" : ee.Image(Monthly_LST_MAX.filter(ee.Filter.eq('month', image.get('month'))).first()),
  30. "min" : ee.Image(Monthly_LST_MIN.filter(ee.Filter.eq('month', image.get('month'))).first()),
  31. })
  32. .rename('TCI')).copyProperties(img,['system:time_start','system:time_end']);
  33. });
  34. //print(TCI2)
  35. //Map.addLayer(TCI2)
  36. var clipped_TCI = TCI2.mean().clip(roi).select('TCI');
  37. var TCI_Vis = {
  38. min: 0,
  39. max: 100,
  40. palette: [
  41. 'green', 'yellow', 'red'],
  42. };
  43. Map.addLayer(clipped_TCI, TCI_Vis, 'TCI');

创建统计图

  1. var VCITimeSeries = ui.Chart.image.seriesByRegion(
  2. VCI2, roi, ee.Reducer.mean(), 'VCI', 500, 'system:time_start', 'label')
  3. .setChartType('ScatterChart')
  4. .setOptions({trendlines: {0: {color: 'red'}},lineWidth: 1,pointSize: 3,
  5. title: 'MODIS VCI Time Series',
  6. vAxis: {title: 'VCI'},
  7. series: {
  8. 0: {color: 'red'},
  9. }});
  10. print(VCITimeSeries);
  11. print(ui.Chart.image.series(VCI2 , roi , ee.Reducer.mean(), 500));
  12. var TCITimeSeries = ui.Chart.image.seriesByRegion(
  13. TCI2, roi, ee.Reducer.mean(), 'TCI', 500, 'system:time_start', 'label')
  14. .setChartType('ScatterChart')
  15. .setOptions({trendlines: {0: {color: 'red'}},lineWidth: 1,pointSize: 3,
  16. title: 'MODIS TCI Time Series',
  17. vAxis: {title: 'TCI'},
  18. series: {
  19. 0: {color: 'red'},
  20. }});
  21. print(TCITimeSeries);
  22. print(ui.Chart.image.series(TCI2 , roi , ee.Reducer.mean(), 500));

运行结果如下:

315ea60fa6e4a4b3df0582940cd3dbee.png

VCI

2a6c5062d8d421a307c0d1dfeff9b260.png

TCI

3f71f94f48827044f111715f6428400d.png

73afcce4137ef7623b00f8fde3c4e118.png

完整代码请在公众号后台回复“0804合成月VCI和TCI”

感谢关注,欢迎转发!

声明:仅供学习使用!

希望关注的朋友们转发,如果对你有帮助的话记得给小编点个赞或者在看

## ****更多内容请关注微信公众号“生态遥感监测笔记”**

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

闽ICP备14008679号