简介这份资源面向遥感影像处理初学者与需要出图的GIS从业者系统梳理ENVI软件从快速制图到成果输出的完整流程解决制图环节操作零散、步骤易遗漏的问题。资源包共1个doc文档约30KB以文字步骤说明为主便于随时查阅对照。内容涵盖启动ENVI并打开影像、设置快速制图模板、调整map scale与红色矩形框范围、配置main title和scale bars等参数以及自定义地图版面设计中的公里网、文字注记、符号、scale bar注记、map key和分类结果覆盖等元素添加方法并给出保存为grp文件、影像文件及打印输出的具体路径。目前已有5527人学习下载适合作为ENVI制图操作的速查手册帮助读者按步骤完成从模板设置到成果打印的全过程减少反复试错的时间成本。1. 从一张遥感影像到能交差的专题图envi制图输出到底卡在哪很多人第一次用 ENVI 做完分类、反演或者变化检测看着视窗里花花绿绿的结果挺满意一到要出图就懵了——图层叠得乱七八糟、图例对不上号、坐标网格歪着、导出 PDF 之后分辨率糊成一片。envi制图输出步骤这件事说穿了就是把「分析结果」翻译成「别人能看懂、能打印、能放进报告」的专题图中间隔着布局、符号、坐标、导出格式四道坎。它适合两类人一类是刚接触遥感影像处理、需要交课程作业或项目图件的学生和初级工程师另一类是做了多年分析、但出图一直靠截图凑合、想把这套流程规范化的老手。这篇笔记不讲 ENVI 菜单在哪而是按我实际出图的顺序把每一步的参数、为什么这么设、哪里容易翻车讲清楚让你照着走一遍就能出一张拿得出手的图。2. 出图前先把数据底子理干净图层顺序与显示拉伸ENVI 的制图能力其实分两层一层是 View 视窗里的显示效果一层是 Layout 布局里的排版输出。很多人直接跳到 Layout结果发现底图颜色不对、分类边界发虚回头再改又得重排。所以出图的第一步不是打开布局而是把参与出图的每个图层在视窗里调到「所见即所得」的状态。2.1 图层叠加顺序与透明度设置遥感专题图通常是「底图 专题层 矢量叠加」三层结构。底图用真彩色或假彩色影像专题层是分类结果或反演栅格矢量层是行政边界、采样点、图廓。ENVI 的 Layer Manager 里图层是从上往下压的最上面的盖住下面的所以顺序应该是矢量在最上、专题层居中、底图垫底。如果专题层是分类结果直接盖在影像上会把底图全遮住这时候要么把分类结果做成半透明要么只保留分类边界。我一般用后者在分类图层右键选 Overlay 里的分类边界显示或者用 ROI 工具把类别边界导出成矢量再叠上去。半透明虽然快但打印出来颜色会发灰正式图件不推荐。# ENVI 的 IDL 接口里调整图层顺序和透明度的常见写法 ; 假设已有一个打开的 ENVI 视窗 e envi() view e.getView() layer1 view.getLayer(0) ; 底图影像 layer2 view.getLayer(1) ; 分类结果 layer3 view.getLayer(2) ; 矢量边界 ; 把矢量提到最上层分类层设 40% 透明度 view.moveLayerToTop, layer3 layer2.transparency 40 ; 单位是百分比0 为不透明 layer2.blendMode normal ; 正常混合避免颜色偏移这段逻辑说明moveLayerToTop保证矢量压在最上面不被栅格盖住transparency设 40 而不是 50是因为分类色块本身饱和度高40% 已经能透出底图纹理再高边界就糊了。blendMode保持 normal有些教程会建议用 multiply但 multiply 在深色底图上会让分类色变暗出图偏色。参数上唯一需要反复试的是透明度。经验值是底图亮、分类色深透明度 30~40底图暗、分类色浅透明度 50~60。没有万能值以「能看清底图地物轮廓、又能分辨分类色块」为准。2.2 显示拉伸为什么视窗好看导出就翻车ENVI 默认对影像做 2% 线性拉伸视窗里看着对比度不错。但 Layout 导出时如果没勾选「使用视窗显示设置」它会按原始 DN 值重新渲染结果就是导出图偏暗或偏亮。这个坑我踩过不止一次血泪经验是在 View 里调好拉伸后一定要在 Layout 的图层属性里确认拉伸方式跟视窗一致。具体操作是在 Layout 视图里双击图层打开 Display Properties把 Stretch 从 None 改成 Linear 2% 或者 CustomCustom 里可以直接读视窗当前的拉伸区间。如果是多波段假彩色还要确认波段组合跟视窗一致否则颜色完全对不上。提示出图前把视窗和布局的拉伸参数截图记下来改图时对照着调比反复试快得多。3. 布局排版图廓、比例尺、指北针与图例的落位数据底子理干净之后才轮到 Layout 布局。ENVI 的 Layout 视图本质是一个虚拟画布你把视窗、图例、比例尺、指北针、文字标注这些元素摆上去最后导出成图片或 PDF。这一步的核心不是「摆得好看」而是「信息完整、比例正确、打印不糊」。3.1 图廓与坐标网格的生成图廓是专题图的外框通常带经纬度或投影坐标刻度。ENVI 里用 Layout 的 Grid 功能生成但默认网格线是黑色细线打印出来容易跟影像混在一起。我一般改成灰色虚线刻度字号 8~9pt太大会喧宾夺主。坐标网格的关键参数是间隔。间隔太小网格密得像渔网太大定位精度不够。经验规则成图幅面 A4 时经纬度间隔 0.5° 或投影坐标间隔 5km 比较合适A3 幅面可以减半。如果研究区跨带还要注意投影参数是否统一否则网格会歪。# 在 Layout 里添加带坐标网格的图廓 layout view.createLayout() mapFrame layout.createMapFrame() mapFrame.bounds [xmin, ymin, xmax, ymax] ; 图廓范围跟研究区一致 mapFrame.gridType graticule ; 经纬网投影坐标用 measured mapFrame.gridInterval 0.5 ; 间隔 0.5 度 mapFrame.gridColor [128, 128, 128] ; 灰色 mapFrame.gridLineStyle dash ; 虚线 mapFrame.labelFontSize 9 ; 刻度字号逻辑说明gridType选 graticule 是经纬网适合大范围区域如果研究区小、用投影坐标选 measured 并设gridInterval为米或千米。gridColor用中灰而不是黑是为了跟影像和边界线区分开。labelFontSize9pt 是 A4 打印的舒适值再小打印出来看不清。3.2 比例尺、指北针与图例的摆放规则比例尺和指北针是专题图的「标配」但很多人摆得随意导致图面失衡。我的习惯是比例尺放右下角、指北针放右上角、图例放左下角或右侧空白区。如果研究区形状不规则图例可以放在图廓外的右侧但要用引线或色块跟图内对应。比例尺在 ENVI 里是 Scale Bar 元素关键是设对「地图单位」和「显示单位」。地图单位跟数据投影一致米或度显示单位按成图习惯选千米或公里。如果数据是地理坐标系度比例尺会随纬度变化这时候要么转投影要么在图注里说明「比例尺为近似值」。图例的坑最多。分类图的图例必须跟分类类别一一对应颜色、名称、顺序都不能错。ENVI 的图例可以手动编辑也可以从分类头文件里自动读取。自动读取快但类别名往往是 Class_1、Class_2 这种默认名出图前必须改成实际地物名水体、植被、建筑等。改的时候注意别改乱顺序否则图例颜色跟图面对不上审图的人一眼就能看出来。注意图例里的类别名不要用缩写或内部代号用完整中文地物名这是图件能不能被非专业读者看懂的关键。4. 导出格式与分辨率PDF、TIFF、PNG 怎么选排版满意之后最后一步是导出。ENVI 支持导出成图片PNG、JPEG、TIFF和 PDF不同格式的用途和坑完全不同。选错格式前面调得再好也白搭。4.1 三种导出格式的适用场景对比格式适用场景分辨率控制主要坑点PDF正式报告、论文插图、需要矢量文字矢量栅格混合栅格图层分辨率不够会糊文字字体可能缺失TIFF需要后期 GIS 编辑或高精度打印可设 DPI无损文件大部分软件打开慢PNG网页、PPT、快速预览可设 DPI有损压缩可选不支持矢量文字放大后文字边缘发虚PDF 是正式图件的首选因为比例尺、图例文字是矢量的放大不糊。但底图影像和分类栅格是栅格数据导出时要在 Export 对话框里把栅格分辨率设成 300 DPI 或更高否则影像部分会糊。300 DPI 是印刷标准屏幕预览 150 DPI 够用。TIFF 适合需要后续在 GIS 里继续编辑的情况导出时选 LZW 压缩可以减小体积但注意有些老版本软件不认 LZW。PNG 适合快速出图但别用它做正式打印文字边缘会发虚。4.2 导出参数设置与批量出图脚本导出对话框里几个关键参数Resolution分辨率、Image Size图像尺寸、Color Mode颜色模式。分辨率按用途设印刷 300 DPI、屏幕 150 DPI。图像尺寸跟布局画布一致别勾「适应页面」否则比例尺会变形。颜色模式选 RGBCMYK 在 ENVI 里支持不好容易偏色。如果需要批量出图比如多个时相、多个区域手动一张张导太慢。ENVI 的 IDL 接口可以写循环批量导出核心是把布局和导出参数封装成函数循环里只换数据源和输出路径。# 批量导出多个分类结果的专题图 pro batch_export_maps, input_files, output_dir compile_opt idl2 e envi(/headless) ; 无界面模式适合批量跑 foreach file, input_files do begin raster e.openRaster(file) view e.getView() layer view.createLayer(raster) ; 设置拉伸和透明度 layer.stretch Linear 2% layer.transparency 40 ; 创建布局并添加图廓、比例尺、图例 layout view.createLayout() mapFrame layout.createMapFrame() mapFrame.bounds raster.spatialRef.extent ; 导出 PDF300 DPI outPath output_dir filepath_basename(file, .dat) .pdf layout.export, outPath, PDF, RESOLUTION300 ; 清理避免内存堆积 e.closeRaster, raster endforeach end逻辑说明envi(/headless)是无界面模式批量跑的时候不弹窗速度快。layer.stretch和transparency跟手动设置一致保证批量图风格统一。mapFrame.bounds直接读栅格的空间范围省去手动输入。layout.export的RESOLUTION300对应 300 DPI。循环末尾closeRaster很重要不关的话跑几十张之后内存会爆。参数上唯一要按情况改的是transparency和RESOLUTION。如果批量图用于屏幕预览分辨率降到 150 能省一半时间。如果分类类别多、图例复杂建议把图例生成也封装进去否则每张图手动加图例反而更慢。5. 避坑与排查出图环节最常见的 5 个翻车现场5.1 导出 PDF 后影像部分模糊、文字清晰现象PDF 打开后比例尺和图例文字很锐利但底图影像和分类色块糊成一片。原因导出时栅格分辨率设得太低或者勾了「压缩栅格」选项。解决在 Export 对话框里把 Raster Resolution 设成 300 DPI 以上取消勾选 JPEG Compression。如果文件太大用 LZW 无损压缩代替。5.2 图例颜色与图面分类色块对不上现象图例里水体是蓝色图面上水体区域却是绿色。原因图例是从分类头文件自动读取的但图面显示时用了自定义色表两者不同步。解决要么统一用头文件色表要么手动编辑图例颜色跟图面一致。改完之后重新导出别只刷新视窗。5.3 比例尺数值跟实际距离不符现象图上比例尺标 1km实际量出来是 1.2km。原因数据是地理坐标系度比例尺按度算但显示单位设成了千米换算时没考虑纬度。解决出图前把数据转成投影坐标系如 UTM或者在图注里注明「比例尺为近似值随纬度变化」。正式图件建议转投影。5.4 坐标网格歪斜或跟图廓不平行现象网格线跟图廓边不平行看着像斜的。原因数据投影跟图廓投影不一致或者图廓范围跨了投影带。解决统一投影参数跨带的话分带出图。如果只是视觉上歪检查 Layout 里 Map Frame 的旋转角度是不是被误设了。5.5 批量导出时内存溢出、程序卡死现象批量跑十几张之后 ENVI 无响应。原因每次循环都新建视窗和图层旧对象没释放。解决循环里显式关闭栅格和视窗用e.closeRaster和view.close。如果还不行分批跑每批 10 张中间重启 ENVI。提示出图前先导一张低分辨率预览图检查布局确认没问题再导高分辨率正式图能省不少时间。6. 进阶技巧用模板和元数据让出图可复现出图这件事做一张不难难的是同一套图风格统一、下次还能复现。我后来的习惯是把调好的布局存成模板把出图参数写进元数据下次同类数据直接套。ENVI 的 Layout 可以保存成.lay文件里面记录了图廓、比例尺、图例、文字标注的位置和样式。下次出图时加载模板只需要替换数据源和改图例文字。模板的坑在于如果新数据的投影或范围跟模板不一致图廓和比例尺会错位。所以套模板之前先确认投影一致不一致就转投影再套。元数据这块我一般会在导出 PDF 的同时在同目录写一个.txt记录出图参数数据源、投影、拉伸方式、透明度、分辨率、图例类别。看起来麻烦但下次改图或者别人接手时不用猜参数。这个习惯是从一次返工里逼出来的——当时出了一套 12 张的图审图要求改图例颜色结果忘了当初的透明度设的是 40 还是 50只能一张张试浪费了一下午。# 导出时同步写参数记录文件 pro export_with_metadata, layout, outPath, params compile_opt idl2 layout.export, outPath, PDF, RESOLUTIONparams.resolution ; 写元数据 metaPath outPath .meta.txt openw, lun, metaPath, /get_lun printf, lun, Data: params.dataName printf, lun, Projection: params.projection printf, lun, Stretch: params.stretch printf, lun, Transparency: string(params.transparency) printf, lun, Resolution: string(params.resolution) printf, lun, Legend: params.legend free_lun, lun end逻辑说明layout.export负责出图后面几行把关键参数写进同名.meta.txt。params是个结构体出图前填好。这样一套图出完参数记录也跟着走下次复现或者交接都有据可查。参数里最值得记的是stretch和transparency这两个是视觉差异最大的也是最容易忘的。最后一个技巧是关于图例的如果分类类别多图例占地方可以把图例做成两列或三列但列与列之间要留够间距别挤在一起。ENVI 的图例元素支持手动拖拽排列拖的时候按住 Shift 可以等间距对齐。这个操作没有参数可调纯靠手感多拖几次就熟了。出图这件事说到底是个手艺活参数是死的判断是活的。我自己的习惯是每出一张正式图都把布局存一份、参数记一份攒多了就是自己的模板库。希望帮到你。本文还有配套的精品资源点击获取