利用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命令用于列出块设备的信息,包括磁…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...

LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...

AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

前端开发者常用网站
Can I use网站:一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use:Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站:MDN JavaScript权威网站:JavaScript | MDN...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...

Qt的学习(二)
1. 创建Hello Word 两种方式,实现helloworld: 1.通过图形化的方式,在界面上创建出一个控件,显示helloworld 2.通过纯代码的方式,通过编写代码,在界面上创建控件, 显示hello world; …...

【多线程初阶】单例模式 指令重排序问题
文章目录 1.单例模式1)饿汉模式2)懒汉模式①.单线程版本②.多线程版本 2.分析单例模式里的线程安全问题1)饿汉模式2)懒汉模式懒汉模式是如何出现线程安全问题的 3.解决问题进一步优化加锁导致的执行效率优化预防内存可见性问题 4.解决指令重排序问题 1.单例模式 单例模式确保某…...