PIE-Engine利用modis计算ndvi

借助国产遥感计算云服务平台PIE-Engine,利用MOD09A1这套数据获取长时序年平均NDVI,因为PIE才刚刚起步,所以找了好久都没有特别适合的代码,以下是我摸索的成果,希望帮助到有需要的人,如果发现问题,也欢迎指证。

var map1 = pie.FeatureCollection('user/xxx/xxx_SHP');
var roi = map1.first() //转化为对象
              .geometry(); //转化为几何形状

// 创建一个函数用来去除有云的像元
// 参考文章链接:https://blog.csdn.net/little00bee/article/details/105801593
var maskClouds = function(image) {
  // 选择质量评估波段
  var QA = image.select('sur_refl_state_500m')
  // 1<<10表示二进制第10位,第10位表示有云
  var bitMask = 1 << 10;
  // 使得检测出含云像元置为0,进行掩膜去除含云
  var cloudMask = QA.bitwiseAnd(bitMask).eq(0);
  return image.updateMask(cloudMask);
}

//加载Terra星全球500m地表反射率8天合成产品(MOD09A1 V6)
var imgs = pie.ImageCollection('USGS/MOD09A1/006')
            .filterDate('2000-01-01', '2000-12-31')
            .select(['sur_refl_b01', 'sur_refl_b02','sur_refl_state_500m'])
            .filterBounds(roi)
            .map(maskClouds)
            .mean()
            // .mosaic() //掩膜
            ;       
          

function NDVI_new(image){
    var b1 = image.select("sur_refl_b01").toFloat();
    var b2 = image.select("sur_refl_b02").toFloat();
    var ndvi = (b2.subtract(b1)).divide(b2.add(b1));
    return ndvi;
}

var ndvi = NDVI_new(imgs);


print(ndvi);                 

//地图显示中心
Map.centerObject(roi, 5);

//NDVI绘制样式
var visParamNDVI = {
    min: -0.2,
    max: 0.8,
    palette: 'CA7A41, CE7E45, DF923D, F1B555, FCD163, 99B718, '+
        '74A901, 66A000, 529400,3E8601, 207401, 056201, 004C00,'+
        '023B01, 012E01, 011D01, 011301'
};
//加载影像集合的最大值
// Map.addLayer(img.mean().clip(roi), visParamNDVI, "NDVI");
Map.addLayer(ndvi.clip(roi), visParamNDVI, "NDVI");

//加载显示中国边界图
Map.addLayer(roi, {color:"ffff00ff", fillColor:"00000000"}, "研究区");

 /**
 * 导出影像,参数分别为:
 *  image:导出影像
 *  description:导出任务描述也就是任务名称
 *  assetId:导出的《资源》中数据集合路径
 *  region:导出范围
 *  scale:分辨率30米
 * */
Export.image({
    image:ndvi.clip(roi),
    description:'ndvi2000',
    region:roi,
    crs:'EPSG:4326',
    scale:500,
});

你可能感兴趣的:(PIE-Engine,javascript)