Google Earth Engine(GEE)——导出影像集合数据
作者:小教学发布时间:2023-09-29分类:程序开发学习浏览:70
导读:GEE中的影像数据可以通过Export导出至GoogleDrive、GoogleAssets或GoogleCloudStorage中,但是在平台中只支持导出单张的影像数据,...
GEE中的影像数据可以通过Export导出至Google Drive、Google Assets或Google Cloud Storage中,但是在平台中只支持导出单张的影像数据,如果要导出影像集合,只能使用循环遍历的方法来解决。
通过查询GEE的API,我们可以找到在集合中有一个异步操作方法——evaluate,这个方法比较特殊的是在它的回调方法中,GEE的对象会被转化为普通的JavaScript对象,这样就可以使用循环遍历导出想要的影像集合数据。
首先,我们可以先定义一个下载函数:
function exportImage(image, roi, fileName) {
Export.image.toDrive({
image: image,
description: "Drive-image-"+fileName,
fileNamePrefix: fileName, //文件命名
folder: "Landsat 8", //保存的文件夹
scale: 30, //分辨率
region: roi, //研究区
maxPixels: 1e13, //最大像元素
crs: "EPSG:4326" //设置投影
});
}
然后,通过生成列表的方式,调用批量下载函数,完成影像集合数据的导出:
//生成列表,迭代下载
//调用影像集合的reduceColumns()方法,结合ee.Reducer.toList(),就可以根据指定的属性生成一个列表
//在回调方法中,index这个参数就变成了一个普通的JavaScript对象
//接下来就可以利用for循环来获取每一景的影像,同时调用exportImage()函数,导出影像
var indexList = data_selected.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 = data_selected.filter(ee.Filter.eq("system:index", indexs[i]))
.first()
.toInt16()
.clip (roi);
exportImage(image, roi, indexs[i]);
}
});
示例代码
//研究区
var roi = ee.FeatureCollection("users/sihaixiang/shandong").geometry(); //("users/....")自己填入研究shp文件路径
Map.centerObject(roi, 7);
Map.addLayer(roi, {color:"black"}, "roi");
//批量下载函数
function exportImage(image, roi, fileName) {
Export.image.toDrive({
image: image,
description: "Drive-image-"+fileName,
fileNamePrefix: fileName+'_EVI', //文件命名
folder: "MODIS_EVI", //保存的文件夹
scale: 250, //分辨率
region: roi, //研究区
maxPixels: 1e13, //最大像元素
crs: "EPSG:4326" //设置投影
});
}
//加载数据集
//MODIS13Q1产品下的EVI产品,16天/幅,分辨率为250米
var data = ee.ImageCollection("MODIS/006/MOD13Q1");
//筛选数据
var data_selected = data.filterBounds(roi)
.filterDate("2022-01-01", "2022-06-30")
.select("EVI")
print("data_selected", data_selected);
//生成列表,迭代下载
var indexList = data_selected.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 = data_selected.filter(ee.Filter.eq("system:index", indexs[i]))
.first()
.toInt16() //设置数据类型
.clip (roi); //裁剪数据
exportImage(image, roi, indexs[i]); //保存图像至Google网盘
}
});
结果
- 程序开发学习排行
-
- 1鸿蒙HarmonyOS:Web组件网页白屏检测
- 2HTTPS协议是安全传输,为啥还要再加密?
- 3HarmonyOS鸿蒙应用开发——数据持久化Preferences
- 4记解决MaterialButton背景颜色与设置值不同
- 5鸿蒙HarmonyOS实战-ArkUI组件(RelativeContainer)
- 6鸿蒙HarmonyOS实战-ArkUI组件(Stack)
- 7鸿蒙HarmonyOS实战-ArkUI组件(GridRow/GridCol)
- 8[Android][NDK][Cmake]一文搞懂Android项目中的Cmake
- 9鸿蒙HarmonyOS实战-ArkUI组件(mediaquery)
- 最近发表
-
- WooCommerce最好的WordPress常用插件下载博客插件模块的相关产品
- 羊驼机器人最好的WordPress常用插件下载博客插件模块
- IP信息记录器最好的WordPress常用插件下载博客插件模块
- Linkly for WooCommerce最好的WordPress常用插件下载博客插件模块
- 元素聚合器Forms最好的WordPress常用插件下载博客插件模块
- Promaker Chat 最好的WordPress通用插件下载 博客插件模块
- 自动更新发布日期最好的WordPress常用插件下载博客插件模块
- WordPress官方最好的获取回复WordPress常用插件下载博客插件模块
- Img to rss最好的wordpress常用插件下载博客插件模块
- WPMozo为Elementor最好的WordPress常用插件下载博客插件模块添加精简版