利用Pix4D和ArcGIS计算植被盖度
除了水文分析和沟道形态分析之外,在实际工作中还要计算植被盖度!
植被盖度,也称为植被覆盖率或植物覆盖度,是指某一地表面积上植物冠层垂直投影面积占该地表面积的比例。它通常以百分比的形式表示,是描述地表植被状况的一个重要参数。植被盖度不仅反映了植物个体的大小和密度,还体现了群落结构和生态系统的健康状态。
本次计算植被盖度所用到的软件为:Pix4Dmapper和Arcgis10.8.1
步骤1:处理无人机影像(使用Pix4D)
1. 创建项目:
- 打开Pix4Dmapper。
- 创建一个新项目,选择“开始一个新项目”,输入项目名称,选择项目文件夹(路径无中文)。
- 导入无人机拍摄的原始影像。
- 在处理选项模板处选择第一个——“3Dmap”

注意:如果你的无人机携带的是RGB相机,你最后想要求一个植被指数的时候,千万不要选Ag Mulispectral这个模板,因为相机中不带有近红外波段,无法进行处理。当然,如果你携带的相机带有近红外波段的话,并且你恰好需要一个植被指数如NDVI的话,就可以选择它。
我们后续会使用一些其他适用于RGB相机的植被指数来反映植被的生长情况。
2. 设置坐标系统:
- 确保设置了正确的坐标系统,这样后续才能准确匹配其他地理数据。一般会自动识别坐标系统,比如我的项目坐标系统为WGS84_UTM_Zone49N。


3. 影像处理:
- 在“1. 初始处理”阶段,软件会自动进行影像匹配,生成稀疏点云。
- 在“2. 点云与网格”阶段,选择生成密集点云和表面模型。
- 在“3. DSM、正射影像和指数”阶段,生成数字表面模型(DSM)和正射影像。
该阶段耗时较长,请耐心等待

- 在结束后可以导出质量报告。

- DSM和正射影像DOM结果都被保存在3_dsm_ortho文件夹下,其中DSM被保存在1_dsm文件夹,DOM被保存在2_mosaic文件夹。

- 三维网格纹理在3d_mesh中,加密电云在point_cloud中

4. 生成植被指数:
当使用无人机携带的RGB相机时,我们无法直接计算NDVI(归一化差异植被指数),因为NDVI需要近红外(NIR)波段和红光(Red)波段的信息,而普通的RGB相机只能捕捉红光、绿光和蓝光三个波段的信息。为了弥补这一不足,研究人员开发了一些基于RGB波段的植被指数,这些指数可以在一定程度上反映植被的生长状况。如NGRDI、EGRBDI、RGBVI、NGBDI等,下面是几个常用的替代指数:

补充:对于上面部分指数的解释
1. NGRDI (Normalized Green-Red Difference Index) 归一化绿红差异指数
适用场景: NGRDI 主要用于评估植物的绿色程度,因为绿色植物的叶绿素含量较高,可以更好地吸收红色光而反射绿色光。因此,在评估植物生长状态、健康状况及病害监测方面非常有用。
2. EGRBDI (Enhanced Green Red Blue Difference Index) 增强型绿红蓝差异指数
适用场景: EGRBDI 是一个较为特殊的植被指数,它考虑了红光、蓝光与绿光的关系,能够更细致地反映植物的生理状态。这种指数在特定的研究中可能有助于区分不同类型的植被或识别植物的特定生理特征。
3.RGBVI (Red Green Blue Vegetation Index) 红绿蓝植被指数(最适用于本实验)
适用场景: RGBVI 结合了红、绿、蓝三种颜色的信息,适用于基于可见光范围内的图像来评估植被覆盖度和健康状况。它对于那些需要使用普通相机获取数据的应用特别有用,比如无人机航拍或手机拍摄的植被监测。
4.NGBDI (Normalized Green-Blue Difference Index) 归一化绿蓝差异指数
适用场景: NGBDI 可以帮助评估植被的健康状态,特别是在水体附近的植被监测中,由于蓝光更容易被水吸收,因此这个指数可以帮助区分水生植被和陆地植被。
5.GLI (Green Leaf Index) 绿叶指数(又名VDVI)
适用场景: GLI 能够有效地突出绿色植物的特征,适用于监测植物的生长状态、健康水平以及植被覆盖度。它对于需要快速评估大范围植被状况的应用尤其有用。
————————————分割————————————
在Pix4D中,点击“视图”->“指数计算器”。可以添加我们的一些指数。

最后要注意在处理选项中勾选指数(根据需要判断是否勾选R、G、B以及灰度部分,建议不勾选),并重新处理第三部分(耗时很长,至少三个小时)
补充:如果你的指数部分已经构建过一次了,那么你可以不用再进行第三部分了(耗时实在是太长了),你可以在指数计算器中添加并编辑新的指数,添加后点击生成即可。

结束后在文件夹内即可找到对应的图像:

步骤2:导入和分析数据(使用ArcGIS)
1. 导入数据:
- 打开ArcGIS。
- 通过“添加数据”按钮,导入步骤1中生成的正射影像和植被指数图像。

2. 使用植被指数计算植被盖度:
- 利用植被指数,可以通过设定阈值来确定哪些区域是植被。通常,这些指数值范围为-1到1,植被通常表现为正值,具体阈值可根据实际情况调整(依据遥感数字图像处理教程,植被指数在0.4~0.5之间为绿色健康植物,若只考虑覆盖程度而不考虑健康状况则降低阈值)。
- 使用“栅格计算器”来应用阈值,生成植被覆盖区域的二值图像。例如:
Con("xxxxx.tif" > 0.25,1,0)
注意:阈值的选定是动态的,需要进行多次尝试,对比生成后与原tif图像的区别,选择最契合的阈值。因为植被指数≠NDVI,对于NDVI来说,我们可以直接认为植被在某数值间是健康的,而对于这种不常见的指数而言,我们需要对比不同阈值的契合度选择最合适的值作为判断植被的标准。
如下图所示,我经过多次尝试,最后选择了一个最契合RGBVI植被指数的图像(阈值设置为0.1,仅供参考)。在实际操作中,我们需要进行多次的反复对比。
- 等待处理完成后,会生成一个新的栅格图层,其中1表示植被,0表示非植被区域。

3. 计算植被盖度百分比:
- 打开“属性表”来统计植被(值为1)的像素总数和总像素数。(Count)
- 计算植被盖度百分比:
(植被像素数 / 总像素数) * 100%
可以导出到excel表格进行简要计算。
相关文章:
利用Pix4D和ArcGIS计算植被盖度
除了水文分析和沟道形态分析之外,在实际工作中还要计算植被盖度! 植被盖度,也称为植被覆盖率或植物覆盖度,是指某一地表面积上植物冠层垂直投影面积占该地表面积的比例。它通常以百分比的形式表示,是描述地表植被状况的…...
用docker Desktop 下载使用thingsboard/tb-gateway
1、因为正常的docker pull thingsboard/tb-gateway 国内不行了,所以需要其它工具来下载 2、在win下用powershell管理员下运行 docker search thingsboard/tb-gateway 可以访问到了 docker pull thingsboard/tb-gateway就可以下载了 3、docker Desktop就可以看到…...
从视频中学习的SeeDo:VLM解释视频并生成规划、代码(含通过RGB视频模仿的人形机器人OKAMI、DexMV)
前言 在此文《UMI——斯坦福刷盘机器人:从手持夹持器到动作预测Diffusion Policy(含代码解读)》的1.1节开头有提到 机器人收集训练数据一般有多种方式,比如来自人类视频的视觉演示 有的工作致力于从视频数据——例如YouTube视频中进行策略学习 即最常见…...
项目集群部署定时任务重复执行......怎么解决???
项目集群部署在不同服务器,导致定时任务重复执行 1、可以在部署时只让一个服务器上有定时任务模块,不过这样如果这台服务器宕机,就会导致整个定时任务崩溃 2、使用分布式锁,使用redis setNX命令加lua脚本在定时任务执行的时候只…...
使用JUC包的AtomicXxxFieldUpdater实现更新的原子性
写在前面 本文一起来看下使用JUC包的AtomicXxxxFieldUpdater实现更新的原子性。代码位置如下: 当前有针对int,long,ref三种类型的支持。如果你需要其他类型的支持的话,也可以照葫芦画瓢。 1:例子 1.1:普…...
vue3组件通信--props
目录 1.父传子2.子传父 最近在做项目的过程中发现,props父子通信忘的差不多了。下面写个笔记复习一下。 1.父传子 父组件(FatherComponent.vue): <script setup> import ChildComponent from "/components/ChildComp…...
leetcode-75-颜色分类
题解(方案二): 1、初始化变量n0,代表数组nums中0的个数; 2、初始化变量n1,代表数组nums中0和1的个数; 3、遍历数组nums,首先将每个元素赋值为2,然后对该元素进行判断统…...
【嵌入式原理设计】实验三:带报警功能的数字电压表设计
目录 一、实验目的 二、实验环境 三、实验内容 四、实验记录及处理 五、实验小结 六、成果文件提取链接 一、实验目的 熟悉和掌握A/D转换及4位数码管、摇杆、蜂鸣器的联合工作方式 二、实验环境 Win10ESP32实验开发板 三、实验内容 1、用摇杆传感器改变接口电压&…...
C#中的接口的使用
定义接口 public interface IMyInterface {int MyProperty { get; set; }void MyMethod(); } 实现类 internal class MyClass : IMyInterface {public int MyProperty { get; set; }public void MyMethod(){Console.WriteLine("MyMethod is called");} } 目录结构…...
记一次真实项目的性能问题诊断、优化(阿里云redis分片带宽限制问题)过程
前段时间,接到某项目的压测需求。项目所有服务及中间件(redis、kafka)、pg库全部使用的阿里云。 压测工具:jmeter(分布式部署),3组负载机(每组1台主控、10台linux 负载机) 问题现象࿱…...
LeetCode - 4. 寻找两个正序数组的中位数
. - 力扣(LeetCode) 题目 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1: 输入:nums1 …...
算法设计与分析——动态规划
1.动态规划基础 1.1动态规划的基本思想 动态规划建立在最优原则的基础上,在每一步决策上列出可能的局部解,按某些条件舍弃不能得到最优解的局部解,通过逐层筛选减少计算量。每一步都经过筛选,以每一步的最优性来保证全局的最优性…...
【实战篇】GEO是什么?还可以定义新的数据类型吗?
背景 之前,我们学习了 Redis 的 5 大基本数据类型:String、List、Hash、Set 和 Sorted Set,它们可以满足大多数的数据存储需求,但是在面对海量数据统计时,它们的内存开销很大,而且对于一些特殊的场景&…...
SpringBoot最佳实践之 - 项目中统一记录正常和异常日志
1. 前言 此篇博客是本人在实际项目开发工作中的一些总结和感悟。是在特定需求背景下,针对项目中统一记录日志(包括正常和错误日志)需求的实现方式之一,并不是普适的记录日志的解决方案。所以阅读本篇博客的朋友,可以参考此篇博客中记录日志的…...
【Flutter】状态管理:高级状态管理 (Riverpod, BLoC)
当项目变得更加复杂时,简单的状态管理方式(如 setState() 或 Provider)可能不足以有效地处理应用中状态的变化和业务逻辑的管理。在这种情况下,高级状态管理框架,如 Riverpod 和 BLoC,可以提供更强大的工具…...
OAK相机的RGB-D彩色相机去畸变做对齐
▌低畸变标准镜头的OAK相机RGB-D对齐的方法 OAK相机内置的RGB-D管道会自动将深度图和RGB图对齐。其思想是将深度图像中的每个像素与彩色图像中对应的相应像素对齐。产生的RGB-D图像可以用于OAK内置的图像识别模型将识别到的2D物体自动映射到三维空间中去,或者产生的…...
smartctl硬盘检查工具
一、smartctl工具简介 Smartmontools是一种硬盘检测工具,通过控制和管理硬盘的SMART(Self Monitoring Analysis and Reporting Technology),自动检测分析及报告技术)技术来实现的,SMART技术可以对硬盘的磁头单元、盘片电机驱动系统、硬盘…...
清空MySQL数据表
要清空 MySQL 数据表,您可以使用 TRUNCATE 或 DELETE 命令 使用 TRUNCATE 命令 TRUNCATE 命令用于删除表中的所有数据,并重置自增 ID(如果存在): TRUNCATE TABLE table_name;将 table_name 替换为您要清空的表的名称…...
2024年妈杯MathorCup大数据竞赛A题超详细解题思路
2024年妈杯大数据竞赛初赛整体难度约为0.6个国赛。A题为台风中心路径相关问题,为评价预测问题;B题为库存和销量的预测优化问题。B题难度稍大于A题,可以根据自己队伍情况进行选择。26日早六点之前发布AB两题相关解题代码论文。 下面为大家带来…...
Kafka系列之:Kafka集群磁盘条带划分和Kafka集群磁盘扩容详细方案
Kafka系列之:Kafka集群磁盘条带划分和Kafka集群磁盘扩容详细方案 一、lsblk命令二、Kafka节点磁盘条带化方案一三、Kafka节点磁盘条带化方案二四、理解逻辑区块LE五、查看kafka节点磁盘条带划分情况六、Kafka节点磁盘扩容一、lsblk命令 lsblk命令用于列出块设备的信息,包括磁…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
