ENVI扩展工具:曲线拟合工具(定量遥感助手)
定量遥感或称遥感量化遥感研究,主要指从对地观测电磁波信号中定量提取地表参数的技术和方法研究,区别于仅依靠经验判读的定性识别地物的方法。它有两重含义:遥感信息在电磁波的不同波段内给出的地表物质的定量的物理量和准确的空间位置;从这些定量的遥感信息中,通过实验的或物理的模型将遥感信息与地学参量联系起来,定量的反演或推算某些地学或生物学信息。
——来自百度百科。
在定量遥感研究中,通常需要利用实测数据与星上数据(遥感影像)构建回归方程,一般有线性、指数、对数等,然后利用方程反演得到所需的观测指标。
可参考博文“ENVI支持下利用环境小卫星数据进行水质监测方案”学习定量遥感的操作流程:http://blog.sina.com.cn/s/blog_764b1e9d0100rh1m.html
在上述流程的反演模型构建步骤中,使用ENVI的ROI工具将图像中对应实测点位置的DN值提取出来,在Excel中完成建模,操作较为繁杂。
本文提供工具可一步实现建模和反演操作。
安装方法
方法1:使用 ENVI App Store 进行 ENVI 扩展工具的安装与管理。
App Store 下载地址:envi.geoscene.cn/appstore
方法2:手动下载 https://envi.geoscene.cn/appstore/curefiting
下载 zip 压缩包并解压,将得到的 extensions 文件夹拷贝到如下 ENVI 安装路径,覆盖同名文件夹即可:
-
ENVI 5.3 - C:\Program Files\Exelis\ENVI53\
-
ENVI 5.4 及以上 - C:\Program Files\Harris\ENVI5x\
重启 ENVI 即可使用。
功能介绍
1) 重启ENVI,打开建模需要用到的图像数据(本例中使用taihu_b4/b3.dat);
2) 在工具箱中打开工具/Extensions/Curve Fitting;
3) 在弹出对话框中,选择输入数据,单击OK。如下图所示:
4) 在弹出对话框中选择实测数据文本文件(反演点.txt),单击打开。
注:此文本文件中需要包含实测点的经度、纬度、实测值信息,如下图所示。
5) 在弹出的Input ASCII File面板中,根据自己数据情况设置如下参数,单击OK。
-
Data Starts at Line:有效数据起始的行号,本例为第2行;
-
Longitude Column:经度对应的列号,本例为第3列;
-
Latitude Column:纬度对应的列号,本例为第2列;
-
True Value Column:实测值对应的列号,本例为第4列。
6) 弹出工具主面板如下图所示。功能描述:
按钮 |
功能 |
Apply to File |
利用拟合结果方程,应用到输入栅格图像,得到反演结果。 |
Save As CSV File |
保存表格数据到csv文件中,可以在Excel进行数据分析。 |
Save As Shapefile |
保存点状数据到矢量文件中,属性包含经度、纬度、文件坐标、实测值、图像DN值等信息。 |
Save Plot to PNG Image |
保存右侧绘图窗口为png图片。 |
Reset Plot Range |
重置右侧绘图窗口中X和Y轴范围。 |
Online Help |
访问本博文。 |
注:在右侧绘图窗口中可双击坐标轴、公式、曲线等内容,弹出属性设置对话框,修改颜色、字体、字号、线宽等属性。
图:工具主界面
本工具提供了 6 种模型可供使用,分别为:
模型 |
IDL函数 |
公式 |
Linear |
linfit |
y = a + bx |
Quadratic |
poly_fit |
y = a + bx + cx2 |
Exponential |
comfit |
y = a*bx+c |
Geometric |
comfit |
y = a*xb+c |
Hyperbolic |
comfit |
y = 1/(a+bx) |
Logsquare |
comfit |
y = a+b*log(x)+c*log(x)2 |
结果欣赏
生成的csv文件:
生成的矢量结果与属性表:
生成的PNG图片:
反演结果,为了显示效果更好,手动修改颜色表为Rainbow。红色部分表示叶绿素浓度较高。
操作方法:图层右键 > Change Color Table > Rainbow
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了