GEE按ID遍历MultiPolygon并批量导出TIFF的实现方法
GEE批量裁剪GEDI影像并按RTENO导出方案
核心思路
GEE采用服务器端并行处理,用.map()替代传统循环,高效处理批量要素。以下是完整的JavaScript实现代码,适配你的需求:
代码实现
// 1. 加载数据 // 加载你的多边形要素集(替换为你的资产ID) var bbsRoutes = ee.FeatureCollection('projects/your-project/assets/BBS_Routes'); // 加载GEDI02_B月度影像集,可按需筛选时间/波段 var gediMonthly = ee.ImageCollection('LARSE/GEDI/GEDI02_B_002_MONTHLY') .filterDate('2020-01-01', '2020-12-31') // 示例时间范围,按需调整 .select(['rh95', 'agbd']); // 选择需要的波段,按需调整 // 2. 定义批量处理函数 var processRoute = function(route) { // 获取当前要素的RTENO ID var rteno = route.get('RTENO'); // 获取要素边界作为裁剪区域 var region = route.geometry(); // 裁剪影像集:对每幅影像裁剪到当前要素范围 var clippedCollection = gediMonthly.map(function(image) { return image.clip(region).set('RTENO', rteno); }); // 合并裁剪后的影像为单幅(若需按时间合成,可替换为mean()/median()等) var clippedImage = clippedCollection.mosaic(); // 或用合成方法,如clippedCollection.mean() // 设置导出参数 Export.image.toDrive({ image: clippedImage, description: 'GEDI_' + rteno.getInfo(), // 文件名前缀+RTENO folder: 'GEDI_BBS_Output', // 谷歌云盘目标文件夹,需提前创建 region: region, scale: 25, // GEDI影像分辨率,按需调整 crs: 'EPSG:4326', maxPixels: 1e13 // 避免像素数超限 }); return route; // 保持要素集结构,不影响后续处理 }; // 3. 触发批量处理 bbsRoutes.map(processRoute);
关键说明
- 为什么用
.map():GEE的.map()在服务器端并行执行,比客户端for循环效率高得多,尤其适合250个要素的批量任务。 - 影像合成选择:如果需要月度合成结果,可将
mosaic()替换为mean()(均值合成)、median()(中值合成)等,根据你的分析需求调整。 - 参数调整:务必替换代码中的资产ID、时间范围、波段列表、云盘文件夹名为实际值;
scale需匹配GEDI影像的原生分辨率(GEDI02_B月度产品分辨率为25m)。 - 任务提交:代码运行后,GEE控制台的"Tasks"面板会生成250个导出任务,点击"Run"批量启动(或选中所有任务后批量运行)。
注意事项
- 确保
BBS_Routes要素集中的RTENO字段为字符串或数值类型,且无重复值。 - 若导出任务过多导致报错,可分批次处理(比如用
.limit(50)先处理50个,再处理下一批)。
内容的提问来源于stack exchange,提问作者colinpsweeney
相关产品推荐
相关产品推荐

