如有研究需要数据,请与QQ416498894;或微信扫码添加客服咨询

Google Earth Engine(GEE)—— 在 GEE 中为图像几何动画添加文本和图例信息

Google Earth Engine(GEE)—— 在 GEE 中为图像几何动画添加文本和图例信息

代码:

/// 获取一个 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));