Google Earth Engine(GEE)——GEE中GPP和NDVI几何动画绘制

该代码利用MODIS数据计算了东北地区2001年至2020年的GPP平均值,生成了GPP动态变化的动画,并通过NDVI展示了同一时期的植被指数变化,同时添加了颜色渐变条和图例以增强可视化效果。
摘要由CSDN通过智能技术生成

东北地区20年GPP动态变化绘制

var style = require('users/gena/packages:style');
var utils = require('users/gena/packages:utils');
var text = require('users/gena/packages:text');

var geo = ee.FeatureCollection('projects/ee-wn1206/assets/dongbei').geometry();

var dataset = ee.ImageCollection("MODIS/006/MOD17A2H");
var collection = ee.ImageCollection("MODIS/006/MOD17A2H")
                     .filterDate('2001-01-01', '2020-12-31')
                     .select("Gpp")
                     .filterBounds(geo)
                     .map(function(image){
                       return image.multiply(0.1).set(image.toDictionary(image.propertyNames()))
                     });
var years = ee.List.sequence(2001, 2020);
var collectYear = ee.ImageCollection(years
  .map(function(y) {
    var start = ee.Date.fromYMD(y, 1, 1);
    var end = start.advance(12, 'month');
    return collection.filterDate(start, end).sum().reduce(ee.Reducer.mean()).float().set('system:time_start',y).set('year',y);
}));


// 定义RGB可视化参数。
var visParams = {
  min: 0.0,
  max: 900.0,
  palette: [
    'FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901',
    '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',
    '012E01', '011D01', '011301'
  ],
};


// Create RGB visualization images for use as animation frames.
var rgbVis = collectYear.map(function(img) {
  return img.visualize(visParams).clip(geo)
});


// Define GIF visualization parameters.和visParams不同
var gifParams = {
  'region': geo,
  'dimensions': 600,
  'crs': 'EPSG:3857',
  'framesPerSecond': 5,
  
  
};

// Print the GIF URL to the console.网址链接
print(rgbVis.getVideoThumbURL(gifParams));


// Render the GIF animation in the console.
print(ui.Thumbnail(rgbVis, gifParams));

在这里插入图片描述

NDVI 动态变化并添加文字和图例

// 获取一个MODIS NDVI集合,并选择NDVI。
var col = ee.ImageCollection('MODIS/006/MOD13A2').select('NDVI');

// 定义一个掩码,通过它来过滤边界获取NDVI数据。
var mask = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017')
  .filter(ee.Filter.eq('wld_rgn', 'Africa'));

// 定义动画帧的区域界线。
var region = ee.Geometry.Polygon(
  [[[-18.698368046353494, 38.1446395611524],
    [-18.698368046353494, -36.16300755581617],
    [52.229366328646506, -36.16300755581617],
    [52.229366328646506, 38.1446395611524]]],
  null, false
);

// 为每张图片添加年月日(DOY)属性。
col = col.map(function(img) {
  var doy = ee.Date(img.get('system:time_start')).getRelative('day', 'year');
  return img.set('doy', doy);
});

// 获得由'doy'提供的明显的图像集合。
var distinctDOY = col.filterDate('2013-01-01', '2014-01-01');

// 定义一个过滤器,以确定哪些图片来自完整的 集合中的哪些图片与不同的DOY集合中的DOY相匹配。
var filter = ee.Filter.equals({leftField: 'doy', rightField: 'doy'});

// 定义一个连接。
var join = ee.Join.saveAll('doy_matches');

//应用连接并将得到的FeatureCollection转换为ImageCollection。
var joinCol = ee.ImageCollection(join.apply(distinctDOY, col, filter));

// 在匹配的DOY集合中应用中位数合成影像。
var comp = joinCol.map(function(img) {
  var doyCol = ee.ImageCollection.fromImages(
    img.get('doy_matches')
  );
  return doyCol.reduce(ee.Reducer.median());
});

// 定义RGB可视化参数。
var visParams = {
  min: 0.0,
  max: 9000.0,
  palette: [
    'FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901',
    '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',
    '012E01', '011D01', '011301'
  ],
};

// 添加一个带有标签的颜色渐变条。这里是从gena这个包中获取的
var style = require('users/gena/packages:style');
var utils = require('users/gena/packages:utils');
var text = require('users/gena/packages:text');

var geometryGradientBar = ee.Geometry.Polygon(
        [[[-12.907508407699103, -26.822938080181096],
          [-12.907508407699103, -29.915752084430412],
          [10.207725967300876, -29.915752084430412],
          [10.207725967300876, -26.822938080181096]]], null, false);
var min = 0;
var max = 1;
var textProperties = {
  fontSize: 32,
  textColor: 'ffffff',
  outlineColor: '000000',
  outlineWidth: 0,
  outlineOpacity: 0.6
};
var labels = ee.List.sequence(min, max);
var gradientBar = style.GradientBar.draw(geometryGradientBar, {
  min: min, max: max, palette: visParams.palette, labels: labels,
  format: '%.0f', text: textProperties
});
// 创建RGB可视化图像,作为动画帧使用。
// 将梯度条和标签图像与NDVI图像混合。
var label = 'NDVI';
var scale = 19567;
var geometryLabel = ee.Geometry.Point([-6.052039657699084, -20.837091553700866]);
var text = text.draw(label, geometryLabel, scale, {fontSize: 32});


var rgbVis = comp.map(function(img) {
  return img.visualize(visParams).clip(mask).blend(gradientBar).blend(text);
});

// 定义GIF的可视化参数。
var gifParams = {
  'region': region,
  'dimensions': 600,
  'crs': 'EPSG:3857',
  'framesPerSecond': 10,
  'format': 'gif'
};

// 打印GIF的URL到控制台。
print(rgbVis.getVideoThumbURL(gifParams));

// 在控制台中渲染GIF动画。
print(ui.Thumbnail(rgbVis, gifParams));

在这里插入图片描述
NDVI添加图例参考
可参考学习
可参考学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值