大话IDL之(基本操作流程)

Posted ljwgis

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大话IDL之(基本操作流程)相关的知识,希望对你有一定的参考价值。

这里将对ENVI-IDL二次开发程序的一个通用流程做一个总结。

1.首先是文件打开和数据读取:

文件打开
work_dir = dialog_pickfile(title=‘选择路径‘,/directory) ;手动选择文件路径 fns = file_search(‘*.dat‘, count=fnums) ;搜寻路径中后缀为...的文件集合,接着可以用fn[i]进行遍历操作 result = envi_pickfile(/multiple_file,title=select images) ;打开图形对话框选择文件名 filename = ...... ;直接读取路径操作 envi_open_data_file,fname,r_fid=fid,/png ;在ENVI中打开ENVI支持的外部格式文件,并返回fid号
filename = filepath(‘a.xml‘, root_dir=‘D:‘, subdirectory=[‘temp‘]) ;root_dir文件根路径,subdirectory子路径

数据读取
result = envi_get_data(fid=file id, dims=array,pos=long integer) ;读取一个波段数据
result = envi_get_slice(fid=file id, line=integer, pos=array,xs=value,xe=value,[/bil][,bip]) ;从打开的ENVI文件中读取一行的数
img = read_image(fn) ;读取图像,结果为图像数组
data = e.OpenRaster(fn) ;要打开envi使用,来读取数据

2.其次是数据查询:

envi_file_query, fid, ns=ns, nl=nl, nb=nb, dims=dims  ;对于打开的ENVI文件进行查询,获取行列数、波段数、头文件偏移、数据类型、数据存放顺序、定标系数等信息
envi_get_map_info(fid=file id)  ;返回投影坐标信息

3.接着是数据读取写入(二进制文件/ASCII码...):

openr, lun, fname, /get_lun        ; 打开文件读操作
openw, lun, fname, /get_lun       ; 写操作
openu, lun ,fname, /get_lun       ; 读写操作

readf, lun, var  ;读取ASCII码
readu, lun, var  ;读取二进制文件
printf, lun, var  ;写入ASCII码
writeu, lun, var ;写入二进制文件

result = read_csv(fname,count=n1,header=header) ;读取csv文件

4.文件保存:

envi_write_envi_file, data, out_name=variable, ns=ns, nl=nl, nb=nb  ;文件保存
data.export, ‘c:/1.tif‘    ;文件保存

5.异常处理:

Catch, errorStatus
IF (errorStatus NE  0) THEN BEGIN
    Catch, /CANCEL
    err_msgs = [err_msgs, file+--+!ERROR_STATE.MSG]
    MESSAGE, /reset
    CONTINUE
ENDIF

6.文件路径、名称更改:

FILE_BASENAME(file)  ;获取文件名
FILE_DIRNAME(file)   ;获取文件夹路径

file.replace(.tif,_ndvi.tif)  ;更换文件名后缀,进行更改

7. 字符串操作方法:

技术图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

除了上述基本操作以外,还有投影信息的变换、矢量数据读取等方法,下次进行介绍。

 

以上是关于大话IDL之(基本操作流程)的主要内容,如果未能解决你的问题,请参考以下文章

java 之 模板模式(大话设计模式)

环境初始化 Build and Install the Apache Thrift IDL Compiler Install the Platform Development Tools(代码片段

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

序列化之 TLV