首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >地球引擎:在ee.ImageCollection上映射将返回ee.FeatureCollection

地球引擎:在ee.ImageCollection上映射将返回ee.FeatureCollection
EN

Stack Overflow用户
提问于 2020-08-27 21:20:31
回答 1查看 527关注 0票数 0

我正在尝试使用以下脚本从Sentinel-2图像集合中删除带云的图像:

代码语言:javascript
复制
// Remove images with clouds
var cloud_removal = function(image){

  // save the quality assessment band QA60 as a variable
  var cloud_mask = image.select('QA60');
  
  // calculate the sum of the QA60-Band (because QA60 != 0 means cloud or cirrus presence)
  var cloud_pixels = cloud_mask.reduceRegion( // reduceRegion computes a single object value pair out of an image
    {reducer:ee.Reducer.sum(), // calculates the sum of all pixels..
    geometry:aoi, // inside the specified geometry
    scale:60}) // at this scale (matching the band resolution of the QA60 band)
    .getNumber('QA60'); // extracts the values as a number
  
  return ee.Algorithms.If(cloud_pixels.eq(0), image);
};

var s2_collection_noclouds = s2_collection_clipped.map(cloud_removal, true);
print('The clipped Sentinel-2 image collection without cloudy images: ', s2_collection_noclouds);

问题是输出("s2_collection_noclouds")是一个ee.FeatureCollection。我已经尝试将输出转换为图像集合,但它仍然是一个特征集合:

代码语言:javascript
复制
var s2_collection_noclouds = ee.ImageCollection(s2_collection_clipped.map(cloud_removal, true));

我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-29 07:08:44

结果对象实际上是一个图像集合,并且可以显示在地图上。例如:

代码语言:javascript
复制
var visualization = {
  min: 0,
  max: 3000,
  bands: ['B4', 'B3', 'B2'],
};
Map.addLayer(s2_collection_noclouds.median(), visualization, "Sentinel-2")

附注:我确实看到地球引擎代码编辑器控制台将对象类型标记为"FeatureCollection“,并且集合包含图像对象的功能。这似乎是因为映射函数中的ee.Algorithms.If()为多云图像返回了一个空对象。如果您返回的是一个屏蔽的图像:

代码语言:javascript
复制
return ee.Algorithms.If(cloud_pixels.eq(0), image, image.mask(0));

则该集合被正确地描述为ImageCollection。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63616940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档