ENVI5.0对ENVI启动、数据读取、显示窗口、处理函数API进行了更新,增加了工具箱扩展流程,更新的API函数更加简洁,使用更加方便。下面首先对ENVI启动、数据读取、显示窗口控制等功能进行代码示例展示,然后利用这些功能代码结合工具箱扩展流程编写一个ENVI扩展工具实例。
1
代码简化了启动,使得在启动ENVI的代码更加简洁、直观。IDL的命令行下启动ENVI只需要输入代码:
e=ENVI() |
二次开发模式下输入代码:
ENVI5.0代码 |
之前版本代码 |
e=ENVI(/Headless) |
ENVI, /RESTORE_BASE_SAVE_FILES ENVI_BATCH_INIT |
2
之前版本中,ENVI依靠文件的ID号即FIDs来进行栅格文件的操作。ENVI5.0下可以通过新的API接口返回值来进行直接处理。比如对栅格文件的读写操作示例代码:
ENVI5.0代码 |
;启动ENVI e = ENVI(/HEADLESS) ;打开文件 file = FILEPATH('qb_boulder_msi', ROOT_DIR = e.root_dir, $ raster = e.OpenRaster(file) ;读取影像的第一个波段 data = raster.GetData(BANDS = 0) ;另存为新文件 resultFile = e.GetTemporaryFilename('.dat') newRaster = e.CreateRaster(resultFile, data, INHERITS_FROM = raster) newRaster.Save |
5.0之前版本代码 |
;启动ENVI ENVI, /RESTORE_BASE_SAVE_FILES ENVI_BATCH_INIT ;打开文件 file = FILEPATH('qb_boulder_msi', ROOT_DIR=ENVI_GET_PATH(), $ ENVI_OPEN_FILE, file, R_FID = fid ENVI_FILE_QUERY, fid, DIMS = dims data = ENVI_GET_DATA(FID = fid, DIMS = dims, pos = 0) ;另存为新文件 inherit = ENVI_SET_INHERITAN |