IDL程序设计笔记资料.doc

上传人:小** 文档编号:576066 上传时间:2018-10-31 格式:DOC 页数:23 大小:1.14MB
返回 下载 相关 举报
IDL程序设计笔记资料.doc_第1页
第1页 / 共23页
IDL程序设计笔记资料.doc_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《IDL程序设计笔记资料.doc》由会员分享,可在线阅读,更多相关《IDL程序设计笔记资料.doc(23页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、|目录Part one:文件读写操作 .11、格式化输入与输出(readprint) .12、ASCII 文件读写 .23、二进制文件读写 .54、图像格式文件读写 .75、科学数据格式读写* .8Part two:图形绘制 .11(一)plot 过程绘制 .11(二)plotg()函数绘制 .12(三)散点图 .12(四)柱状图、条形图 .15(五)绘制颜色条 colorbar .18Part three: ENVI 二次开发 .201、自定义波段运算函数 .202、IDL 中常见波段运算 .213、ENVI classic 创建自定义菜单 .224、ENVI classic+IDL 二次开

2、发 .23Part one:文件读写操作1、格式化输入与输出(readprint)1) Read:该函数用于从键盘键入数据,默认数据类型为浮点型,若要输入其他类型数据,需要先定义数据类型。Eg:2) Print:|该函数用于将数据输出打印到控制台,这里主要讲格式化控制输出format 关键字。表 01 常用格式化控制符格式代码 输出效果aN 字符或者字符串按照 N 个字符宽度输出fn.m 浮点型数组按照 N 个字符宽度输出,小数点保留 M 位dn.m double 型数组按照 N 个字符宽度输出,小数点保留 M 位en.m 按照 N 个字符宽度的科学计数法输出,小数点后精确到 M 位Nx 输出

3、 N 个空格字符串/H 直接引用字符串输出或者用 H 直接输出字符串c( ) 用于输出日期数据Eg:|2、 ASCII 文件读写 常见 ASCII 文件:txt、matlab 程序文件(*.m) 、c 程序文件(*.c) 、遥感影像头文件(如 ENVI 格式的头文件 *.hdr)1) 选择文件:fn = dialog_pickfile(title=选择ASCII文件: ,get_path = work_dir)cd,work_dir ;用于跳转到当前工作路径2) 查询文件:file_search()函数Eg:查找当前工作路径下所有的 txt 文件,并返回文件数目*: File_lines(fn

4、ame)函数用于查询文本文件的行数。3) 打开文件:在 IDL 中读写 ASCII 码或者二进制文件,首先需要将文件与一个逻辑设备号关联起来。语法:openr/openw/openu, lun, fname, /get_lun, width=10,/append4) 读写操作:IDL 中利用 readf 函数读取文本文件、利用 printf 函数写入 ASCII 文件 Readf, lun, var01, var02. printf, lun, var01, var02.5) 文件关闭:在对文件操作完成之后,需要关闭文件的逻辑设备号,eg: freee_lun,lunEG:|*如何获取某个文件

5、你的列数:先读取一行数据,然后利用空格进行字符串拆分;最后利用n_elements()计算元素个数即为 ns对于某些遥感数据的头文件前面几行是说明文件,后一部分才是数据的,读取有两种方式:1) 定义一个临时变量 temp,将说明文字用该变量存储2) 直接跳行:skip_lun, lun, 3, /lines ;跳过文件的前三行3、二进制文件读写多数遥感数据的数据文件都是二进制文件。1) 函数 readu, lun, var01, var02.用于读取二进制文件*:对于某些数据文件开头是说明信息,读取时可以用 point_lun, lun, position直接按字节跳过。Eg:读取 IDL 文

6、件下的 envi.img 数据2) 函数 writeu, lun, var01, var02用于写入二进制文件。Eg01:将上面读取的 envi.img 计算其 NDVI 并保存为二进制文件|Eg02:Eg03:;读取cha06 下的风云02 卫星数据pro read_AWXfile = E:zengskIDLCha06dataFY2C_TBB_IR1_OTG_20061130_AOAD.AWXopenr, lun, file, /get_lun;跳过前20个字节point_lun,lun,20Headline = indgen(3);定义三个整型数据,分别读取记录长度、头文件记录数、数据记录

7、数readu, lun, Headlineprint,headline0, headline1,headline2;定位到第58个字节,读取数据日期point_lun, lun, 58Begindate = indgen(5);记录开始日期readu, lun, Begindate|Enddate = indgen(5);记录结束日期readu, lun, Enddatelat_long = indgen(4);记录网格左上和右上角的经纬度readu, lun, lat_longprint,Begindateprint,Enddateprint,lat_long;基于Headline信息数组,

8、定义字节数组,其行列数分别为记录长度和数据记录数data = bytarr(Headline2,Headline0);定位到数据部分,其头文件结束的字节位置为“ 头文件记录数* 记录长度”point_lun, lun, Headline0 * Headline1print,Headline0 * Headline1;读取数据部分readu, lun, datahelp,data;显示数据window, 0, xsize = 500, ysize = 500tv, congrid(data, 500, 500)end4、图像格式文件读写IDL 自带了丰富的多种图像读写函数,如 BMP,JPG,P

9、NG, JPEG2000, DICOM,TIFF 等相关函数:文件查询:query_image(fname, dimensions = dimensions, channels = nb ) ;channels 返回波段数、dimensions 返回图像的行列数读取图像:read_image ( fname ); 结果返回图像数组写入图像:write_image, fname(可带路径), jpg/bmp/tiff ,data, /order ; order 关键字用于设置图像的纵坐标从上往下算起,默认为从下往上。*注: I、以上三个函数对于 IDL 支持的图像格式都适用。II、显示图像时:

10、tv 用法:tv, data, true = 1/2/3 ;其中关键字 true = 1 表示数据格式为(3, m, n) 、true = 2 表示数组格式为(m, 3, n) 、true = 3 表示格式为(m, n, 3)III、tvrd:屏幕拷贝函数,返回当前直接图形窗口或设备的指定矩形部分的内容。IV、对遥感图像而言,其数据存放方式有 BSQBIPBIL,以一|个三维 m 列 n 行的遥感数据为例:BSQ 的表示方式为 m, n, 3、BIP 表达方式为3, m ,n 、 BIL 的表达方式为m, 3, n,常用的图像文件一般是 BIP 方式存储,遥感文件一般是 BSQ。1) JPEG

11、 格式:读 read_jpeg写 write_jpegEg01:Eg02:2) BMP 格式:(不采用任何压缩),数据存储量一般很大读:read_imge(fname) or read_bmp(fname, /rgb)写:write_bmp, fname, data, /rgb3) TIFF 格式:TIFF 可以存储多波段图像,还可以包含投影信息,如 landsat-7 就是直接用.tiff 存储的。Eg01:|5、科学数据格式读写*IDL 中支持的科学数据格式包括 CDF、HDF、 HDF5、HDF-EOS、NetCDF等等。1) HDF4 文件:目前国内外的多种卫星传感器都是将 HDF 作

12、为标准数据格式,包括EOS/MODIS、EOS/OMI、HJ-01/HSI 、FY-3/MERSI。EG01:;读取E:ENVIIDL下的MODIS数据的经纬度以及其1KM的反射率数据集pro test_hdffname=dialog_pickfile(title =选择数据文件:,get_path=cur_dir)cd, cur_dirhdf_id=hdf_sd_start(fname);打开hdf文件,返回一个文件idhdf_sd_fileinfo,hdf_id,sd_nums,attribute;用于获取HDF文件的数据集数目和属性数目print,sd_nums,attribute;读取

13、经度lat_index=hdf_sd_nametoindex(hdf_id,Latitude);根据数据集名称来获取数据集的索引号lat_id=hdf_sd_select(hdf_id,lat_index);利用索引号选择数据集,返回一个数据集的idhdf_sd_getinfo,lat_id,name=name,unit=unit;查询已打开的数据集的基本信息print,name,“ “, unithdf_sd_getdata,lat_id,lat;读取数据,参数lat用于返回读取的数据hdf_sd_endaccess,lat_id;关闭已经打开的数据集help,lat|;读取纬度lon_in

14、dex=hdf_sd_nametoindex(hdf_id,Longitude)lon_id=hdf_sd_select(hdf_id,lon_index)hdf_sd_getinfo,lon_id,name=name,unit=unitprint,name,“ “, unithdf_sd_getdata,lon_id,lonhdf_sd_endaccess,lon_idhelp,lon;读取1KM 反射率数据ref_index=hdf_sd_nametoindex(hdf_id,EV_1KM_RefSB)ref_id=hdf_sd_select(hdf_id,ref_index)hdf_sd

15、_getinfo,ref_id,name=name,unit=unitprint,name,“ “, unithdf_sd_getdata,ref_id,ref_valuehdf_sd_endaccess,ref_idhelp,ref_valuehdf_sd_end, hdf_id;关闭打开的文件end运行效果2)*.h5、*.hdf5、*.he5 格式的读取:;下面介绍一个读取环境卫星*.h5数据格式的例子pro read_hdf5fname=dialog_pickfile(title =选择数据文件:,get_path=cur_dir)cd, cur_dir;打开一个图形用户界面查看h5文件result=h5_browser(fname);h5_message=h5_parse(fname);查询文件的基本信息,返回一个结构体变量;print,h5_messageh5_id=h5f_open(fname);打开一个h5文件,返回一个文件的id

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com