GEE开发之Modis_NDVI的数据分析
前言
主要介绍MODIS中NDVI的逐日数据和逐月数据的获取。
1 基础知识介绍
MODIS:中分辨率成像光谱仪(Moderate-resolution Imaging Spectroradiometer,缩写MODIS)是美国宇航局研制大型空间遥感仪器,以了解全球气候的变化情况以及人类活动对气候的影响。
NDVI:归一化植被指数,归一化植被指数是反映农作物长势和营养信息的重要参数之一。植被指数(NDVI)是检测植被生长状态、植被覆盖度和消除部分辐射误差等。NDVI能反映出植物冠层的背景影响,如土壤、潮湿地面、雪、枯叶、粗糙度等,且与植被覆盖有关。多种卫星遥感数据反演植被指数(NDVI)产品是地理国情监测云平台推出的生态环境类系列数据产品之一。它被称为现有国家海洋和大气管理局高分辨率辐射计 (NOAA-AVHRR) 衍生的 NDVI 的连续性指数。
EVI:增强型植被指数 (EVI),可最大限度地减少冠层背景变化并保持对茂密植被条件的敏感性。EVI 还使用蓝色波段去除由烟雾和亚像素薄云造成的残留大气污染。
2 MYD13Q1的数据获取(分辨率:250m)
MYD13Q1 V6 产品以每个像素为基础提供植被指数 (VI) 值。有两个主要植被层。NDVI和EVI。
2.1 遥感影像获取
代码如下(以南京市为例):
//以南京为例子
var geometry = ee.FeatureCollection('users/www1573979951/nanjingshi');
Map.centerObject(geometry,6);
//选取影像集以及波段 NDVI
var ndvi = ee.ImageCollection("MODIS/006/MYD13Q1").filterDate('2020-01-01', '2020-12-31').select("NDVI");
print(ndvi)// 查看一年有多少多少影像
//换算单位
var multiply = function(image){
var img = image.multiply(0.0001);
return img.set('system:time_start',image.get('system:time_start'));
};
ndvi = ndvi.map(multiply);
//设置调色板并展示影像
var colorizedVis = {min: 0.0, max: 1.0, palette: ['FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901', '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01', '012E01', '011D01', '011301']};
Map.addLayer(ndvi.median().clip(geometry), colorizedVis, 'NDVI');
影像数据截图(23个数据集):
遥感图像截图:
2.2 遥感数据获取
2.2.1 代码一如下(以南京市为例):
//以南京为例子
var geometry = ee.FeatureCollection('users/www1573979951/nanjingshi');
//选取影像集以及波段 NDVI
var ndvi = ee.ImageCollection("MODIS/006/MYD13Q1").filterDate('2020-01-01', '2020-12-31').select("NDVI");
//换算单位
var multiply = function(image){
var img = image.multiply(0.0001);
return img.set('system:time_start',image.get('system:time_start'));
};
ndvi = ndvi.map(multiply);
print(ndvi)
print(ui.Chart.image.series(ndvi, geometry, ee.Reducer.mean(), 1000));//打印成表格
表格截图:
CSV数据截图:
2.2.2 代码二如下(以南京市为例):
//以南京为例子
var geometry = ee.FeatureCollection('users/www1573979951/nanjingshi');
//选取影像集以及波段 NDVI
var ndvi = ee.ImageCollection("MODIS/006/MYD13Q1").filterDate('2020-01-01', '2020-12-31').select("NDVI");
//换算单位
var multiply = function(image){
var img = image.multiply(0.0001);
return img.set('system:time_start',image.get('system:time_start'));
};
ndvi = ndvi.map(multiply);
//重新计算数据
var createNDVI = function(img){
var date = img.get('system:time_start');
var value = img.reduceRegion(ee.Reducer.mean(), geometry);
return ee.Feature(null, {'system:time_start': date,'date': ee.Date(date).format('Y/M/d'), 'value': value});
};
ndvi = ndvi.map(createNDVI);
print(ndvi);
运行截图:
3 MOD09GA_006_NDVI的数据获取(分辨率:500m)
MOD09GA_006_NDVI:获取一年中的每一天的NDVI数值。
3.1 遥感影像获取
代码如下(以南京市为例):
//以南京为例子
var geometry = ee.FeatureCollection('users/www1573979951/nanjingshi');
Map.centerObject(geometry,6);
var dailyNDVI = ee.ImageCollection("MODIS/MOD09GA_006_NDVI").filterDate('2020-01-01', '2020-12-31').select('NDVI');
//设置调色板并展示影像
var colorizedVis = {min: 0.0, max: 1.0, palette: ['FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901', '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01', '012E01', '011D01', '011301']};
Map.addLayer(dailyNDVI.median().clip(geometry), colorizedVis, 'NDVI');
print(dailyNDVI);
遥感图像截图:
影像数据截图(365个数据集):
3.2 逐日遥感数据获取
3.2.1 代码一如下(以南京市为例):
//以南京为例子
var geometry = ee.FeatureCollection('users/www1573979951/nanjingshi');
var dailyNDVI = ee.ImageCollection("MODIS/MOD09GA_006_NDVI").filterDate('2020-01-01', '2020-12-31').select('NDVI');
print(dailyNDVI);//打印影集数据
print(ui.Chart.image.series(dailyNDVI, geometry, ee.Reducer.mean(), 1000));//打印成表格
打印图集截图:总共有365个数据,ndvi的值都在bands里面,没有直接体现出来,需要重新运算
打印表格截图(同时可以下载CSV、SVG和PNG数据):
PNG数据:
CSV数据:
3.2.2 代码二如下(以南京市为例):
var geometry = ee.FeatureCollection('users/www1573979951/nanjingshi');
var dailyNDVI = ee.ImageCollection("MODIS/MOD09GA_006_NDVI").filterDate('2020-01-01', '2020-12-31').select('NDVI');
var createNDVI = function(img){
var date = img.get('system:time_start');
var value = img.reduceRegion(ee.Reducer.mean(), geometry);
return ee.Feature(null, {'system:time_start': date,'date': ee.Date(date).format('Y/M/d'), 'value': value});
};
dailyNDVI = dailyNDVI.map(createNDVI);
print(dailyNDVI);
运行截图:
注意:这样的做法是为了防止第一种代码无法在线生成表格所采取的方案。这种实现可以方便我们获取JSON数据,然后通过其他方式,最终拿到每天的NDVI值。
3.3 逐月遥感数据获取
代码如下(以南京市为例)
var geometry = ee.FeatureCollection('users/www1573979951/nanjingshi');
var dailyNDVI = ee.ImageCollection("MODIS/MOD09GA_006_NDVI").filterDate('2020-01-01', '2020-12-31').select('NDVI');
//时间范围
var years = ee.List.sequence(2020, 2020);
var months = ee.List.sequence(1, 12);
//将逐日数据生成月平均数据
var monthlymeanNDVI = ee.ImageCollection.fromImages(
years.map(function (y) {
return months.map(function(m) {
return dailyNDVI.filter(ee.Filter.calendarRange(y,y, 'year')).filter(ee.Filter.calendarRange(m, m, 'month')).mean().set('year', y).set('month', m).set('system:time_start', ee.Date.fromYMD(y, m, 1));
});
}).flatten());
print(ui.Chart.image.series(monthlymeanNDVI, geometry, ee.Reducer.mean(), 1000));
运行截图:
CSV数据展示:
总结
主要介绍了如何获取遥感图像、后去逐日的数据以及如何把每天的数据平均成每个月的数据。