GEE实战01期:制作北京及周边地区夏季 NDVI 分布图
本期关注借助ee.ImangCollection完成影像集合与时空筛选。核心流程在不下载数据的背景下在浏览器上完成影像调用NDVI合成地图显示简单分析以及数据导出的过程。1.案例背景归一化植被指数Normalized Difference Vegetation IndexNDVI是很多初学遥感和地理信息的同学会接触到的概念。作为监测植被生长状况的常用遥感指标其计算公式为其中NIR 为近红外波段反射率RED 为红光波段反射率。NDVI 的理论取值范围为 -1 至 1。在其他条件相近时较高的 NDVI 通常对应较高的植被活力或覆盖程度。基本原理NDVI 的计算基于绿色植被在红光和近红外波段具有不同的光谱响应特征叶绿素对红光具有较强的吸收作用而叶片内部结构使近红外辐射具有较高的反射率。因此健康、生长旺盛的绿色植被通常表现出较低的红光反射率和较高的近红外反射率。提问公式为什么使用近红外波段-红光波段呢因为二者相减表示两个波段反射率的绝对差异在其他条件相近时差值越大通常意味着绿色植被的光谱特征越明显。提问公式为什么还需要使用近红外波段红光波段呢这主要起到归一化的作用NDVI 关注的不只是近红外与红光反射率相差多少更重要的是这种差异相对于两者总反射率有多大。我们今天想解决一个简单的地理问题2024 年夏季北京及周边地区的植被分布具有怎样的空间差异夏季期间区域平均 NDVI 又如何变化2.数据准备本期选择 MODIS MOD13Q1 V6.1 产品。可以在GEE中直接查询到。该产品由 NASA LP DAAC 提供是全球性的植被指数产品包含 NDVI和质量信息等波段。主要的波段信息如下空间分辨率250m时间分辨率为16天。特别说明第一MOD13Q1 已经提供计算好的 NDVI我们今天不需要再使用红光和近红外波段计算一次。这次的重点是学会影像集合操作后面的案例再专门学习 NDVI 的计算。第二产品中 NDVI 的比例因子为 0.0001因此需要将原始像元值乘以 0.0001才能得到常见的 NDVI 数值。后续在使用类似的产品也特别要注意产品的数值缩放问题。3.案例实操本专栏默认大家已经初步了解了GEE的基本使用方法如果没有学过GEE的同学可以选择前往我们的主页订阅专栏查看GEE的基础教程即可。第一步定义研究区为了方便初学者操作我们暂时不导入行政区划文件而是使用经纬度创建一个矩形研究区。// 1. 定义研究区 var roi ee.Geometry.Rectangle([ 115.7, 39.4, 117.4, 40.4 ]); // 2. 定位地图 Map.centerObject(roi, 8); // 3. 显示研究区 Map.addLayer( roi, {color: red}, Study Area );这里我们定义了一个矩形研究区域并且设置了地图的缩放级别并且将研究区设置为红色。运行后地图是这样的如果大家想修改到自己家乡附近的区域怎么办只需要通过修改矩形框里面的参数值即可这些参数分别代表矩形框的左下角和右上角。ee.Geometry.Rectangle([ xmin, ymin, xmax, ymax ]);第二步加载并筛选MODIS数据接着我们来获取数据。我们需要获取2024年夏季6月-9月研究区的影像集合。// 4. 加载MODIS数据 var dataset ee.ImageCollection( MODIS/061/MOD13Q1 ); // 5. 按研究区和时间筛选 var images dataset .filterBounds(roi) .filterDate( 2024-06-01, 2024-09-01 ); // 6. 查看筛选结果 print(影像数量, images.size()); print(影像集合, images);这份代码里面有三个关键函数值得我们学习ee.ImageCollection()创建或读取影像集合需要数据的代码一般GEE数据集查阅界面会提供filterBounds()根据空间范围筛选影像此处输入我们前面定义好的文件fiterDate根据日期筛选影像一般要定义一个起始日期和结束日期左闭右开区间我们可以看到2024年夏季研究区域一共有6景影像。如果大家想查询影像的具体信息可以点击影像的属性波段等进行查看。第三步进行NDVI的处理现在我们获取的是一个影像集合这里面一共有6景影像但要制作夏季 NDVI 空间分布图需要将其合成为一幅影像。因此我们需要对这份NDVI进行一些预处理。// 7. 质量控制与比例因子转换 var ndviCollection images.map(function(image) { // 筛选质量良好的像元 var good image .select(SummaryQA) .eq(0); // 提取NDVI并转换比例因子 var ndvi image .select(NDVI) .multiply(0.0001) .updateMask(good) .rename(NDVI); // 保留影像日期 return ndvi.copyProperties( image, [system:time_start] ); }); // 8. 计算夏季平均NDVI var summerNDVI ndviCollection .mean() .clip(roi);SummeryQA是MOD13Q1 提供的质量信息值为 0 表示质量良好的植被指数像元。这里使用比较严格的筛选只保留这部分数据。map表示对影像进行遍历操作mean()表示计算均值。第四步制作 NDVI 空间分布图接下来我们进行绘图将计算好的NDVI均值空间分布图在GEE浏览界面给出。// 9. 设置NDVI配色 var ndviVis { min: 0, max: 0.8, palette: [ #A6611A, #DFC27D, #F5F5B5, #A6D96A, #1A9850, #006837 ] }; // 10. 显示夏季平均NDVI Map.addLayer( summerNDVI, ndviVis, Summer NDVI 2024 );运行后地图将展示研究区的 NDVI 分布后续你可以尝试分析为什么有些区域 NDVI 较高而另一些区域较低较高 NDVI 区域是否主要与山地林地有关城区与周边山地是否存在明显差异第五步绘制 NDVI 时间变化曲线为了使案例更加完整我们再绘制一张研究区夏季 NDVI 变化曲线。// 11. 绘制NDVI时间序列 var chart ui.Chart.image.series({ imageCollection: ndviCollection, region: roi, reducer: ee.Reducer.mean(), scale: 1000, xProperty: system:time_start }).setOptions({ title: Summer NDVI in Beijing Region, hAxis: { title: Date }, vAxis: { title: NDVI }, lineWidth: 2, pointSize: 4, legend: { position: none } }); // 12. 输出图表 print(chart);将研究区转换成其外接矩形bounds再进行区域均值统计不然可能会出现投影报错。ui.Chart.image.series命令可以将影像集合中的空间统计结果按时间绘制为曲线是 GEE 中常用的时间序列可视化方法。这里横坐标是影像日期纵坐标是研究区平均 NDVI。第六步导出 GeoTIFF 数据如果你想把处理好的数据导出方便后续在其他软件中分析和使用怎么办我们一般采用下面的步骤导出单景影像。// 13. 导出GeoTIFF Export.image.toDrive({ image: summerNDVI, description: Beijing_NDVI_2024_Summer, folder: GEE_Export, fileNamePrefix: Beijing_NDVI_2024_Summer, region: roi, scale: 250, maxPixels: 1e9, fileFormat: GeoTIFF });运行后右侧的控制栏会出现TASK任务运行后会下载到Google Drive里面直接打开对应的链接找到文件夹保存即可。4.案例总结NDVI 通过近红外与红光波段反射率的归一化差异表征地表绿色植被特征其理论取值范围为 -1 至 1。公式中的分子反映两个波段反射率的差异分母则通过归一化减弱部分由辐照度、观测条件及仪器误差等引起的共同变化使指数更关注两个波段之间的相对关系。在本案例中我们学习了NDVI产品的调用与快速分析那么NDVI指数是否意味着对于植被覆盖的监测就非常完美呢我们来学习一下MODIS产品用户文档中对NDVI经典理论的介绍由此可见NDVI 并不能完全消除大气、土壤背景和观测几何等因素的影响。此外NDVI 对植被变化的响应具有非线性特征在高植被覆盖区域可能出现饱和现象因此需要结合具体研究对象和环境条件解释 NDVI 的变化。综上所述NDVI 既利用了植被特有的光谱差异也利用归一化处理提高了不同观测条件下的可比性但它并不是对植被生长状况的直接、无误差测量。留给你们1将研究区改成自己的家乡或其他感兴趣地区。2将2024年6—8月改成2024年12月—2025年2月并重新生成地图。3比较夏季与冬季的NDVI分布尝试从植被生长季节性角度解释差异。参考文献[1] ROUSE J W, HAAS R H, SCHELL J A, et al. Monitoring vegetation systems in the Great Plains with ERTS[C]//Third Earth Resources Technology Satellite-1 Symposium. Greenbelt: NASA, 1974.[2] TUCKER C J. Red and photographic infrared linear combinations for monitoring vegetation[J]. Remote Sensing of Environment, 1979, 8(2): 127-150.DOI: 10.1016/0034-4257(79)90013-0[3] HUETE A R. A soil-adjusted vegetation index (SAVI)[J]. Remote Sensing of Environment, 1988, 25(3): 295-309. DOI: 10.1016/0034-4257(88)90106-X[4] HUETE A, DIDAN K, MIURA T, et al. Overview of the radiometric and biophysical performance of the MODIS vegetation indices[J]. Remote Sensing of Environment, 2002, 83(1-2): 195-213. DOI: 10.1016/S0034-4257(02)00096-2[5] PETTORELLI N, VIK J O, MYSTERUD A, et al. Using the satellite-derived NDVI to assess ecological responses to environmental change[J]. Trends in Ecology Evolution, 2005, 20(9): 503-510.DOI: 10.1016/j.tree.2005.05.011

相关新闻

FPGA+FX3实现USB3.0高速数据传输:从原理到338MB/s实战调优

FPGA+FX3实现USB3.0高速数据传输:从原理到338MB/s实战调优

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 6:43:38 阅读更多 →
在 Airbyte 中使用 smsmode SMS 连接器:基于 DeclarativeSource 的短信日志与用量同步实战

在 Airbyte 中使用 smsmode SMS 连接器:基于 DeclarativeSource 的短信日志与用量同步实战

数据工程数据集成ETL后端大数据 【免费下载链接】airbyte Open-source data movement for ELT pipelines and AI agents — from APIs, databases & files to warehouses, lakes, and AI applications. Both self-hosted and Cloud. 项目地址: https://gitcode.…

2026/9/24 6:43:38 阅读更多 →
网络工程师必备:10个高频排障命令详解与实战技巧

网络工程师必备:10个高频排障命令详解与实战技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 6:43:38 阅读更多 →

最新新闻

使用 X-CUBE-AI 将 ONNX 模型部署到 STM32全流程

使用 X-CUBE-AI 将 ONNX 模型部署到 STM32全流程

1、首先需要生成一个onnx文件,初始模型并没有经过训练。 嵌入式 AI 最耗费精力的往往不是模型训练,而是编译器版本、DFP 支持包、I2C 通信时序、内存对齐、串口重定向这些底层细节。用未经收敛的初始模型先把工程跑通,能确保在进入复杂的算法…

2026/9/24 7:24:02 阅读更多 →
Modbus RTU通讯不稳?别只查硬件,CRC与轮询时序才是隐形杀手

Modbus RTU通讯不稳?别只查硬件,CRC与轮询时序才是隐形杀手

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 7:24:02 阅读更多 →
ZLG USBCANFD-200U CAN FD通信调试全闭环指南

ZLG USBCANFD-200U CAN FD通信调试全闭环指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 7:24:02 阅读更多 →
大模型API开发实操指南:5个核心方法落地AI应用

大模型API开发实操指南:5个核心方法落地AI应用

随着大语言模型技术的成熟,调用模型API进行应用开发已经成为软件开发的标准流程。许多开发者认为大模型开发门槛极高,但实际上,只要掌握正确的工程化方法,普通开发者也能快速构建实用的应用。本文将循序渐进地介绍大模型API开发的…

2026/9/24 7:24:02 阅读更多 →
Agent 工具越多越好吗?如何让模型准确选到该用的工具

Agent 工具越多越好吗?如何让模型准确选到该用的工具

刚开始做 Agent 时,我们通常会不断给它加工具。 查天气,加一个工具;搜网页,加一个工具;查数据库,再加一个;发邮件、读文件、调用业务 API……最后一个 Agent 身上可能挂着几十个,甚…

2026/9/24 7:24:01 阅读更多 →
SG90舵机与电位器闭环控制:从PWM原理到多平台实战

SG90舵机与电位器闭环控制:从PWM原理到多平台实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 7:23:01 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →