利用GEE和站点坐标处理MODIS的LAI数据
最近要用到LAI数据,结合各位前辈的分享和向GPT请教,突击了一晚上。因为我最终要得到的是站点的数据,并且想直接得到.csv格式,省掉用Arcgis处理tiff文件。最终的代码如下:
我尝试了MOD15A2H和MCD15A3H,两个数据集,一个8天,一个4天尺度,结果差别不是很大,可以根据实际需求选择。
// 设置站点的经纬度坐标
var siteCoordinates = ee.Geometry.Point([276.6529, 41.6285]); // 请用实际的经纬度替换 lon 和 lat
// 根据站点坐标创建一个缓冲区
var siteBuffer = siteCoordinates.buffer(500); // 缓冲区半径为 500 米,可以根据实际情况调整
// 以站点为中心加载 MODIS 数据集
var dataset = ee.ImageCollection("MODIS/061/MOD15A2H")
.filterBounds(siteBuffer)
.filterDate('2011-01-01', '2013-12-31')
.select('Lai_500m');
// 在地图上显示站点和 MODIS 数据
Map.centerObject(siteBuffer, 6);
Map.addLayer(siteBuffer, {color: 'red'}, 'Site Buffer');
Map.addLayer(dataset, {bands: ['Lai_500m'], min: 0, max: 100}, 'MODIS LAI');
// 定义一个函数,用于在每个图像上进行采样
var sampleImage = function(image) {
// 使用 reduceRegion 采样
var sampledValue = image.reduceRegion({
reducer: ee.Reducer.mean(), // 这里使用均值作为采样统计量,你可以根据需要选择其他统计量
geometry: siteBuffer,
scale: 500, // 500 米的分辨率,根据数据集调整
});
// 乘以 0.1 来获取真实的 LAI 值
var laiValue = sampledValue.getNumber('Lai_500m').multiply(0.1);
// 为每个样本点添加经纬度信息和真实的 LAI 值
return ee.Feature(siteCoordinates).set('LAI', laiValue);
};
// 对数据集中的每个图像进行采样
var sampledData = dataset.map(sampleImage);
// 打印样本点的 LAI 值,以便检查
print("LAIValues", sampledData);
// 导出样本点数据为 CSV 文件
Export.table.toDrive({
collection: sampledData,
description: "MODIS_LAI_Samples",
folder: "MODIS_Data",
fileFormat: "CSV"
});