Google Earth Engine(GEE): reduceRegion的坑,求影像像元的均值/最大值/最小值/面积

        大家能搜到这个题目,也许正在想用这个函数求均值,最大值,最小值,求和等等。那一定要看完下面这个坑!

Google Earth Engine(GEE): reduceRegion的坑,求影像像元的均值/最大值/最小值/面积_第1张图片

         这个是官网给出的说明文档,说返回的是一个字典。重点来了!字典就意味着:里面的条目没有顺序!里面的条目没有顺序!里面的条目没有顺序!

        可能还是没有人意识到上面这句话的重要性。我举我的例子。我本来是想用这个函数来求某一个影像的所有的波段的均值的,比如下面这个代码,我对某一景MODIS的LST数据各波段求均值,其中我想要的是其中的“LST_Night_1km”和“LST_Day_1km”这两个波段的均值。如果你没有打印meanDict的结果,只是通过上面一开始的波段顺序来觉得我想要的是序列数为0和4的结果。那你就大错特错了!

         因为你发现,求完了mean之后,返回的字典里面的东西,不是以前那个顺序了!是按照字母顺序来排序了!所以!推荐按照键来取值,get(“波段名称”),不要凭借自己的直觉来猜它的索引值,即不要直接用get(索引值)。

        代码附上:

var imgs = ee.ImageCollection("MODIS/061/MYD11A2")
    .filterBounds(table)
    .filterDate("2005-01-01","2005-01-08")
var img = imgs.max();
var night  = img.select('LST_Night_1km').multiply(0.02).subtract(273.15);
var day  = img.select('LST_Day_1km').multiply(0.02).subtract(273.15);
Map.addLayer(night, {min: 10, max: 30, palette: ['green','yellow', 'red']},'night');
Map.addLayer(day, {min: 10, max: 30, palette: ['green','yellow', 'red']},'day');
print(img)
var meanDict = img.reduceRegion({
    reducer: ee.Reducer.mean(),
    geometry:table, 
    scale: 1000,
    maxPixels: 1e9
  });
//下面两行不推荐!!!!!!!!!!!
var mean_day = meanDict.values().get(0); 
var mean_night = meanDict.values().get(4);  

// 下面一行推荐
var mean_day = meanDict.get('...' ); //...是自己想要的波段的名称,自己改!
print(meanDict)
print(mean_day)
print(mean_night )

        顺便教一下怎么求面积,代码:

        这个代码把那个table改成自己的geometry就好。这个代码打印出来的就是干干净净的面积!没有藏在属性或者波段里!单位是平方千米。这里就用了推荐的get("波段名称"),没有用get(数字),后者太容易出错了!

var imgs = ee.ImageCollection("MODIS/061/MYD11A2")
    .filterBounds(table)
    .filterDate("2005-05-01","2022-05-08")
var img = imgs.first();
var newband = ee.Image.constant(1)
img = img.addBands(newband)
var area_image = img.multiply(ee.Image.pixelArea())
var area = area_image.reduceRegion({
    reducer: ee.Reducer.sum(),
    geometry: table,
    scale: 1000,
    maxPixels: 10e15,
});

var area_sqkm = ee.Number(area.get('constant')).divide(1e6)

你可能感兴趣的:(GEE入门,遥感,均值算法,算法,云计算,大数据,数据挖掘)