Google Earth Engine(区域统计)
在通过GEE计算遥感的地表参量以后,我们就需要对计算出来的数据进行统计。GEE上面画图的功能并不是很齐全,得到的效果也不尽如人意。因此我们就需要将GEE对区域的统计量进行导出,导入到本地以后,再进行绘图。
本期的的主要内容就是利用GEE对区域内的地表参量(如植被覆盖度、叶面积指数、蒸散量,本次以NDVI为例)进行统计(如平均值、面积等)。最后把统计的值导出到本地。
landsat-8实例分享
数据:Landsat-8
研究区域:北京
统计量:全北京的NDVI平均值
我们本次是统计了北京一年里面的4次NDVI的平均值,1-3,3-6,6-9,9-12月份全北京的Landsat-8的4次的NDVI平均值。这样子我们就可以看出全北京在一年中4个季度的NDVI变化值。同理,我们也可以做逐年的变化趋势,稍微改一下间隔和日期就可以。 代码:
var table = ee.FeatureCollection("users/boyxiaozheng/feature/beijing");
//定义计算NDVI的函数
function cal_ndvi(image){
var mask=ee.Algorithms.Landsat.simpleCloudScore(image).select(['cloud']).lte();
var ndvi=image.normalizedDifference(['B5', 'B4']).updateMask(mask);
return ndvi;
}
//设置开始时间
var start_time=ee.Date('2014-01-01')
//初始化列表,存储统计的值
var data_list=[]
for (var index = ;index< ; index++){
var temp_image= ee.ImageCollection("LANDSAT/LC08/C01/T1_RT")
.filterBounds(table.geometry())
.filter(ee.Filter.lt('CLOUD_COVER',))
//根据循环的index依次筛选四个季度的Landsat-8数据
.filterDate(ee.Date(start_time).advance(index*,'month'),ee.Date(start_time).advance((index+)*,'month'))
.map(cal_ndvi)
.mean();
//对每个季度的影像进行求平均
var meanDictionary = temp_image.reduceRegion({
//可以设置成max、min或count(像元个数)
reducer: ee.Reducer.mean(),
geometry: table.geometry(),
scale: ,
maxPixels: 1e9
});
//把统计量存成Feature,并记录开始时间和结束时间
var temp_feature=ee.Feature(null,meanDictionary);
temp_feature = temp_feature.set('satr_time', ee.Date(start_time).advance(index*,'month'));
temp_feature = temp_feature.set('end_time', ee.Date(start_time).advance((index+)*,'month'));
data_list.push(temp_feature)
}
//把存储Feature的列表转成FeatureCollection
var featureCollection = ee.FeatureCollection(data_list);
//把数据存到谷歌云盘上面
Export.table.toDrive({
collection: featureCollection,
description: 'exportTableExample',
fileFormat: 'CSV'
});
导出结果:
导出的csv文件就记录了北京2017年4个季度的NDVI平均值。
本次我们讲了如何运用GEE对影像进行统计和数据导出。下一期,我们将会讲到,如何利用影像和其他气象数据进行运算。