今天帶來的有關蒸散發數據的下載代碼,蒸散發數據在氣象氣候,農業干旱監測等領域應用廣泛,那么在GEE上如何方便快捷獲取蒸散發數據呢?今天跟著小編分享代碼,快來學習吧!!
A.定義研究區域
//定義研究區域
var geometry = ee.FeatureCollection('users/hesuixinya511/ganzhou');
//聚焦研究區域
Map.centerObject(geometry,6);
這里小編以贛州市作為研究區域。
B.影像調用與數據篩選
//加載MODIS蒸發量數據,按照2001-2020年贛州市的研究區域范圍完成數據篩選和裁剪
var collection = ee.ImageCollection('MODIS/006/MOD16A2').filter(ee.Filter.date('2001-01-01', '2023-12-31')).filterBounds(geometry).select('ET');//選擇PET(潛在蒸發量)波段數據
小編選擇的是MODIS的數據產品,為MOD16A2,該數據產品提供ET、PET等近20年的數據,以下顯示的是該數據的波段信息,我們挑了ET即總的蒸散發作為例子:
C.年度蒸發量數據合成
//合成年總蒸發量數據
var years = ee.List.sequence(2001, 2023);
var collectYear = ee.ImageCollection(years.map(function(y) {var start = ee.Date.fromYMD(y, 1, 1);var end = start.advance(12, 'month');return collection.filterDate(start, end).reduce(ee.Reducer.sum()).float().set('system:time_start',y).set('year',y);
}));
print(collectYear);
D.影像批量裁剪
//利用贛州市的行政邊界裁剪蒸散發數據
var clip_Collection=collectYear.map(function(img){return img.clip(geometry);
});
print(clip_Collection);
E.影像的可視化
var palettes = require('users/gena/packages:palettes');
var evapotranspirationVis = {min: 0,max: 300,palette: palettes.colorbrewer.RdYlBu[11]
};
Map.addLayer(clip_Collection.median(), evapotranspirationVis, 'Evapotranspiration');
F.年度時間序列展示
//時間序列展示
var Yearly_Chart = ui.Chart = ui.Chart.image.series({imageCollection:clip_Collection.select("ET_sum"),region:geometry,reducer:ee.Reducer.mean(),scale:500,xProperty:"year",
}).setOptions({interpolateNulls:true,lineWidth:2,pontSize:3,title:"PET Yearly Series",vAxis:{title:"PET"},hAxis:{title:"Date"},trendlines:{0:{title:"PET_trend",type:"linear",showR2:true,color:"red",visibleInLegend:true}}
});
print(Yearly_Chart);
G.影像批量下載
//定義下載影像函數
function exportImage(image, region, fileName) { Export.image.toDrive({ image: image, description: "Drive-"+fileName,//影像名稱 fileNamePrefix: fileName, folder: "GanzhouET", //文件夾名稱 scale: 500, region: region, maxPixels: 1e13, crs: "EPSG:4326" });
}
//生成時間序列按照循環迭代下載數據集的每一張影像
var indexList = clip_Collection.reduceColumns(ee.Reducer.toList(), ["system:index"]).get("list");
print("indexList", indexList);
indexList.evaluate(function(indexs) { for (var i=0; i<indexs.length; i++) { var image = clip_Collection.filter(ee.Filter.eq("system:index", indexs[i])).first(); exportImage(image, geometry, "20"+indexs[i+1]); }
});
H.導出為CSV格式
//導出為CSV格式
var table = ee.FeatureCollection(clip_Collection.map(function(image){var date = image.get("year");return ee.Feature(null,{"date":date,"value":image.reduceRegion(ee.Reducer.mean(),geometry,500).get("ET_sum")});
}));
Export.table.toDrive({collection:table,description:"Yearly_series",folder:"ET",fileNamePrefix:"ET_Year",fileFormat:"CSV"
});
I.本篇案例完整代碼
//定義研究區域
var geometry = ee.FeatureCollection('users/hesuixinya511/ganzhou');
//聚焦研究區域
Map.centerObject(geometry,6);
//加載MODIS蒸發量數據,按照2001-2020年贛州市的研究區域范圍完成數據篩選和裁剪
var collection = ee.ImageCollection('MODIS/006/MOD16A2').filter(ee.Filter.date('2001-01-01', '2023-12-31')).filterBounds(geometry).select('ET');//選擇PET(潛在蒸發量)波段數據
//合成年總蒸發量數據
var years = ee.List.sequence(2001, 2023);
var collectYear = ee.ImageCollection(years.map(function(y) {var start = ee.Date.fromYMD(y, 1, 1);var end = start.advance(12, 'month');return collection.filterDate(start, end).reduce(ee.Reducer.sum()).float().set('system:time_start',y).set('year',y);
}));
print(collectYear);
//利用贛州市的行政邊界裁剪蒸散發數據
var clip_Collection=collectYear.map(function(img){return img.clip(geometry);
});
print(clip_Collection);
var palettes = require('users/gena/packages:palettes');
var evapotranspirationVis = {min: 0,max: 300,palette: palettes.colorbrewer.RdYlBu[11]
};
Map.addLayer(clip_Collection.median(), evapotranspirationVis, 'Evapotranspiration');
//時間序列展示
var Yearly_Chart = ui.Chart = ui.Chart.image.series({imageCollection:clip_Collection.select("ET_sum"),region:geometry,reducer:ee.Reducer.mean(),scale:500,xProperty:"year",
}).setOptions({interpolateNulls:true,lineWidth:2,pontSize:3,title:"PET Yearly Series",vAxis:{title:"PET"},hAxis:{title:"Date"},trendlines:{0:{title:"PET_trend",type:"linear",showR2:true,color:"red",visibleInLegend:true}}
});
print(Yearly_Chart);
//定義下載影像函數
function exportImage(image, region, fileName) { Export.image.toDrive({ image: image, description: "Drive-"+fileName,//影像名稱 fileNamePrefix: fileName, folder: "GanzhouET", //文件夾名稱 scale: 500, region: region, maxPixels: 1e13, crs: "EPSG:4326" });
}
//生成時間序列按照循環迭代下載數據集的每一張影像
var indexList = clip_Collection.reduceColumns(ee.Reducer.toList(), ["system:index"]).get("list");
print("indexList", indexList);
indexList.evaluate(function(indexs) { for (var i=0; i<indexs.length; i++) { var image = clip_Collection.filter(ee.Filter.eq("system:index", indexs[i])).first(); exportImage(image, geometry, "20"+indexs[i+1]); }
});
//導出為CSV格式
var table = ee.FeatureCollection(clip_Collection.map(function(image){var date = image.get("year");return ee.Feature(null,{"date":date,"value":image.reduceRegion(ee.Reducer.mean(),geometry,500).get("ET_sum")});
}));
Export.table.toDrive({collection:table,description:"Yearly_series",folder:"ET",fileNamePrefix:"ET_Year",fileFormat:"CSV"
});
關于GEE下載蒸散發數據的代碼到這里就結束了,如果對你有幫助,不要忘記了給小編點贊哦!
代碼鏈接:https://code.earthengine.google.com/c1c7de2ae0a8a4992f4fe1051b71ec98
謝謝大家!!下期再見!!