NDVI谐波拟合(基于GEE实现)

在遥感影像中,我们常用 NDVI(归一化植被指数)来衡量地表植被的绿度。它简单直观,是生态监测、农情分析的基础工具。但你是否注意到:

NDVI 虽然"绿",却常常"乱"。

因为云层、观测频率、天气干扰,NDVI 的时间序列往往是锯齿状断裂的,很难反映植物真实的生长节奏。

那么,能不能让 NDVI 曲线变得平滑、优雅?更重要的是,让我们看出植物一年中什么时候最绿、什么时候开始变黄?

答案就是:谐波拟合(Harmonic Regression)

我们用一套简单的数学模型------正弦函数 + 余弦函数的组合,就可以模拟 NDVI 的自然波动,就像听诊器一样,听出绿地的"心跳"与"节奏"。

这套方法不仅可以:

  • 去除 NDVI 的噪声、缺值干扰

  • 提取"年最大 NDVI 值"与"峰值出现时间"

  • 还可以看出城市、公园、农田中绿意的季节差异

一串函数,就能复刻大地的春夏秋冬。

我们在 GEE(Google Earth Engine)中完成了这项分析,原始 NDVI 和谐波拟合 NDVI 的对比图已经生成。未来我们还可以进一步提取出"绿期长度"、"相位差异"等生态指标。

📌 想获取脚本 or 全套实操教学?欢迎关注【全域智图】公众号。

复制代码
部分代码,完整代码关注公众号

// 1. 设置研究区域(成都点位,可自行替换)
var region = ee.Geometry.Point([104.07, 30.67]);
Map.centerObject(region, 8);

// 2. 加载 MODIS NDVI 数据(MOD13Q1)
var modis = ee.ImageCollection('MODIS/006/MOD13Q1')
  .filterDate('2020-01-01', '2021-01-01')
  .filterBounds(region)
  .select('NDVI')
  .map(function(img) {
    return img.multiply(0.0001).copyProperties(img, ['system:time_start']);
  });

// 3. 添加时间变量(以天为单位)
var withTime = modis.map(function(img) {
  var t = ee.Date(img.get('system:time_start')).difference(ee.Date('2020-01-01'), 'day');
  return img.addBands(ee.Image.constant(t).rename('t').toFloat());
});












print(chart);
// 9. 显示 NDVI 原始图像(选择其中一个时间点)
var exampleRaw = modis.filterDate('2020-07-01', '2020-07-15').median();
Map.addLayer(exampleRaw, {min: 0.1, max: 0.8, palette: ['white', 'green']}, '原始 NDVI');

// 10. 显示拟合 NDVI(同一时期)
var exampleFitted = fittedSeries.filterDate('2020-07-01', '2020-07-15').median();
Map.addLayer(exampleFitted, {min: 0.1, max: 0.8, palette: ['white', 'blue']}, '拟合 NDVI');

拟合NDVI

真实NDVI

相关推荐
阿里云大数据AI技术14 小时前
EMR Serverless StarRocks 湖仓多模态检索:One SQL on One Data,实现全文 + 标量 + 向量三路混合检索
人工智能
冬奇Lab16 小时前
Skill 系列(02):Skill 安全风险——三类攻击面的实战测试
人工智能·安全·开源
冬奇Lab16 小时前
每日一个开源项目(第138篇):OpenMontage - 把 AI 编程助手变成完整的视频制作团队
人工智能·开源·claude
米小虾16 小时前
智谱港股盘中市值突破万亿港元!GLM-5.2 开源引爆国产 AI 价值重估
人工智能·chatglm (智谱)
阿里云大数据AI技术16 小时前
义乌小商品城基于MaxFrame AI Function的亿级AI 数据产线提速之路
人工智能
甲维斯17 小时前
用AI还原《坦克大战》并3D化升级!
前端·人工智能·游戏开发
IT_陈寒18 小时前
SpringBoot自动配置坑了我一晚上,原来问题出在这
前端·人工智能·后端
吴佳浩19 小时前
Hermes Agent 连环 400 真凶找到了:一个 call_id 让人炸毛
人工智能·llm·agent
程序员cxuan20 小时前
幽默,一个 Github 名字叫“马尾辫”,但是他给你省了 80% 的 token
人工智能·后端·程序员