导出 Google 地球引擎图像集合中的所有图像(Google 地球引擎 API)



我需要为我的论文下载一堆Landsat图像。我的问题看起来很简单,但我对 JavaScript 一无所知,文档也没有提供足够的帮助。我已根据我的地区和时间段过滤了集合,我想将所有图像分别导出到云端硬盘。集合示例:

var surfaceReflectanceL5 = ee.ImageCollection('LANDSAT/LT5_SR');
var dateSR5=surfaceReflectanceL5.filterDate('1984-01-01', '1985-01-01');
var prSR5=dateSR5.filter(ee.Filter.eq('wrs_path', 182))
                     .filter(ee.Filter.eq('wrs_row', 35)); 

导出单个图像的代码为:

Export.image.toDrive({
  image: image1 //example, var image1='Landsat/....'
  description: 'L51984_1',
  scale: 30,
});

如何循环访问集合以导出所有图像?map(( 函数的使用似乎是答案。

prSR5.map(Export.image.toDrive({
  image: image,
  description: 'L51984',
  scale: 30,
}));

问题是如何将图像参数设置为正确的图像(即首先是第一个图像,然后是第二个图像等,类似于'thisImage()'(和描述以匹配图像(即 'L51984_1''L51984_2'...

提前非常感谢!!

我创建了一个函数来执行类似的操作。它在我创建的一堆gee工具中可用:https://github.com/fitoprincipe/geetools-code-editor

这是代码:

/* 
 * Author: Rodrigo E. Principe
 * License: Apache 2.0
PURPOSE:
This function Exports all images from one Collection
PARAMETERS:
col = collection that contains the images (ImageCollection) (not optional)
folder = the folder where images will go (str) (not optional)
scale = the pixel's scale (int) (optional) (defaults to 1000) (for Landsat use 30)
type = data type of the exported image (str) (option: "float", "byte", "int", "double") (optional) (defaults to "float")
nimg = number of images of the collection (can be greater than the actual number) (int) (optional) (defaults to 500)
maxPixels = max number of pixels to include in the image (int) (optional) (defults to 1e10)
region = the region where images are on (Geometry.LinearRing or Geometry.Polygon) (optional) (defaults to the image footprint)
Be careful with the region parameter. If the collection has images 
in different regions I suggest not to set that parameter
EXAMPLE:
ExportCol(myLandsatCol, "Landsat_imgs", 30)
*/
var ExportCol = function(col, folder, scale, type,
                         nimg, maxPixels, region) {
    type = type || "float";
    nimg = nimg || 500;
    scale = scale || 1000;
    maxPixels = maxPixels || 1e10;
    var colList = col.toList(nimg);
    var n = colList.size().getInfo();
    for (var i = 0; i < n; i++) {
      var img = ee.Image(colList.get(i));
      var id = img.id().getInfo();
      region = region || img.geometry().bounds().getInfo()["coordinates"];
      var imgtype = {"float":img.toFloat(), 
                     "byte":img.toByte(), 
                     "int":img.toInt(),
                     "double":img.toDouble()
                    }
      Export.image.toDrive({
        image:imgtype[type],
        description: id,
        folder: folder,
        fileNamePrefix: id,
        region: region,
        scale: scale,
        maxPixels: maxPixels})
    }
  }

我没有尝试过很多,但在我所做的一些测试中工作,例如:

var batch = require('users/fitoprincipe/geetools:batch')
var col = ee.ImageCollection("LEDAPS/LE7_L1T_SR").filterDate("2002-01-01","2002-01-03");
batch.Download.ImageCollection.toDrive(col, "Folder", {scale:30});

如果您有任何问题,可以在此处发表评论,也可以将其发布在github上。

最新更新