【ENVI入门系列】27.ENVI Modeler建模工具

版权声明:本教程涉及到的数据仅供练习使用,禁止用于商业用途。

目录

ENVI Modeler建模工具

1       概述

2       ENVI Modeler入门

3       构建工作流

4       生成ENVI扩展工具

5       图像批处理

6       生成Metatask

7       构建多源数据

1  概述

ENVI 5.5版本开始提供全新建模工具(ENVI Modeler)。ENVI Modeler建模工具提供可视化界面,通过拖拽方式对ENVI现有功能灵活“组装”,可零代码实现复杂工作流和图像批处理的构建。通过该工具构建的工作流程还可以生成为ENVI扩展工具和发布为企业级(ENVI Services Engine)遥感图像服务。

ENVI Modeler具有如下技术特点:

  • 提供友好的用户界面和优秀的用户体验
  • 零代码构建批处理、工作流
  • 可生成IDL代码、Python代码
  • 可一键将模型创建为ENVITask,用于其他模型中
  • 支持保存和导入模型,能够与他人分享模型
  • 支持将模型任务提交到远程ENVI Services Engine服务器运行
  • 可将模型生成为ENVI扩展工具
  • 可将模型发布到ArcMap、ArcGIS Pro的工具箱
  • 可发布为企业级(ENVI Services Engine)遥感图像服务。

2 ENVI Modeler入门

启动ENVI Modeler有两种方式:

  • 工具箱:/Task Processing/ENVI Modeler
  • 主菜单:Display > ENVI Modeler

ENVI Modeler最为典型的应用是构建工作流和图像批处理。下面我们以一个简单的例子介绍ENVI Modeler的使用方法。需要实现的功能如下图所示:

图1.1 ENVI Modeler入门示例工作流

下面开始建模:

(1)在Toolbox工具箱中,选择/Task Processing/ENVI Modeler。首次启动时会查询所有可用的ENVITasks,需要一些时间,之后启动速度较快。

(2)ENVI Modeler主界面分为如下几个区域:

  • 菜单栏:主要包含文件操作、编辑处理、代码生成、服务器、帮助等功能;
  • 工具栏:主要包含新建/打开/保存模型、运行模型、模型布局等操作;
  • Basic Nodes:基本节点。包含可以作为输入节点的文件(File)、数据集(Dataset)、数组(Array of Values)等;以及数据管理器(Data Manager)、视图(View);迭代(Iterator)用于构建图像批处理;聚合(Aggregator)用于收集多个元素为数组。Input/Output Parameters用于开放模型参数,便于构建ENVI扩展工具或生成Metatask(从而用于其他流程)。
  • Tasks:图像处理功能,用于构建工作流

(3)在左侧Basic Nodes中,将Dataset用鼠标拖拽到右侧空白区(也可以通过双击实现)。弹出Select Type对话框,单击Raster按钮。弹出Data Selection对话框,选择ENVI自带示例数据:

  • C:\Program Files\Harris\ENVI5x\data\qb_boulder_msi

注:如果没有设置输入数据,可以在Raster节点中单击选择栅格图像。

(4)在左侧Tasks中搜索isodata,将ISODATA Classification用鼠标拖拽到右侧空白区(也可以通过双击实现)。然后用鼠标左键在[Raster]节点和ISODATA节点之间连线。由于ISODATA只有一个输入栅格参数,所以自动进行了参数设置,可通过双击连线查看参数设置情况。

 

(5)单击ISODATA节点的图标,可以设置ISODATA非监督分类的参数。因为此步骤结果并不是最终结果,所以建议Output Raster默认为空即可。

(6)在左侧Tasks中搜索smooth,将Classification Smoothing用鼠标拖拽到右侧空白区(也可以通过双击实现)。然后用鼠标左键在ISODATA节点和Classification Smoothing节点之间连线。可通过双击连线查看参数设置情况。

下面是一些常用操作方法:

  • 在视图中,鼠标滚轮可以缩放;按住鼠标滚轮可以平移。
  • 对于节点,可以单选、框选、按住Ctrl多选、全选(Ctrl+A)。
  • 对于选中节点可以复制(Ctrl+C)、粘贴(Ctrl+V)、剪切(Ctrl+X)、删除(Delete)。
  • 鼠标右键菜单中同样包含上述功能,除此之外还有对齐、帮助、断点等。
  • 在建模过程中,可以撤销(Ctrl+Z)、重做(Ctrl+Y)。
  • 请及时保存模型(Ctrl+S)。
  • 工具栏可以居中显示模型。
  • 工具栏可以自动排版模型,如果不满意排版效果,可以撤销(Ctrl+Z)。

(7)因为Classification Smoothing是最后一个处理步骤,可单击设置输出文件路径,如果不设置,则默认输出为虚拟栅格或临时目录。

(8)为了将结果自动添加到Data Manager并加载显示,在左侧Basic Nodes中分别将Data ManagerView拖拽到Classification Smoothing节点右侧,并与之相连,如下图所示:

(9)单击工具栏Run按钮,运行模型。

3  构建工作流

本章节以变化检测为例,介绍利用ENVI Modeler构建较复杂工作流的过程。首先,我们确定变化检测处理流程如下。

下面开始介绍建模过程。

(1)启动ENVI,打开两个时相的数据(“构建工作流”文件夹内的time1.dat和time2.dat)。

(2)启动ENVI Modeler。

(3)单击ENVI Modeler工具栏按钮 ,新建模型。

(4)在左侧Basic Nodes中,将Dataset用鼠标拖拽到右侧空白区(也可以通过双击实现)。弹出Select Type对话框,单击Raster按钮。弹出Data Selection对话框,选择前一时相数据(dat);

注:如果没有设置输入数据,可以在Raster节点中单击 选择栅格图像。

(5)重复步骤3,再添加后一时相数据(dat),效果如下图所示:

注:建议先将模板保存到本地文件中,以防丢失。每个步骤完成后请及时保存。

(6)在左侧Tasks中搜索quac,将QUAC用鼠标拖拽到右侧空白区(也可以通过双击实现)。然后鼠标左键连接[Raster]节点和QUAC节点。由于QUAC只有一个输入栅格参数,所以自动进行了参数设置,可通过双击连线查看参数设置情况。

(7)重复步骤4,再添加一个QUAC,并将后一时相数据QUAC连接。效果如下图所示:

注:单击QUAC节点中的 可以设置QUAC执行参数。如下图所示,因为QUAC为中间结果,所以可以设置Output Raster为虚拟栅格(Virtual Raster),否则将生成为临时文件。

(8)依次添加如下节点:

Task名称

功能

重要说明

Spectral Index

计算NDVI

需要添加2个节点。并设置参数如下:

Index:NDVI

Image Intersection

计算重叠区

因为计算NDVI差值需要2个数据行列数一致。

将2个NDVI结果均连接到计算重叠区节点。

将前一时相NDVI的Output Raster设置为计算重叠区节点的Input Raster 1

将后一时相NDVI的Output Raster设置为计算重叠区节点的Input Raster 2

Image Band Difference

计算差值

计算重叠区Output Raster 1设置为计算差值Input Raster 1

计算重叠区Output Raster 2设置为计算差值Input Raster 2

Auto Change Threshold Classification

自动阈值分割

连接节点即可。使用默认的算法:

Thresholding Method:Otsu

Classification Smoothing

平滑处理

去除锯齿。

ClassificationAggregation

聚合处理

去除小斑块。

如果想将最终结果保存在本地文件中,可以在设置此节点的Output Raster,否则将保存在临时文件中。

效果如下图所示:

(9)在左侧Basic Nodes中,依次将Data ManagerView节点拖拽到右侧,并将聚合处理节点与之相连。目的是将最终结果添加到Data Manager和加载显示。最终效果如下图:

(10)单击工具栏Run按钮,运行模型。

4  生成ENVI扩展工具

上一章节介绍了ENVI Modeler构建工作流的方法,本章节将以同样的功能(变化检测)为例,介绍将模型生成为ENVI扩展工具的方法。我们需要对上一章节的模型进行改造。

下面开始介绍过程。

(1)启动ENVI Modeler。

(2)打开上一章节构建的模型:model

注:建议将此模型另存为一份(File > Save As…)。

(3)删除如下图所示的两个节点。可以框选、Ctrl多选等,然后按Delete。

(4)在左侧Basic Nodes中,将Input Parameters用鼠标拖拽到右侧空白区(也可以通过双击实现)。然后将Input Parameters与第一个QUAC连接起来。在弹出的Connect Parameters对话框中单击QUAC的Input Raster,如下图所示。单击OK。

(5)将然后将Input Parameters与第二个QUAC连接起来,并在弹出的Connect Parameters对话框中依次单击Add New Input(s)和右侧的Input Raster,如下图所示。单击OK。

(6)最后将Input ParametersClassification Aggregation连接起来,并在弹出的Connect Parameters对话框中依次单击Add New Input(s)和右侧的Output Raster URI,如下图所示。单击OK。

(7)到目前为止,我们开放了两个时相的输入栅格、输出路径3个参数。效果如下图所示:

(8)单击Run按钮,可以看到此模型生成的用户界面,可以交互的设置参数。与使用ENVI自带工具没有区别。

注:如果想开放其他参数,可以将Input Parameters与对应的节点连接并设置参数对应关系即可。目前开放的参数无法调整顺序,请按照合理顺序依次添加。

注:另外可以单击Input Parameters节点的 ,对每个参数名进行修改。

(9)接下来我们将其生成为ENVI扩展工具,之后便可以在工具箱Extensions文件夹中使用此功能了。单击菜单 Code > Generate IDL Program,可以生成IDL代码。然后单击Create Extension按钮,在弹出对话框中输入工具名。不建议使用中文名!在输入中文时,有可能引起ENVI崩溃!可以先在记事本中编辑好,然后粘贴到文本框中。单击OK即可。会弹出成功提示。

无需重启ENVI,即可使用:

可以根据上述流程多开放几个参数,并修改参数名,模型如下图所示:

运行效果:

5  图像批处理

利用ENVI Modeler可以轻松构建批处理。在批处理时,我们需要自动设定输出文件名。ENVI目前提供了一个ENVIGenerateFilenameTask可以自动生成文件名,但是只能设定固定前缀+索引+后缀”的格式,会丢失输入文件名。为了更方便地进行批处理,特意编写了一个自定义ENVITask——Generate_Output_Filename,可以设定输入文件名+后缀”的格式。

请将ENVI_Generate_Output_Filename文件夹拷贝到custom_code文件夹:

  • C:\Program Files\Harris\ENVI5x\custom_code\

本章节以批量计算NDVI、去除异常值、密度分割流程为例进行介绍。

(1)启动ENVI Modeler。

(2)在左侧Basic Nodes中,将File拖拽到右侧空白区(也可以通过双击实现)。在弹出的Select Type对话框中选择Raster。然后可以多选栅格图像文件(ENVI格式二进制文件、hdr文件、tif文件等能够被ENVI直接识别的均可)。选择hdr和time2.hdr文件。

节点效果如下图所示:

注:本节点同样可以使用Dataset类型。

(3)在左侧Basic Nodes中,将Iterator用鼠标拖拽到右侧空白区。并将RasterIterator节点相连。如下图所示。

(4)在左侧Tasks中,将Spectral Index用鼠标拖拽到右侧空白区,并将Iterator与之相连。单击节点中 设置参数如下:

建模效果如下:

(5)按照前边的步骤,依次在后边添加如下节点:

Task名称

功能

重要说明

Band Math

去除异常值

设置节点如下参数:

Expression:b1>(-1)<1

Output Raster:Virtual Raster

Color Slice Classification

密度分割

设置节点如下参数:

Data Minimum:0

Data Maximum:1

Number of Ranges:5

Color Table Name:CB-Greens

Reverse Color Table:No

建模效果如下图所示:

(6)下面添加自动生成输出文件名的Task。在左侧Tasks中,将Generate Output Filename用鼠标拖拽到右侧空白区,并连接在Iterator后边。并设置如下参数。输出路径(Output Directory)可根据自己需要进行设置。

Generate Output Filename参数说明:

  • Input File/Input Raster:二者选其一。设置输入文件名,获取前缀。
  • Output File Extension:设置后缀。
  • Output Directory:设置输出路径。
  • Delete Existing File:是否删除已存在输出文件。

然后将Generate Output FilenameColor Slice Classification相连,在弹出的对话框中按照如下进行设置。

建模效果如下图所示:

(7)在左侧Basic Nodes中,依次将Data ManagerView节点拖拽到右侧,并将Color Slice Classification节点与之相连。目的是将最终结果添加到Data Manager和加载显示。最终效果如下图:

(8)单击Run按钮执行模型。

6  生成Metatask

ENVI Modeler除了生成ENVI扩展工具外,还可以生成IDL代码、Python代码等。另外还可以生成Metatask(即多个task构建的函数链)。然后便可以用于其他模型中。

比如我们希望获取森林变化检测的矢量结果,而第3章节我们已经构建了森林变化检测的模型,现在基于此模型构建Metatask,然后用于生成矢量结果。

下面介绍操作流程:

(1)在ENVI Modeler中打开模型“model

(2)将模型另存为model

(3)删除模型中最后的ViewData Manager节点。

(4)将Basic Nodes中的Output Parameters拖拽到模型最后,并与Classification Aggregation节点相连。效果如下图所示:

(5)单击ENVI Modeler菜单 Code > Generate Metatask,可以生成task文件。然后单击Publish Task按钮。按照下图进行设置。其中Name不能包含空格,Display Name可以有空格,其他默认即可。单击OK,提示成功,然后关闭Metatask对话框。

(6)在ENVI Modeler中新建模型。添加两个Dataset,分别选择dattime2.dat

(7)在Tasks列表中搜索forest,将Forest Change Detection Task拖拽到右侧空白区。将两个Raster节点与之相连。并分别设置连线参数。

(8)在Tasks列表中搜索shapefile,将Convert Classification to Vector Shapefile拖拽到右侧空白区,并与Forest Change Detection Task相连。并添加View、Data Manager。效果如下图所示:

7   构建多源数据

由于有了前几个章节的学习,这里不再描述建模过程,直接提供给大家一个建模结果。

本例实现了构建多源数据的功能。这里用到了一个新的节点Aggregation(聚集),可以将多个元素组合成数组。

具体实现功能是基于多光谱、DEM数据构建多源数据。结果波段组成如下:

  • 原始多光谱
  • NDVI——归一化植被指数
  • SAVI——土壤调整植被指数
  • 原始DEM
  • 由DEM计算的坡度

练习数据位于“构建多源数据”文件夹内。

建模结果如下图所示:

 

posted @ 2022-07-25 11:15  ENVI-IDL技术殿堂  阅读(2423)  评论(0编辑  收藏  举报