🌾 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.5Yield(t/ha)=12.5×NDVImax−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 = { ... };部分。varrois={'河南驻马店 (冬小麦)':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 (添加坐标): 如果您知道经纬度范围。
varrois={// 格式: [最小经度, 最小纬度, 最大经度, 最大纬度]'我的自定义区域':ee.Geometry.Rectangle([115.0,34.0,115.5,34.5]),// ...保留其他区域}; - 方法 B (使用 Shapefile): 如果您上传了矢量文件到 Assets。
varrois={// 必须使用 .geometry() 获取边界'我的县域边界':ee.FeatureCollection("users/您的用户名/您的文件名").geometry(),}; - 修改后,重新运行代码,下拉菜单中即会出现新选项。
4.2 如何修改产量预测公式
默认公式仅为线性演示。请根据您的地面实测数据进行修改。
步骤:
- 定位到
runAnalysis函数内部,约第 184-186 行。 - 找到以下代码段:
varpredictedYield=seasonalMaxNDVI.expression('12.5 * NDVI - 1.5',{'NDVI':seasonalMaxNDVI}).rename('Yield_Prediction'); - 修改场景示例:
- 场景 1: 调整线性系数(例如:y = 20 x + 5 y = 20x + 5y=20x+5)
将'12.5 * NDVI - 1.5'修改为'20 * NDVI + 5'。 - 场景 2: 二次多项式模型(例如:y = − 10 x 2 + 15 x y = -10x^2 + 15xy=−10x2+15x)
修改为'(-10 * NDVI * NDVI) + (15 * NDVI)'。 - 场景 3: 指数模型(例如:y = 5 × e 2 x y = 5 \times e^{2x}y=5×e2x)
修改为'5 * exp(2 * NDVI)'。
- 场景 1: 调整线性系数(例如:y = 20 x + 5 y = 20x + 5y=20x+5)
4.3 如何调整可视化阈值
如果修改公式后,地图显示的颜色全红或全绿,说明预测值超出了预设的显示范围 (2-10 t/ha)。
步骤:
- 定位到第 195 行左右:
varyieldVis={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-