赞
踩
Sentinel-1由于其容易受到扰动而出现噪声,在数据分析时,通过平滑滤波对其去噪,更容易体现数据本身反映的变化趋势。
引用库,库函数的使用说明:添加链接描述
var oeel=require('users/OEEL/lib:loadAll');
Sentinel-1数据调用
var dataset_s1=ee.ImageCollection('COPERNICUS/S1_GRD') .filter(ee.Filter.eq('instrumentMode', 'IW')) .filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VV')) .filter(ee.Filter.listContains('transmitterReceiverPolarisation', 'VH')) // .filter(ee.Filter.eq('platform_number','A')) .filterBounds(geometry) // .filterDate(year+'-01-01',year+'-02-01') .filter(ee.Filter.date(startDate, endDate)) .filter(ee.Filter.eq('orbitProperties_pass', 'ASCENDING')) .map(function(image) { var edge = image.lt(-30.0); var maskedImage = image.mask().and(edge.not()); return image.updateMask(maskedImage); });
调用SG滤波函数,对调用的该段Sentinel-1数据的VH波段进行SG滤波。
var dataset_s1_sg=oeel.ImageCollection.SavatskyGolayFilter(dataset_s1,
ee.Filter.maxDifference(1000*3600*24*36, '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'))));},2,['VH']);
ee.Fileter.maxDifference的具体介绍:点这里,这里对影像时间的提取用到了’system:time_start’属性,该属性描述的时间是以毫秒为单位的,因此前面的具体时间窗口,需要10003600*24进行天→毫秒的单位转化。
滤波结果的控制台显示。第一句代码展示滤波后的全部结果,第二句代码将滤波前后的VH波段摘出来单独成像。
print('Smoothed data',ui.Chart.image.series(dataset_s1_sg, geometry, ee.Reducer.mean(), 10));
print('Smoothed data',ui.Chart.image.series(dataset_s1_sg.select('d_0_VH','VH'), geometry, ee.Reducer.mean(), 10));
滤波后增加了几个波段,d_0_VH是VH波段经SG滤波平滑后的结果,d_1_VH则是平滑函数的一阶导数,这里是用了2阶函数做平滑,因此只有一个导数波段;改变SG滤波函数的阶数,这里的导数波段会依次增加。
比较VH与平滑结果d_0_VH,可以看到拟合效果还是不错的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。