1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Google Earth Engine(GEE)——导出影像集合数据

Google Earth Engine(GEE)——导出影像集合数据

时间:2021-10-22 09:28:05

相关推荐

Google Earth Engine(GEE)——导出影像集合数据

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("-01-01", "-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网盘}});

结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。