利用CMD命令调用ENVITask实现混合编程
2022/9/6 1:22:51
本文主要是介绍利用CMD命令调用ENVITask实现混合编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
IDL可以将pro源码编译为sav文件,然后利用cmd命令执行此sav文件,即可实现混合编程。
下面的测试版本为 ENVI 5.3.1/IDL 8.5.1。
此方法同样适用于纯 IDL 开发方式。
1. 编写IDL代码
IDL测试代码如下:
PRO test_ENVITask_Args ;此行代码很重要,一定要加上 COMPILE_OPT idl2 ;Command_Line_Args可以获取-args后边跟的参数,count返回参数个数 args = Command_Line_Args(Count=c) ;如果功能需要2个参数,可以做一个判断 IF c NE 2 THEN BEGIN tmp = DIALOG_MESSAGE('请输入2个参数,分别为输入文件和输出路径') return ENDIF ;获取2个参数,一个输入文件,一个输出路径 ;需要注意的是,即便100这样的参数,获取进来也是string类型,根据需要进行转换 infile = args[0] outfile = args[1] ;启动ENVI,加headless关键字 e=envi(/headless) task = ENVITask('QUAC') raster = e.OpenRaster(infile) task.input_raster = raster task.output_raster_uri = outfile task.execute tmp = DIALOG_MESSAGE('执行成功') END |
2. 构建sav文件
编译sav文件的操作顺序和命令很重要,一定逐步完成。
第一步:重置IDL进程
可单击IDL工具栏中的"重置"按钮,也可在IDL控制台中输入 .f 然后回车。
第二步:编译pro文件
如果pro文件个数较少时,逐个手动编译即可。
如果文件个数较多,建议以工程方式构建项目,一步即可构建sav文件。
第三步:加载pro调用的函数
在IDL控制台执行如下命令即可:
resolve_all, skip_routines='envi', /continue_on_error |
第四步:构建sav文件
在IDL控制台执行如下命令:
save,filename='D:\temp\test_ENVITask_Args.sav',/routines |
注:filename指定为sav文件输出路径,sav文件名必须与pro主过程同名。
3. 执行cmd命令
在cmd中执行如下命令即可实现可传参调用ENVITask。(整个命令为1行,无回车)
"C:\Program Files\Exelis\IDL85\bin\bin.x86_64\idlrt.exe" "D:\temp\test_ENVITask_Args.sav" -args "C:\Program Files\Exelis\ENVI53\classic\data\can_tmr.hdr" "D:\temp\quac_result_args.dat" |
- "C:\Program Files\Exelis\IDL85\bin\bin.x86_64\idlrt.exe":ENVI本地安装路径
- "D:\temp\test_ENVITask_Args.sav":sav文件所在完整路径
- -args:后边跟的是传入参数
注:参数个数和cmd命令长度可能有限制,如果参数过多,可将参数保存在txt或xml文件中,然后在sav文件中解析txt或xml来获取参数。
这篇关于利用CMD命令调用ENVITask实现混合编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升