google earth engine随缘学习(十九)SG平滑函数(二)

之前有写过一篇SG函数(点这里),但那个用起来太麻烦了,最近发现GEE编辑器页面更新了某大佬写的SG函数,于是来更新下,希望大家都能用到!

1. 先放出源代码链接(点这里)和函数文档链接(点这里)

在这里插入图片描述
这篇代码主要是用SG函数平滑modis数据的例子。

2. 函数用法

2.1 引用库

第一步你需要在代码开头写下以下内容来引用大佬的库

var oeel=require('users/OEEL/lib:loadAll');
2.2 使用函数

函数用法:

var smooth_result =  oeel.ImageCollection.SavatskyGolayFilter(collection, filter, distanceFunction, degree, bandOfInterest)
详细解释一下各参数:

@ collection:你准备平滑的影像数据集
@ filter:滑动窗口大小
@ distanceFunction:距离函数(这里我直译哈)
@ degree:拟合多项式的次数
@ bandOfInterest:你准备平滑的影像数据波段

下面通过详细案例来具体解释一下重点几个参数咋用:
以下案例摘录于官方示例(对modis影像集进行平滑)
modis=oeel.ImageCollection.SavatskyGolayFilter(modis,
        ee.Filter.maxDifference(1000*3600*24*15, 'system:time_start', null, 'system:time_start'),
        function(infromedImage,estimationImage){
          return ee.Image.constant(ee.Number(infromedImage.get('system:time_start'))
            .subtract(ee.Number(estimationImage.get('system:time_start'))));},
        5,['sur_refl_b.*']);

@ filter:这里滑动窗口用的是ee.Filter.maxDifference(1000×3600×24×15, ‘system:time_start’, null, ‘system:time_start’)。意思是指在整个影像集中,选取system:time_start属性和起始影像system:time_start属性差值在1000×3600×24×15以内的影像。也就是说从起始影像算起,前后十五天为一个滑动窗口。例如在日数据集中,前后十五天加当天一共是31张影像,也就是滑动窗口大小为31。

其中,system:time_start是指依照数据的’system:time_start’时间属性来作为距离衡量标准。1000×3600×24×15是指把15天换算成毫秒(因为属性’system:time_start’的单位为毫秒)。前后两个system:time_start分别指起始影像和用来匹配影像集的属性,具体可以翻阅官方ee.Filter.maxDifference函数解释。

@ distanceFunction:这里距离函数用的是*function(infromedImage,estimationImage){
return ee.Image.constant(ee.Number(infromedImage.get(‘system:time_start’))
.subtract(ee.Number(estimationImage.get(‘system:time_start’))));}*意思是指在一个大小为N的滑动窗口内,共有N个变量X,X1赋值为1,X2赋值为X2和X1时间之差,X3赋值为X3和X2时间之差…之所以是用时间之差来确定X的值,而不是1,2,3,4,,,是考虑到图像像素可能有缺失,距离不均等

@ bandOfInterest:[‘sur_refl_b.*’] 是选取所有开头为sur_refl_b的波段用作被平滑对象

2.3 获取结果

最后返回的影像集合中每张影像除了原始的波段外,还加入了其他的波段,以d_数字_波段名来命名,d_0_B1表示B1平滑后的值,其他d_1_B1、d_2_B1则表示B1平滑函数的一次和二次导数等等。所以想显示结果就选择d_0打头的波段。此外,每张影像还加入了neighbours属性,显示了用于拟合的图像集合。

以后空下来了会接着更新其他函数~

如有不足也烦请指出!

顺便说一下,毕业党实在没有时间帮所有人检查或者修改代码,希望大家理解一下,不要因此加我,谢谢!!!

  • 21
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 39
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值