加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

IDL下保存数据为ENVI格式的方法

(2013-08-05 21:32:15)
分类: IDL/ENVI

引自:http://blog.sciencenet.cn/blog-344887-572682.html

1.      保存到ENVI内存中

ENVI_ENTER_DATA可以将数据保存到内存,示例代码如下。这种保存到内存的方式需要获取r_fid便于后续操作。

ENVI> ;将读取的第一个波段存储到内存中

ENVI> ENVI_ENTER_DATA, data, r_fid = rFid

http://s12/mw690/4b6e7f23gx6BCFiAsv9db&690

2.      保存为ENVI格式文件

ENVI标准格式文件包含二进制数据文件和头信息文件(扩展名为hdr),可以利用ENVI函数ENVI_WRITE_ENVI_FILE直接输出。或先输出二进制数据文件,再输出hdr头文件。示例代码如下:

ENVI> ;data = findgen(300,200)

ENVI> ;定义输出文件名

ENVI> out_file = 'c:\temp\tm_band1.img'

ENVI> ;二进制方式输出

ENVI> OPENW,lun,out_file,/get_lun

ENVI> WRITEU,lun,data

ENVI> FREE_LUN,lun

ENVI> ;写出文件的头文件信息并打开文件(图20.4

ENVI> ENVI_SETUP_HEAD, fname=out_file, $

ENVI>   ns=300, nl=200, nb=1, $

ENVI>   interleave=0, $

ENVI>   data_type=size(data,/type), $

ENVI>    offset=0, /write, /open

http://s15/mw690/4b6e7f23gx6BCFuPSICce&690

多波段文件进行连续的writeu输出,最后envi_setup_head的时候nb等参数设置正确即可。

3.      存为其他数据格式

如果需要存储为其他格式如ArcGIS GDBArcViewASCIIENVIERDASERMAPPEREsri GridJPEG2000NITFPCITIFF格式等,可以先利用2方法存储为ENVI标准格式,再调用ENVI_OUTPUT_TO_GDBENVI_OUTPUT_TO_EXTERNAL_FORMAT输出为,最后删除原ENVI格式文件即可。

示例代码如下:

ENVI> ;获取待存储的文件fid

ENVI> envi_open_file,out_file,r_fid = fid

ENVI> ;获取文件相关信息

ENVI> envi_file_query,fid ,dims = dims,nb = nb

ENVI> ;定义输出文件名

ENVI> out_name = 'c:\temp\envi_out.tif'

ENVI> ;调用函数输出为tiff文件

ENVI> ENVI_OUTPUT_TO_EXTERNAL_FORMAT, $

dims = dims,pos = lindgen(nb),out_name = out_name,/tiff,fid = fid

ENVI> ;删除原文件

ENVI> envi_file_mng,id = fid,/remove,/delete

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有