GEE:筛选影像集合中的非空影像

本文记录了筛选影像集合中的非空影像的函数。后续更新插值填补空影像函数。

文章目录

      • 案例1
        • 主要思路:
        • 代码实现
      • 案例2
        • 主要思路:
        • 代码实现


案例1

主要思路:

直接筛选某波段非空的影像。

代码实现

//由于存在空影像,因此进行空影像过滤操作
var dailyMeans2 = dailyMeans2.map(function(n){
	  var bandName = n.bandNames()
	  return n.set('bandName', bandName)
})

var dailyMeans2 = dailyMeans2.filter(ee.Filter.neq('bandName', []))
// print( dailyMeans2,'dailyMeans2');

案例2

主要思路:

(已注释在代码中) ①、按8天筛选影像集合,计算8天内影像数量;②、将影像数量添加到影像集合属性中;③、每8天中值合成形成新的影像集合,通过属性筛选8天内没有数据的影像。

来自我要当太空人!爸爸妈妈可高兴了的博客:《Google earth engine(GEE):得到具有一定规律的时间的影像,筛选列表的非空影像,MODIS地表温度》:https://blog.csdn.net/weixin_46812066/article/details/127704322

代码实现

var date1 = ee.Date('1970-01-01')
var date2 = ee.Date(1*1*1*1*1)
var date3 = ee.Date(1*24*60*60*1000)
var date4 = ee.Date(365*24*60*60*1000)
print(date1,date2,date3,date4)

var get_start_value=ee.List([2005,2015,2022]).map(function(year){
	  var year = ee.Number(year).format("%04d").cat("-01-01");
	  var Date_From_YMD = ee.Date(year).millis( );// 可以得到value, 不是用.value()哈!
	 
	  return Date_From_YMD
})
// print(get_start_value);
 
var date_sequence= ee.List(get_start_value).map(function(num){
	  var start_day=ee.Number(num);
	  var end_day=start_day.add(365*24*60*60*1000)
	  var num_seq=ee.List.sequence(start_day,end_day,8*24*60*60*1000);
	  var date_seq=num_seq.map(function(day_num){
		    var date=ee.Date(day_num);
		    return date
	  })
	  return date_seq
})
// print(date_sequence)

var date_list=date_sequence.flatten() //reshape the sequence into one dimension
// print(date_list)
 
var false_temperature = date_list.map(function(day){
	  var day = ee.Date(day);
	  var img = ee.ImageCollection("MODIS/061/MYD11A2")
				  .filterBounds(table)
				  .filterDate(day,day.advance(8,"day"))
	  var size = img.size()                    //①、计算8天内影像数量
	  img = img.select('LST_Day_1km')
		       .median()
		       .clip(table)
		       .set('system:time_start',day)
		       .set('bandnumber',size);        //②、将影像数量添加到影像集合属性中
	  return img
})

//筛选
var collection=ee.ImageCollection(false_temperature)
                 .filterMetadata('bandnumber','greater_than',0) //③、通过属性筛选8天内没有数据的影像
print(collection)

//Convert temperature to Celsius.
var tru_temperature = collection.map(function(img){
	  var img1 = ee.Image(img);
	  var date = img1.get('system:time_start');
	  return img1.multiply(0.02).subtract(273.15).set('system:time_start', date);
});
print(tru_temperature)
Map.addLayer(tru_temperature.first(), {min: 10, max: 30, palette: ['green','yellow', 'red']},'LST');

你可能感兴趣的:(遥感算法,Geemap,GEE,javascript,经验分享)