十五
遥感数据缺失和平滑是一个问题。
数据缺失存在两种情况,一种是局部数据缺失,一种是整张影像缺失,影像后续分析。数据平滑有助于去除噪声,使得数据更为清晰、准确。此外,遥感数据中常常包含着地形、云层等导致数据的波动较大,数据平滑可以改善图像质量。
对于数据处理,采取“先插补,再平滑”的策略。
对哨兵2数据进行ndvi的插值滤波重建ndvi时间序列。
//第一步:选择研究区,对哨兵2影像数据进行去云、计算NDVI。
var s2 = ee.ImageCollection(\"COPERNICUS/S2\");
var geometry = ee.Geometry.Polygon(
[
[
[115.88502099971875,33.804522728847175],
[115.88502099971875,33.832849185024685],
[115.83438089351758,33.832849185024685],
[115.83438089351758,33.804522728847175]
]
]);//定义研究区
Map.addLayer(geometry, {color: \''red\''}, \''Farm\'')
Map.centerObject(geometry)
//定义时间
var startDate = ee.Date.fromYMD(2019, 5, 1);
var endDate = ee.Date.fromYMD(2019, 11, 1);
var filtered = s2
.filter(ee.Filter.date(startDate, endDate))
.filter(ee.Filter.lt(\''CLOUDY_PIXEL_PERCENTAGE\'', 30))
.filter(ee.Filter.bounds(geometry))//定义云量以及边界范围
// 定义云掩膜函数
function maskS2clouds(image) {
var qa = image.select(\''QA60\'')
var cloudBitMask = 1 << 10;
var cirrusBitMask = 1 << 11;
var mask = qa.bitwiseAnd(cloudBitMask).eq(0).and(
qa.bitwiseAnd(cirrusBitMask).eq(0))
return image.updateMask(mask)
.select(\"B.*\")
.copyProperties(image, [\"system:time_start\"])
}
var filtered = filtered.map(maskS2clouds)
//定义ndvi函数,计算ndvi
function addNDVI(image) {
var ndvi = image.normalizedDifference([\''B8\'', \''B4\'']).toFloat().rename(\''ndvi\'');
return image.addBands(ndvi);
}
var withNdvi = filtered.map(addNDVI);
var ndviCol = withNdvi.select(\''ndvi\'')
print(\''Original Collection\'', ndviCol)
//第二步:设置好需要被插值的空影像,需要包含时间信息。这样方程计算出来以后我们就可以根据时间计算当时的像元值。
//这里我们每隔5天就设置一个空影像。我们把空影像标记为“interpolated”,之后把真实影像和需要被插值的影像结合到一起。
//定义时间间隔相等的空影像
var n = 5;
var