☰
ENVI制图输出全流程:从分类结果到成图的避坑指南
2026/10/15 10:55:47 网站建设 项目流程

简介:这份资源围绕ENVI遥感制图输出流程展开,面向刚接触ENVI、需要将影像成果整理成规范地图的遥感与GIS初学者及科研人员,帮助解决从快速制图模板设置到版面元素添加、成果保存与打印的完整操作问题。资源包共1个文件,为doc格式文档,压缩包约30KB,内容以步骤说明与菜单路径记录为主,便于对照软件界面逐步操作。文档涵盖启动ENVI并打开影像、设置快速制图模板、调整地图比例尺、自定义地图版面设计等环节,并具体列出添加公里网、文字注记、符号、Scale bar注记、map key及覆盖分类结果的菜单路径,同时说明保存为grp文件、影像文件以及打印输出的方法。目前已有5527人学习下载,适合需要快速掌握ENVI制图输出流程、对照菜单路径完成地图整饰与成果导出的读者参考。

1. envi制图输出步骤:从分类结果到能交差的成图,中间隔着多少坑

很多人第一次用 ENVI 做完监督分类,看着视图里花花绿绿的分类结果,以为直接 File 里点一下 Export 就完事了。真到要交图的时候才发现:图例没标注、比例尺对不上、边界外全是黑框、输出分辨率糊成马赛克。envi制图输出步骤这件事,说穿了就是把「算法跑出来的栅格数据」翻译成「别人能看懂、能打印、能放进报告」的成品图。它解决的不是分类精度问题,而是表达问题——你的分类结果再准,输出环节翻车,评审看一眼就退回来。这套流程适合做遥感应用、土地利用调查、环境监测的从业者,也适合刚接触 ENVI 的学生。核心链路其实就四段:数据准备与图层整理、制图要素配置、输出参数设定、格式与分辨率校验。下面按我实际干活的顺序拆开讲,每一步都给出可复现的操作和参数。

2. 制图前的数据准备:图层、掩膜与显示拉伸怎么定

2.1 先想清楚输出的是「分类图」还是「原始影像图」

ENVI 里制图输出最容易混淆的一点:你到底要输出分类结果(Classification Image),还是带分类叠加的原始影像?两者在 Layer Manager 里的组织方式完全不同。如果只输出分类图,直接加载分类栅格即可,颜色由分类类别决定;如果要输出「影像底图 + 分类边界叠加」,需要把原始多光谱影像和分类结果同时加载,分类结果放在上层并设置透明度或只显示边界。

我一般会先问自己三个问题:这张图给谁看?打印还是屏幕看?需不需要叠加行政边界?答案决定了图层顺序和输出分辨率。给评审看的报告图,通常需要原始影像做底、分类结果半透明叠加、再加矢量边界和指北针;纯分类统计图则只需要分类栅格加图例。

操作上,在 ENVI 的 Layer Manager 中右键图层可以调整顺序,分类图层建议放在最上层。如果分类结果有大量碎斑,先做 Majority/Minority 分析或者聚类处理,否则输出后图面会非常脏。

2.2 掩膜与无效值处理:别让背景色毁掉整张图

分类结果里通常有一类叫 Unclassified,默认显示为黑色或白色。直接输出时,这块区域会占据图面很大面积,看起来像数据缺失。处理方式有两种:一是把 Unclassified 的显示颜色设为透明,二是在输出前用掩膜把无效区域裁掉。

在 ENVI 中设置透明的方法:双击 Layer Manager 中的分类图层,打开 Layer Properties,在 Display 选项卡里找到 Transparency 滑块,或者直接在 Class Colors 里把 Unclassified 那一行的颜色设为 None。注意,透明设置只影响显示,不影响输出文件本身的数据值。如果输出格式是 GeoTIFF,透明信息可能不被保留,需要在 GIS 软件里再做一次掩膜。

更稳妥的做法是提前做掩膜。用 ENVI 的 Build Mask 工具,基于分类结果或 ROI 生成掩膜文件,然后在输出时选择 Apply Mask。这样输出的栅格在无效区域就是 NoData,后续在 ArcGIS 或 QGIS 里打开不会出现黑边。

2.3 显示拉伸:为什么你屏幕上看到的和输出来的不一样

这是血泪经验最多的地方。ENVI 默认对影像做 2% 线性拉伸,屏幕上看着对比度很好,但输出时如果选择「No Stretch」或者「Linear」,结果可能偏暗或偏亮。分类图一般不受拉伸影响,因为颜色是固定的类别色;但原始影像底图受拉伸影响极大。

我的习惯是:在输出前,先在 Display 里调整好拉伸方式,然后用 File > Save As > Image File,在对话框里勾选「Display Stretch」或者手动指定拉伸参数。如果输出目的是打印,建议用 Gaussian 或 Square Root 拉伸,对比度更柔和;屏幕展示可以用 Linear 加 2% 裁剪。

提示:输出前一定在 ENVI 的 Zoom 窗口里放大到 100% 看一眼,屏幕上看着正常的拉伸,输出成 TIFF 后可能因为位深转换而变样。

3. 制图要素配置:图例、比例尺、指北针与网格线怎么加

3.1 用 ENVI 自带制图工具还是转出到 GIS 排版

ENVI 本身有 Layout View(在 Classic 界面里叫 QuickBird 风格的制图窗口),但功能比较基础。我的实际做法分两种:如果只是快速出图给内部看,直接用 ENVI 的 File > Print 或者 Save As > Image File 带图例输出;如果是要放进正式报告,通常把分类结果导出为 GeoTIFF,再进 ArcGIS 或 QGIS 做排版。原因很简单:ENVI 的图例编辑、比例尺样式、字体控制都比较弱,而 GIS 软件在这些方面成熟得多。

但有些场景必须在 ENVI 里完成,比如没有 GIS 授权、或者需要批量出图。这时候就要把 ENVI 的制图要素配置摸清楚。

3.2 图例(Legend)的生成与编辑

ENVI 的分类图例默认从分类类别自动生成。在 Layer Manager 中右键分类图层,选择 Edit Class Names,可以修改每个类别的名称。名称建议用中文,但注意 ENVI 某些版本对中文字体支持不好,输出后可能显示为方框。如果遇到这个问题,把类别名改成英文或拼音,在 GIS 里再改中文。

图例的位置和大小在 Layout View 里调整。如果找不到 Layout View,在 ENVI 5.x 里可以通过 File > Chip View to File 或者使用 Annotation 工具手动添加文字标注。更常见的做法是:在 ENVI 里输出不带图例的干净分类图,然后在 PowerPoint 或 GIS 里加图例。这样虽然多一步,但可控性高得多。

3.3 比例尺与指北针:参数怎么设才不别扭

比例尺的核心是地图比例尺分母的确定。假设你的影像空间分辨率是 30 米,输出图像宽度是 3000 像素,那么地面实际宽度是 3000 × 30 = 90000 米。如果打印出来图面宽度是 20 厘米,比例尺就是 90000 / 0.2 = 1:450000。这个计算决定了比例尺条上标注的数字。

在 ENVI 的 Layout View 里添加比例尺:选择 Insert > Scale Bar,然后设置分段数、单位(Kilometers 或 Meters)、字体大小。指北针用 Insert > North Arrow,一般放在右上角。注意指北针的方向要和影像的实际方向一致,如果影像做过旋转或投影变换,指北针可能不是正北。

网格线(Graticule)在 ENVI 里添加比较麻烦,通常需要知道影像的投影信息。如果影像有地理坐标(经纬度),可以在 Layout View 里 Insert > Graticule,设置间隔。如果是投影坐标(如 UTM),网格线间隔用米为单位。

3.4 输出前的图层拼合与裁剪

如果图面包含多个图层(影像底图 + 分类 + 矢量边界),输出前需要确认它们是否对齐。ENVI 不会自动做图层拼合,输出时只输出当前选中的图层或者所有图层分别输出。要输出一张合成图,需要用 File > Save As > Image File 选择「Display」而不是「File」,这样会把当前 Display 里所有可见图层按显示效果拼合输出。

裁剪方面,如果只需要研究区范围内的图,提前用 Subset Data via ROIs 或者 Resize Data 工具裁好。不要输出整景再在别处裁,浪费时间和存储。

4. 输出参数设定:格式、位深、分辨率与压缩怎么选

4.1 输出格式选择:GeoTIFF、JPEG、PNG 还是 ENVI 格式

格式适用场景是否保留地理信息是否支持透明备注
GeoTIFF正式报告、GIS 分析是部分支持首选格式,兼容性最好
ENVI后续 ENVI 处理是否文件大,但保留所有元数据
JPEG屏幕展示、PPT否否有损压缩,不适合分类图
PNG屏幕展示、网页否是无损压缩,适合分类图
BMP老旧系统否否文件大,不推荐

分类图输出首选 GeoTIFF,因为保留地理坐标和类别值。如果只是做 PPT,输出 PNG 足够,但注意 PNG 不保留地理信息,图上的比例尺和指北针需要手动加。

4.2 位深与数据类型:Byte、Integer、Float 怎么定

分类结果通常是 Byte 类型(类别值 1-255),输出时保持 Byte 即可。如果类别数超过 255,需要用 Integer。原始影像底图可能是 Float 或 Integer,输出时如果只做展示,可以转成 Byte 并做拉伸,减小文件体积。

在 ENVI 的 Save As 对话框里,Output Data Type 选项可以改。注意:从 Float 转 Byte 会丢失精度,但展示用途无所谓。如果后续还要做定量分析,保留 Float。

4.3 分辨率与重采样:输出尺寸怎么算

输出分辨率由两个因素决定:原始影像的空间分辨率和输出图像的像素尺寸。如果保持原始分辨率,输出像素数等于影像列数 × 行数。如果要放大或缩小,需要设置重采样方法。

重采样方法选择:

  • Nearest Neighbor:分类图首选,保持类别值不变
  • Bilinear:原始影像底图适用,平滑但会改变像素值
  • Cubic Convolution:更平滑,但计算量大

在 ENVI 的 Resize Data 工具里,可以设置输出像素尺寸或比例因子。我的习惯是:分类图用 Nearest Neighbor,输出比例 1:1;影像底图如果需要缩小,用 Bilinear,比例不低于 0.5,否则细节丢失严重。

4.4 压缩与分块:大文件输出的实用参数

GeoTIFF 输出时,ENVI 提供 Compression 选项。LZW 是无损压缩,适合分类图;JPEG 压缩是有损的,但压缩率高,适合影像底图。如果文件超过 2GB,需要启用 BigTIFF 格式,否则某些软件打不开。

分块(Tiling)选项建议开启,块大小设为 256×256 或 512×512。这样在 GIS 里浏览时加载更快,不会一次性读入整个文件。

注意:如果输出目的是打印,分辨率至少 300 DPI。假设图面宽度 20 厘米,输出像素宽度至少 20 / 2.54 × 300 ≈ 2362 像素。低于这个值,打印出来会模糊。

5. 避坑与排查:输出后图不对、打不开、颜色偏了怎么办

5.1 输出后地理坐标丢失,GIS 里定位到非洲西海岸

现象:GeoTIFF 在 ArcGIS 里打开,位置跑到几内亚湾附近,或者提示「未知空间参考」。 原因:ENVI 输出时没有勾选「Write World File」或者「Output Georeferencing」,或者原始影像本身没有投影信息。 解决:输出前确认影像有 Map Info。在 ENVI 里 File > Open 后,看 Layer Manager 里图层是否有 Raster Info 中的 Map Info。如果没有,先用 Edit ENVI Header 手动添加投影和坐标信息,再输出。输出时勾选「Output Georeferencing」。

5.2 分类图输出后颜色全变了,类别对应不上

现象:屏幕上分类图是红、绿、蓝,输出成 TIFF 后在 GIS 里打开变成随机颜色。 原因:ENVI 的类别颜色存在显示层,不写入文件。GeoTIFF 只保留类别值(1、2、3…),颜色由打开软件随机分配。 解决:在 GIS 里手动配置颜色映射表,或者输出时选择「ENVI」格式并附带 .hdr 文件,但 ENVI 格式在 GIS 里兼容性差。更实用的做法是输出 PNG 或 JPEG 时选择「Display」模式,把颜色固化到像素里,但这样丢失地理信息。折中方案:输出 GeoTIFF 用于分析,输出 PNG 用于展示。

5.3 输出文件巨大,打开卡死

现象:一景 Landsat 分类图输出成 GeoTIFF 后 2GB 以上,ArcGIS 打开要几分钟。 原因:未压缩、位深过高、或包含了不必要的波段。 解决:分类图输出时只选分类波段,不要带原始影像波段。启用 LZW 压缩。如果还是大,用 Resize Data 降低分辨率,或者输出前做 Subset 裁剪研究区。

5.4 图例文字输出后变成方框或乱码

现象:ENVI 里图例中文显示正常,输出后变成「口口口」。 原因:ENVI 某些版本对中文字体嵌入支持不好,输出时字体丢失。 解决:图例文字用英文或拼音,在 GIS 或 PPT 里再改中文。或者输出 PDF 格式(如果 ENVI 版本支持),PDF 对字体嵌入更好。

5.5 比例尺数字对不上,量出来的距离差很多

现象:图上比例尺标注 1:50000,实际量算发现差 10%。 原因:比例尺计算时没有考虑输出 DPI 或打印缩放。ENVI 的比例尺基于屏幕像素,打印时如果缩放,比例尺失效。 解决:在 Layout View 里设置好输出尺寸(厘米或英寸),再添加比例尺。打印时选择「实际大小」,不要选「适应页面」。

6. 批量输出与自动化:用 IDL 或 ENVI Task 把重复劳动干掉

6.1 什么时候值得写脚本

如果你有几十景影像要做同样的分类输出,手动点 Save As 会疯掉。ENVI 提供了两种自动化途径:IDL 脚本和 ENVI Task(基于 ENVI Modeler 或 ENVI Py)。我一般用 IDL,因为控制粒度细,但 ENVI Py 对 Python 用户更友好。

判断标准很简单:如果输出步骤超过 5 景,或者参数需要反复调,就写脚本。如果只是偶尔出一张图,手动更快。

6.2 用 ENVI Py 批量输出分类图的代码模板

# 需要安装 envi Py 库,并在 ENVI 环境中运行 import os import glob from envi import Envi # 初始化 ENVI 会话 e = Envi() # 输入输出目录 input_dir = r"D:\data\classification" output_dir = r"D:\data\output" os.makedirs(output_dir, exist_ok=True) # 获取所有分类结果文件(假设为 .dat 格式) class_files = glob.glob(os.path.join(input_dir, "*.dat")) for file_path in class_files: # 打开分类栅格 raster = e.OpenRaster(file_path) # 获取文件名(不含扩展名) base_name = os.path.splitext(os.path.basename(file_path))[0] out_path = os.path.join(output_dir, base_name + "_export.tif") # 配置输出参数 # 格式:GeoTIFF,数据类型:Byte,压缩:LZW export_task = e.CreateTask('ExportRasterToTIFF') export_task.INPUT_RASTER = raster export_task.OUTPUT_RASTER_URI = out_path export_task.DATA_TYPE = 'Byte' export_task.COMPRESSION = 'LZW' export_task.TILE_SIZE = 512 # 执行输出 export_task.Execute() print(f"已输出:{out_path}") print("批量输出完成")

逻辑说明:这段代码遍历输入目录下所有 .dat 分类文件,逐个打开并输出为 GeoTIFF。关键参数有三个:DATA_TYPE 设为 Byte 保证类别值不变;COMPRESSION 用 LZW 无损压缩;TILE_SIZE 设为 512 提升 GIS 加载速度。如果分类类别超过 255,DATA_TYPE 要改成 UInt16。

参数调整建议:如果输出后要在 ArcGIS 里做统计,不要用 JPEG 压缩,会改变像素值。如果只是展示,可以加 RESAMPLE_METHOD = 'Nearest Neighbor' 保持类别边界清晰。

6.3 输出后的快速校验:三步确认图没问题

批量输出最怕个别文件出错。我一般做三步校验:第一步,用 ENVI 或 QGIS 随机打开 3 个输出文件,看坐标和范围对不对;第二步,用 Python 的 rasterio 库读取文件,检查行列数、波段数、NoData 值是否一致;第三步,对比输出前后的类别直方图,确保没有类别丢失。

# 用 rasterio 快速校验输出文件 import rasterio import numpy as np out_file = r"D:\data\output\class_01_export.tif" with rasterio.open(out_file) as src: print(f"波段数:{src.count}") print(f"行列数:{src.height} x {src.width}") print(f"坐标参考:{src.crs}") print(f"NoData 值:{src.nodata}") # 读取第一个波段并统计唯一值 band1 = src.read(1) unique_vals = np.unique(band1) print(f"类别值:{unique_vals}")

这段代码输出文件的基本信息和类别值列表。如果类别值只有 0 和 1,而你的分类有 5 类,说明输出时数据被截断了,需要检查 DATA_TYPE 设置。

6.4 一个我常犯的错误:输出路径带中文

ENVI 的某些版本对中文路径支持不好,输出时如果路径包含中文,可能报错或者输出空文件。我的习惯是:所有输入输出路径全用英文和数字,不要有空格。如果必须用中文目录,先在 ENVI 里测试一个小文件,确认没问题再批量跑。

另外,输出文件名不要用特殊字符,比如 #、%、&,这些在 GIS 里可能被解析成其他含义。用下划线和短横线最安全。

6.5 最后一步:把输出参数固化成模板

每次出图都重新设一遍参数很烦。ENVI 的 Save As 对话框里可以保存当前设置为模板,下次直接调用。或者用 ENVI Modeler 把整个流程连成可视化工作流,保存为 .model 文件,下次换输入数据即可。

我的习惯是:针对常见的三种输出场景(分类图 GeoTIFF、影像底图 PNG、报告用 PDF),各做一个模板。这样即使隔几个月再出图,也不用重新回忆参数。ENVI 的制图输出步骤本身不复杂,复杂的是每次都要和显示效果、坐标信息、文件大小较劲。把参数固化下来,把校验自动化,才能把时间留给真正重要的分类精度和业务分析。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询