ENVI与IDL联合:图像文件二进制读写操作详解

需积分: 9 4 下载量 98 浏览量 更新于2024-09-25 2 收藏 28KB DOC 举报
本篇文章主要介绍了如何利用IDL编程环境(Interactive Data Language)配合ENVI软件工具包来实现二进制图像文件的读写操作。IDL是一种强大的交互式数据处理语言,广泛应用于遥感科学和地理信息系统中。 首先,程序通过`dialog_pickfile()`函数在用户指定的路径(这里是'E:\dvi\clip')中打开一个对话框,让用户选择要处理的图像文件。如果用户没有选择文件,程序会结束。选取文件后,程序使用`envi_open_file()`函数获取文件标识符(fid),并使用`envi_file_query()`函数获取文件的基本信息,如数据类型(如遥感数据通常为BIL或bil)、图像的行数(ns)、列数(nl)以及波段数量(nb)。这些信息对于后续的数据处理至关重要。 接着,定义了一个三维数组`data`,其大小与图像的维度相同,用于存储读取的数据。使用`envi_get_data()`函数按波段顺序逐个读取数据,并将每一波段的数据存储到相应的数组位置。该函数接受文件标识符、数据范围(`dims`数组)以及要读取的波段号作为参数。 为了保存读取的数据,程序再次使用`dialog_pickfile()`函数,但这次是以写入模式,提示用户输入输出文件名。如果用户未选择,则程序返回。然后通过`openw`命令打开选定的输出文件,将`data`数组以二进制格式写入文件。这里使用了`writeu`函数,确保数据被正确地格式化并写入。 在数据写入完成后,使用`envi_setup_head()`函数设置输出文件的头部信息,包括文件的尺寸、数据类型(通常设为1,表示单波段数据,如果是多波段则可能为其他值)、波段间数据的存储方式(interleave=0表示按行存储,即逐行读取数据)以及打开文件供后续访问。最后,释放相关资源,确保文件操作的正确性。 总结来说,这篇文章展示了如何在IDL环境下通过ENVI库功能进行二进制图像文件的读取和写入,这对于数据预处理、分析和存储等遥感应用具有实际价值。掌握这样的技能可以帮助用户高效地处理大量遥感数据,并确保数据的正确性和一致性。