简介:面向植被净初级生产力(NPP)估算的ENVI扩展工具包,适合遥感、生态与地理信息相关研究者及高年级学生使用,核心为朱文泉博士2020年发布的NPP计算模型2.0版。其模块可直接由日照时数计算太阳辐射,支持从NDVI的HDF数据生成时序NDVI,并能在模块内完成气象数据插值,减少在多软件间反复转换的麻烦。压缩包共76个文件、约30.58MB,包含sav程序模块、dat与hdr栅格及头文件、csv和txt参数与说明、pdf文档、bat安装脚本以及shp等辅助数据,兼顾计算、示例与部署。已有5560人学习,可帮助读者快速搭建NPP计算流程,理解辐射、NDVI时序与气象插值等关键环节,并借助随包文档完成ENVI插件安装与结果核查。
1. 装植被NPP程序V2.0前,先确认 ENVI 扩展目录:一次菜单不显示的事故
第一次装植被NPP程序V2.0,我栽在“插件明明拷进去了,ENVI 扩展菜单却是空的”。这套 ENVI 插件做的是植被净初级生产力(NPP)估算,输入 NDVI、气象和植被类型,输出 NPP 栅格,做生态评估、碳汇核算和毕业设计的人常会碰到。它不算大工具,但对 ENVI/IDL 版本、扩展目录和路径很敏感;装错位置时不会报大错,只会在菜单里消失,或者编译到一半提示找不到过程。下面按环境核对、落盘、注册、参数配置、排错、验证的顺序走一遍,新手能照抄,熟手也能看到版本取舍。
2. 环境准备:ENVI 5.x/IDL 8.x 与植被NPP程序V2.0 的版本搭配
这套插件不是独立 exe,它依赖 ENVI 的 IDL 运行时。环境搭建的第一步不是解压,而是确认 ENVI 主版本、IDL 位数和扩展机制。我一般先在ENVI > Help > About里看版本,再翻安装目录下有没有extensions和save_add两个文件夹。只有save_add的大概率是经典版工作流;两个都有,说明 ENVI 5.x 还保留了经典入口。插件 V2.0 的菜单注册方式跟这两套机制不一样,混用会出现“文件在、菜单不在”的假象。
ENVI 的扩展机制在 5.x 之后改过一次。老教程里让人把文件拷进save_add,在 ENVI 5.6 上照做,菜单就是不出来。不是插件坏了,是入口变了。反过来,把 ENVI 5.x 的.dlm塞进经典版save_add,启动时也可能只报一句含糊的加载失败。先把版本和目录对上,后面能少走很多回头路。
2.1 先分清经典 ENVI 与 ENVI 5.x 的扩展目录
打开 ENVI 安装目录,先看两个文件夹:extensions和save_add。extensions是 ENVI 5.x 的扩展入口,插件可以带自己的任务、菜单和 DLM;save_add是经典版启动时自动编译.pro的目录。V2.0 的包里如果只有.pro和.sav,两种机制都可能用;如果有.dlm,优先按 ENVI 5.x 走。
| 目录或文件 | 常见位置 | 用途 | 注意 |
|---|---|---|---|
extensions | D:\ENVI56\extensions | ENVI 5.x 自定义任务和扩展 | 子目录名不要带空格 |
save_add | D:\ENVI48\save_add | 经典版启动时自动编译 | 只放.pro和.sav |
.sav | 插件根目录或子目录 | 已编译的 IDL 保存文件 | 位数要和 IDL 一致 |
.dlm | 插件根目录 | 动态模块注册 | 不要随手改 ENVI 自带菜单 |
.sav是编译后的 IDL 保存文件,优点是省编译,缺点是位数和版本绑定;.pro是源码,优点是能改,缺点是依赖路径。我的顺序是:有.sav先用.sav,跑不通再回到.pro编译,不要一上来就改源码。如果你的 ENVI 是 5.3 但插件只给经典菜单,不代表不能用。可以在 IDL 命令行直接调用主过程,或者自己写一个.dlm把菜单挂上去;只是多一步,不是版本不兼容。
常见搭配是 ENVI 5.3 配 IDL 8.5、ENVI 5.6 配 IDL 8.7,经典版常见 ENVI 4.8 配 IDL 8.2。这里的版本只用于判断扩展机制和位数,不是硬性要求;真正要确认的是插件里的.sav能不能被当前 IDL 恢复,.pro能不能被IDL_PATH找到。
2.2 目录、权限和依赖:装之前要清的四个地方
第一,安装路径。ENVI 装在D:\ENVI56比C:\Program Files\...省事,后者写文件要管理员权限,插件运行时要写临时文件、日志和输出,权限不够时表现是“算到一半退出”。第二,目录名。插件目录用npp_v2_0,不要用NPP V2.0。空格在IDL_PATH里是分隔符,路径带空格时你得多加引号,老脚本不一定处理。
第三,位数。Help > About里看 ENVI 是 32 位还是 64 位;压缩包里有win32/win64就按位数选。32 位.sav给 64 位 IDL,常见报错是Unable to restore save file或直接崩溃。第四,多版本。机器上同时有 ENVI 4.8 和 ENVI 5.6 时,先确认快捷方式指向哪个bin\envi.exe。我见过插件拷到 5.6,启动的却是 4.8,查半天以为插件不兼容。
依赖方面,这套插件不需要 Python 环境,但读栅格依赖 ENVI 的栅格库;如果你机器上同时装了多个 ENVI 版本,先确认启动的是哪一个,别把插件拷到 A 目录却从 B 目录启动。回滚方面,我一般会先复制一份原扩展目录,出问题直接删npp_v2_0文件夹,不会把 ENVI 搞坏。
注意:插件目录、数据目录、输出目录都不要带中文和空格;这不是洁癖,老版本 IDL 在中文路径下出错时给的提示经常是“文件不存在”,很容易查错方向。
2.3 解压与落盘:用一条 bat 把目录建对
先把压缩包解压到下载目录,不要直接在压缩包里双击运行。下面的批处理按我自己的路径写,你把ENVI_HOME和PLUGIN_SRC换成实际路径即可。
REM 先按自己的安装路径改这两行 set ENVI_HOME=D:\ENVI56 set PLUGIN_SRC=D:\downloads\npp_v2.0 REM 建插件目录,目录名不要带中文和空格 mkdir "%ENVI_HOME%\extensions\npp_v2_0" REM 复制整个插件,包含子目录;/E 空目录也拷,/I 自动按目录处理 xcopy "%PLUGIN_SRC%\*" "%ENVI_HOME%\extensions\npp_v2_0\" /E /I /YENVI_HOME指向 ENVI 安装根目录,不是bin目录;PLUGIN_SRC是解压后的插件目录。xcopy的/E会连空子目录一起复制,/I让目标按目录处理,/Y跳过覆盖确认。复制完不要马上启动 ENVI,先在资源管理器里看插件根目录有没有*.sav、*.pro、*.dlm和readme。README 里通常写了主过程名和菜单名,先扫一眼,比猜快。
如果 README 让你把文件拷到C:\Program Files\...,而你的 ENVI 不在那儿,按实际路径改,不要照抄。落盘后做一次权限检查:右键插件目录,确认当前用户有读写权限;输出目录单独建,不要往插件目录里写结果。插件目录是程序目录,输出目录是工作目录,混在一起以后清理很麻烦。
3. 安装与注册:把 NPP 插件挂进 ENVI 扩展菜单
文件复制完只是“放对了地方”,ENVI 还不一定认识。注册要做三件事:让 IDL 找得到过程文件、让 ENVI 启动时加载扩展、让菜单项指向主过程。不同版本 V2.0 包的目录结构可能略有差异,但判断方法一样:先找主程序名,再看有没有.dlm或menu文件。ENVI 启动时按IDL_PATH找过程,按扩展目录找菜单;两个环节任何一处断了,界面都不会出现。
3.1 复制扩展文件:extensions 与 save_add 的区别
先看压缩包结构。常见有三种:只有.sav;只有.pro;.sav+.pro+.dlm。只有.sav时,把.sav放extensions\npp_v2_0或save_add,启动后在 IDL 命令行restore, 'npp_v2_0.sav'看能不能恢复。只有.pro时,把整个pro目录放扩展目录,IDL_PATH指到pro
本文还有配套的精品资源,点击获取