8、基于 GEE 平台 通过 NDVI 进行作物产量预测
2026/6/7 18:34:23
网站建设
项目流程
🌾 GEE 作物产量预测 GEE Crop Yield Prediction Professional Platform
这是一个基于Google Earth Engine (GEE) 云计算平台开发的交互式农业监测工具。该平台集成了多源遥感数据(Sentinel-2 与 Landsat 8/9),通过自动化的去云处理和植被指数计算,实现对特定区域作物的长势监测与产量潜力估算。
📋 目录 (Table of Contents) 核心功能 算法与数据处理 快速使用指南 开发者自定义指南 (修改源码)4.1 如何自定义研究区域 4.2 如何修改产量预测公式 4.3 如何调整可视化阈值 注意事项 ✨ 核心功能 多源卫星支持 : 支持Sentinel-2 (10m, 5天重访) 和Landsat 8/9 (30m, 16天重访) 数据无缝切换。自动化预处理 : 内置针对不同传感器的 QA 波段去云算法,自动剔除云和云影干扰。动态产量建模 : 基于生长季最大 NDVI (Max Value Composite) 的产量估算模型。交互式分析面板 :实时图表 : 自动生成 NDVI 时序生长曲线、产量分布直方图。统计指标 : 自动计算并显示区域内的平均产量(吨/公顷)。动态图例 : 地图左下角根据数据自动渲染图例组件。🛠️ 算法与数据处理 1. 数据清洗机制 脚本根据选择的卫星源自动匹配处理流程:
Sentinel-2 : 使用QA60波段。[cite_start]逻辑: 屏蔽 Bit 10 (不透明云) 和 Bit 11 (卷云) [cite: 10, 11, 12]。 [cite_start]阈值: 过滤云量 > 20% 的影像 [cite: 14]。 Landsat 8/9 : 使用QA_PIXEL波段。[cite_start]逻辑: 屏蔽 Bit 3 (云) 和 Bit 4 (云影) [cite: 17]。 [cite_start]校正: 应用 Scale Factor (0.0000275 * DN - 0.2) 转换为地表反射率 [cite: 18]。 2. 产量预测模型 (核心逻辑) 本平台采用基于植被指数的经验回归模型:
[cite_start]特征提取 : 计算时间窗口内的最大 NDVI (seasonalMaxNDVI),代表作物生长最旺盛时期的状态 [cite: 26]。 [cite_start]非耕地掩膜 : 剔除 NDVI < 0.25 的像素(水体、裸土、建筑)[cite: 28]。 估算公式 (示例) :Y i e l d ( t / h a ) = 12.5 × N D V I m a x − 1.5 Yield (t/ha) = 12.5 \times NDVI_{max} - 1.5 Yi e l d ( t / ha ) = 12.5 × N D V I ma x − 1.5 [cite_start](注:此为演示参数,实际应用请参考“开发者自定义指南”进行修改) [cite: 27]。🚀 快速使用指南 启动平台 : 在 GEE Code Editor 中运行脚本。设置参数 (左侧面板):Region : 选择预设的示范区(如:河南驻马店-冬小麦)。Satellite : 选择数据源(推荐 Sentinel-2 以获得更高清晰度)。Date Range : 输入作物生长季的开始与结束日期 (格式 YYYY-MM-DD)。执行分析 : 点击“执行分析 / Run Analysis” 按钮 。查看结果 :地图 : 查看产量空间分布(红=低产,绿=高产)。图表 : 底部面板显示生长曲线与产量分布。数据 : 面板显示具体的“区域平均产量”数值。🔧 开发者自定义指南 (修改源码) 本节详细说明如何修改代码以适配您自己的研究区域和农学模型。
4.1 如何自定义研究区域 (ROI) 默认代码使用矩形坐标。您可以通过修改rois对象来添加新区域。
步骤:
找到代码顶部的14 - 18 行 左右的var rois = { ... };部分。var rois= { '河南驻马店 (冬小麦)' : ee. Geometry. Rectangle ( [ 114.0 , 32.8 , 114.2 , 33.0 ] ) , '黑龙江建三江 (水稻)' : ee. Geometry. Rectangle ( [ 132.5 , 47.1 , 132.7 , 47.3 ] ) , '山东德州 (夏玉米)' : ee. Geometry. Rectangle ( [ 116.2 , 37.3 , 116.4 , 37.5 ] ) } ; 方法 A (添加坐标) : 如果您知道经纬度范围。var rois= { // 格式: [最小经度, 最小纬度, 最大经度, 最大纬度] '我的自定义区域' : ee. Geometry. Rectangle ( [ 115.0 , 34.0 , 115.5 , 34.5 ] ) , // ...保留其他区域 } ; 方法 B (使用 Shapefile) : 如果您上传了矢量文件到 Assets。var rois= { // 必须使用 .geometry() 获取边界 '我的县域边界' : ee. FeatureCollection ( "users/您的用户名/您的文件名" ) . geometry ( ) , } ; 修改后,重新运行代码,下拉菜单中即会出现新选项。 4.2 如何修改产量预测公式 默认公式仅为线性演示。请根据您的地面实测数据进行修改。
步骤:
定位到runAnalysis函数内部,约第 184-186 行 。 找到以下代码段:var predictedYield= seasonalMaxNDVI. expression ( '12.5 * NDVI - 1.5' , { 'NDVI' : seasonalMaxNDVI} ) . rename ( 'Yield_Prediction' ) ; 修改场景示例 :场景 1: 调整线性系数 (例如:y = 20 x + 5 y = 20x + 5 y = 20 x + 5 ) 将'12.5 * NDVI - 1.5'修改为'20 * NDVI + 5'。场景 2: 二次多项式模型 (例如:y = − 10 x 2 + 15 x y = -10x^2 + 15x y = − 10 x 2 + 15 x ) 修改为'(-10 * NDVI * NDVI) + (15 * NDVI)'。场景 3: 指数模型 (例如:y = 5 × e 2 x y = 5 \times e^{2x} y = 5 × e 2 x ) 修改为'5 * exp(2 * NDVI)'。4.3 如何调整可视化阈值 如果修改公式后,地图显示的颜色全红或全绿,说明预测值超出了预设的显示范围 (2-10 t/ha)。
步骤:
定位到第 195 行 左右:var yieldVis= { min: 2 , max: 10 , palette: [ ... ] } ; 根据您的产量范围修改min(最小值) 和max(最大值)。例如:如果是单产较高的玉米,可能需要设置为{min: 5, max: 15}。
⚠️ 注意事项 云量影响 : 如果选定的时间窗口内阴雨天气过多,Sentinel-2 可能因云量过滤导致部分区域出现空洞(无数据)。此时建议:扩大时间窗口。 切换为 Landsat 卫星(重访周期不同,可能正好有晴空数据)。 [cite_start]尺度效应 : 图表统计中的.scale(30)参数 [cite: 34] 决定了计算精度。对于极大区域(如全省),建议将其调大(如 100或500),以避免 GEE 计算超时 (Computation Time Out)。 模型适用性 : 本工具提供的仅为计算框架。严禁直接使用默认参数 (12.5, -1.5) 进行真实的农业投产决策 ,必须结合当地农学实验数据进行参数本地化校准。GEE 系列源码分享 基于 GEE 平台 通过 NDVI 进行作物产量预测 源码分享
https://github.com/mojoin/GEE-