导出 ENVI 模型
课程内容
第 1 课,共 1 课
导出 ENVI 模型
本快速指南概述了导出 ENVI 模型的三种不同方法。
创建 ENVI 模型后,除了直接在建模器窗口中运行之外,还有其他方式可以与之交互和运行模型。您可以:
- 生成 IDL 程序或 ENVI 扩展
- 生成 ENVI 元任务
- 生成 Python 程序
您可以从 ENVI 建模器菜单栏的 Code 选项卡访问这些选项。
在本快速指南中,您将打开一个随 ENVI 发布的示例模型,并进行必要的修改,以将其导出为上述三个选项中的每一个。
- 1
打开 ENVI 建模器:Display > ENVI Modeler。将出现一个带有空布局窗口的 Untitled 标签页。 2. 2
选择 File > Open Example,展开随 ENVI 发布的示例模型列表。 3. 3
单击 Simple Model。这将显示如下所示的模型:

- 4
为了简化本快速指南的内容,我们可以移除注释节点。
按住 Ctrl 键并左键单击每个灰色的注释节点以高亮显示全部 4 个。右键单击并选择 Delete。
这是我们将在本快速指南中使用的基础模型:

生成 IDL 程序或 ENVI 扩展
您可以从 ENVI 建模器生成 IDL pro 代码。如果您正在学习如何在 IDL 中编码,并希望开始构建无需图形用户界面即可运行的自动化工作流,这会很有帮助。您可以在 ENVI 中测试工作流,然后创建相应的模型,最后将模型导出为 pro 代码,可以直接使用,或作为更复杂代码的起点。
您必须拥有 ENVI+IDL 许可证才能使用此功能
要从 ENVI 建模器生成 IDL 代码:
- 1
从建模器菜单栏中选择 Code > Generate IDL Program。
这将在新的程序窗口中打开相应的 IDL 代码,如下所示:

在此,您可以:
- 单击 Save 按钮,将代码保存为 IDL 程序文件 (.pro)。
- 单击 Run 按钮,运行程序。
- 单击 Create Extension 按钮,创建 ENVI 扩展。
让我们创建一个扩展:
- 2
在 IDL 程序窗口中,选择 Create Extension 按钮。这将打开 Create ENVI Extension 对话框。 2. 3
提供您选择的 Extension Name,例如:Calculate ISODATA。
扩展位置默认设置为 ENVI 安装目录中的 extensions 文件夹。

- 4
单击 OK。您将看到一个信息对话框,详细说明扩展文件的保存位置:

您的新 Extension 现在将出现在 ENVI Toolbox 的 Extensions 文件夹下:

- 5
双击您的新扩展。这将打开模型的 Input Parameters 面板,在本例中,该模型仅需要一个输入栅格即可运行。 2. 6
单击 Input Raster 旁边的省略号。这将打开 Data Selection 对话框。 3. 7
单击打开文件图标,并导航到 ENVI 安装路径中的 "data" 目录:
Windows: C:\Program Files\NV5\ENVIxx\data (xx 是版本号)
Linux: /user/local/NV5/envixx/data
Mac: /Applications/NV5/envixx/data
4. 8
单击 Open。在 Data Selection 对话框中高亮显示 qb_boulder_msi,然后单击 OK。 5. 9
在原始对话框上单击 OK。这将启动模型运行,并生成一个输出分类栅格,显示在 ENVI 主窗口中。
生成元任务
元任务是包含其他任务的任务。如果您的模型包含许多元素,您可以创建元任务来封装多个任务节点。
根据您是想保存并重新使用新任务,还是仅想将其用作当前模型的一部分,有两种选项:
- 若要将所有节点折叠到模型内的单个节点中,请单击 Edit > Create Task from Model。
- 要将模型保存为将存储在磁盘上并可在任务列表中的其他 ENVI 任务中使用的任务,请单击 Code > Generate Metatask。
在从模型创建任务或元任务之前,您应该为模型定义输入和输出参数。
数据管理器节点将被忽略。
创建的任务将具有一个输入箭头(如果原始模型中存在 Input Parameters 节点)和一个输出箭头(如果原始模型中存在 Output Parameters 节点)。
让我们考虑上面简单示例模型的一个变体。输入是使用数据集节点提供的,而不是输入参数节点,我们将其硬编码到同一输入文件的路径。我们还移除了数据管理器输出节点,只保留了视图节点。

由于此模型没有 Input Parameters 或 Output Parameters 节点,您创建的元任务将没有用于输入或输出的箭头。下图显示了选择 Edit > Create Task from Model 后创建的新无标题布局窗口的内容。任务名称将与模型名称匹配,在本例中为 ISODATA_smooth:

为了向模型提供输入和/或输出,我们可以添加输入和输出参数节点:

您可以在此处下载此版本的模型:
[ISODATA_smooth.model
2 KB
下载向下箭头,下方有水平线](assets/ISODATA_smooth.model)
- 1
下载上面提供的 ISODATA_smooth.model 文件,并将其保存到本地文件。 2. 2
将模型文件拖放到 ENVI 建模器布局窗口中,或者选择 File > Open,然后导航到保存此模型的文件夹。 3. 3
要从该模型创建任务,请选择 Edit > Create Task from Model。
这次,创建的任务将具有输入和输出箭头,如下所示:

- 4
单击 ISODATA_smooth 元任务节点中的文件夹图标(在上图中用红色高亮显示)。
这将打开一个新的布局窗口,显示元任务的内容。
现在,让我们探索创建一个独立的元任务,而不是将模型折叠为单个任务:
- 5
选择 Code > Generate Metatask。会出现一个 Metatask 面板,显示任务代码。
在此,您可以:
- 单击 Save 按钮,将代码保存为任务文件 (.task)。
- 单击 Run 按钮,运行任务。
- 单击 Show as IDL Program 按钮,创建 IDL 程序。
- 单击 Publish Task 按钮,发布任务。
- 6
选择 Publish Task。这将打开一个 Publish Metatask 对话框,提示您为新元任务提供名称、显示名称、描述、修订版本、标签和位置。

- 7
保留对话框中的默认输入,类似于上面屏幕截图所示。 2. 8
单击 OK。您将收到一条消息,告知文件已保存。
您的新任务现在将出现,并可在 Tasks 面板中搜索到:

生成 Python 程序
如果您计划使用 Python 与 ENVI 任务引擎(在新标签页中打开) 交互,您也可以从模型生成 Python 代码。
Python 程序不会显示结果,也不会将其添加到 ENVI 的数据管理器中。要保留输出,您必须使用 Output Parameters 节点。
Python 程序需要使用输出参数节点来将输出栅格或矢量保留在输出文件夹中。其他中间文件将被删除。
Python 程序不支持输入参数节点。您必须为模型输入指定实际的数据集和值。
当前版本的模型已包含一个输出参数节点。但是,我们必须将输入参数节点改回硬编码的输入。
- 1
右键单击 Input Parameters 节点,选择 Delete。 2. 2
在 Basic Nodes 下选择 Dataset。这将打开一个 Select Type 对话框。 3. 3
选择 Raster。这将打开 Data Selection 面板。qb_boulder_msi 文件应该已经打开。如果没有,请使用 Open File 图标浏览它。 4. 4
选择 qb_boulder_msi 并单击 OK。这将在布局窗口中放置一个蓝色的数据集图标。 5. 5
将 qb_boulder_msi 节点连接到 ISODATA 分类节点。
最终,能够保留输出栅格的兼容 Python 程序的模型如下所示:

要创建 Python 程序:
- 6
从 ENVI 建模器菜单栏中,选择 Code > Generate Python Program。这将在新的程序窗口中打开相应的 Python 代码,如下所示。

在此,您可以:
- 单击 Save 按钮,将代码保存为 Python 程序文件 (.py)。
- 单击 Run 按钮,运行程序。
- 通过单击 Configure Task Engine 按钮,设置 Python 程序将生成的输出文件的写入目录,如下图所示:

要运行生成的 Python 代码,您必须已安装:Python、pip 和 ENVI Py Engine(在新标签页中打开)(如果您不使用 ArcGIS Pro),或者 ENVI Py for ArcGIS Pro(在新标签页中打开)(如果您计划使用 ArcGIS Pro)。
本快速指南到此结束。
您的意见对我们很重要,请花几分钟时间填写我们的快速指南反馈(在新标签页中打开)表单。
© 2024 NV5 Geospatial Solutions, Inc. 此信息不受《国际武器贸易条例》(ITAR) 或《出口管理条例》(EAR) 的控制。