
- 发贴
- 登录/注册
我有一个反复出现的问题,我无法完全理解和解释。在哪些情况下应用平均值mean()可能更好,在哪些情况下应用中位数median()更好?
例如,当我想要对盆地中的降雨进行区域化时,我会为该盆地的 shapefile 应用平均reducer。但是,我有时会看到人们使用中位数。
了解应用其中一种情况的最佳情况的人可以帮助我吗?
首先我们在解决这个问题之前,看一下Google Earth Engine中对其的定义分别使什么样的:
mean()平均值()
通过计算所有匹配波段堆栈中每个像素的所有值的平均值来减少图像集合。波段是按名称匹配的。
参数。
this:collection (ImageCollection)。
要减少的图像集合。
返回。图像
median()中位数()
通过计算所有匹配波段堆栈中每个像素点的所有数值的中位数来减少一个图像集合。波段是按名称匹配的。
参数。
this:collection (ImageCollection)。
要减少的图像集合。
返回。图像
通过大量的实验操作,这里我觉得当你的数据中有异常值(例如云/云阴影)时,median() 更适合。因此,对于光学遥感数据(例如 Landsat/Sentinel 图像),最好使用中值median()。
对于网格数据(例如降水)或其他不受异常值影响的数据集,mean() 很好。
这里我们用数据做一个分析,就用Landsat 8
var geometry = /* color: #d63000 */ee.Geometry.Point([41.23936152473313, 40.53205073704967]);
//去云函数
function clouds(image){
var QA = image.select([‘BQA’])
var mask=QA.bitwiseAnd(1 << 5).and(QA.bitwiseAnd(1 << 4).eq(0))
return image.updateMask(mask)}
//影像筛选
var im=ee.ImageCollection(‘LANDSAT/LC08/C01/T1_TOA’)
.filterBounds (geometry)
.filterDate(‘2021-01-01’,‘2021-07-01’)
.map(clouds)
.median()
Map.addLayer(im)
var im1=ee.ImageCollection(‘LANDSAT/LC08/C01/T1_TOA’)
.filterBounds (geometry)
.filterDate(‘2021-01-01’,‘2021-07-01’)
.map(clouds)
.mean()
Map.addLayer(im1)
median的结果:
mean的结果
同样我们可以加载降水的数据集来实验:
var geometry = /* color: #d63000 */ee.Geometry.Point([41.23936152473313, 40.53205073704967]);
var im3=ee.ImageCollection(“NASA/GPM_L3/IMERG_V06”)
.filterBounds (geometry)
.filterDate(‘2021-06-01’,‘2021-07-01’)
.select(“HQprecipitation”)
.median()
Map.addLayer(im3)
var im4=ee.ImageCollection(“NASA/GPM_L3/IMERG_V06”)
.filterBounds (geometry)
.filterDate(‘2021-06-01’,‘2021-07-01’)
.select(“HQprecipitation”)
.mean()
Map.addLayer(im4)
但是结果可能因为分辨率太粗无法显示的非常细腻,但是降水等数据使用mean的效果要远远好于中位数
median的结果:
mean的结果