【问题标题】:Google Earth Engine Filtering谷歌地球引擎过滤
【发布时间】:2019-01-05 06:25:51
【问题描述】:
我想在 Google 地球引擎的集合中过滤和选择特定图像?
var l51990 = ee.ImageCollection('LANDSAT/LT5_L1T_TOA')
.filterBounds(table)
.filterDate('1990-01-01','2013-01-01')
.sort('CLOUD_COVER');
我想选择从 1990 年到 2013 年每年云量最少的图像。
有没有一种简洁的方法可以做到这一点,而无需一遍又一遍地重复该代码块?
【问题讨论】:
标签:
javascript
filtering
google-earth-engine
【解决方案1】:
您可以使用first() 获取图像或使用mosaic() 获取像素。
【解决方案2】:
有没有一种简洁的方法可以做到这一点,而无需一遍又一遍地重复该代码块?
是 - 使用for 或while 循环根据需要多次迭代同一代码块。在循环中使用变量来确定 bounds、date 和 sort 选项(可能还包括 lat 和 long 值)
我不会为您编写工作代码,但如果您发布自己的代码,我会为您提供帮助。
【解决方案3】:
您应该在映射函数中对您希望从中获得最少阴天图像的年份列表中的每一年进行时间过滤。首先在映射函数之外进行空间滤波,然后执行滤波并在函数中抓取第一张图像。这将产生一个图像集合,其中包含您研究区域每年的阴天图像最少。
var years = ee.List.sequence(1990,2013)
var l5 = ee.ImageCollection('LANDSAT/LT5_L1T_TOA').filterBounds(table)
var leastCloudy = ee.ImageCollection(years.map(function(i){
var t1 = ee.Date.fromYMD(i,1,1)
var t2 = t1.advance(1,'year')
return ee.Image(l5.filterDate(t1,t2).sort('CLOUD_COVER').first())
}))
print(leastCloudy)
获得过滤后的图像集后,您就可以对其进行任何分析。