ENVI-IDL可视化程序设计 楚雄师范学院地理科学与旅游管理学院 杨云源 kingcowboy@qq.com QQ:276561444
目 录 第一章 ENVI-IDL开发环境 第二章 数据类型、运算符与表达式 第三章 选择结构与循环结构 第四章 过程与函数 第五章 直接图形法绘图 第六章 对象图形法绘图 第七章 文件访问 第八章 地图输出 第九章 界面与事件 第十章 IDL访问数据库 第十一章 图像处理 第十二章 ENVI-IDL编程与RS-GIS混合编程
第七章 文件访问 IDL具有强大的文件访问功能,常用文件包括:数据文件(如txt文件、二进制文件)、图片文件(如jpg文件、bmp文件)、矢量地图文件(如shape file文件)、栅格地图文件(如tiff文件、ENVI地图文件、hdf格式的modis文件)等。
第七章 文件访问 7.1 数据文件访问 7.1.1 TXT文件访问
第七章 文件访问 通过openr/openw/openu语句打开文件,成功后就有了文件号,若失败则文件号为-1。 打开.txt文件格式为: readf,文件号,变量名1, [变量名2,……] 写.txt文件格式为: printf,文件号,变量名1, [变量名2,……] 移动.txt文件指针格式为: point_lun,文件号, 指针位置 释放.txt文件格式为: free_lun,文件号 关闭.txt文件格式为: close,文件号
第七章 文件访问 1、将.txt文件中的数据读入 ①、按行读取 ②、批量读取 ③、混合型数据读取 2、写.txt文件 3、自由格式文本读写 7.1.2 二进制文件访问
第七章 文件访问
第七章 文件访问 读取二进制文件,也可以使用read_binary函数。 格式:result=read_binary(文件名/文件号, [关键字=值]) 表7.3是read_binary函数主要的参数与关键字,表7.4是read_binary函数的关键字data_type对应的数据类型。
第七章 文件访问
第七章 文件访问
第七章 文件访问 7.2.1 JPG文件访问 jpg文件信息查询的格式为: state=query_jpeg(文件名, result) 说明:如果查询成功,state为1,否则为0;查询成功,resulet返回一个结构体,记录查询结果。 读入jpg文件的格式为: read_jpeg,文件名,数组名,关键字=值 说明:可通过设定关键字true的取值来设定返回数组的维度。如果是彩色图片,设置true=1,则数组的维度为[3,m,n];true=2,则数组的维度为[m,3,n];true=3,则数组的维度为[m,n,3]。如果是灰度图,则数组维度为[m,n]。 写入jpg文件的格式为: write_jpeg,文件名, 数组名, 关键字=值
第七章 文件访问
第七章 文件访问 file='d:\idl\default\idl data\chapter7\cxtc.bmp state=query_bmp(file,info) data=read_bmp(file,/rgb) data_size=size(data) ;新建窗体显示数据,设定xsize,ysize与图片行列号一致 window,0,xsize=data_size[2],ysize=data_size[3] tv,data,true=1 ;图7.4 ;获取101行101列开头的150行×150列数据 data1=data(*,100:249,100:249) window,1,xsize=150,ysize=150 tv,data1,true=1 ;图7.5 ;切片数据写为bmp图像 write_bmp,'d:\1.bmp',data1,/rgb
第七章 文件访问
第七章 文件访问 7.3 ShapeFile格式矢量地图文件访问 7.3.1 ShapeFile文件格式简介 shapefile文件是美国环境系统研究所(ESRI)研制的矢量地图文件格式。shapefile文件中存储了地图图形信息、属性信息、索引信息、投影信息等内容。
第七章 文件访问
第七章 文件访问
第七章 文件访问
第七章 文件访问 7.3.2 基于二进制文件法访问ShapeFile文件 1、读取shp格式文件 ①、shp文件结构
第七章 文件访问
第七章 文件访问
第七章 文件访问
第七章 文件访问
第七章 文件访问
第七章 文件访问
第七章 文件访问 7.3.3 基于对象图形法访问Shapefile文件 使用IDLffShape对象可直接访问shapefile数据。 对象创建格式:对象名= obj_new('IDLffShape',文件名) 说明:文件名直接指向.shp文件。 创建对象后,就可访问该shapefile文件的相关数据。 格式:对象名->方法名[,属性名=值]
第七章 文件访问 7.4 TIFF格式栅格地图文件访问
第七章 文件访问 7.4.1 TIFF文件基本操作函数 1、文件信息查询 格式:state=query_tiff(file,tiff_info[,关键字=值]) 说明:查询成功,则state=1,否则为0。若查询成功,tiff_info返回一个结构体,结构体包含了查询文件的基本信息。关键字geotiff可返回投影信息的结构体;若一个tiff文件中包含多个图像文件,需查询某个文件信息时,使用关键字image_index指定需查询图像的索引,索引值从0开始。 2、文件读取 格式:tif_img=read_tiff(file [,关键字=值]) 说明:读取数据为数组,存储在tif_img数组中。若一个tiff文件中包含多个图像文件,使用关键字image_index指定需读取图像的索引;使用sub_rect关键字指定读取数据的范围。 3、文件写入 格式:write_tiff ,file,data [,关键字=值]
第七章 文件访问
第七章 文件访问
第七章 文件访问 7.5 HDF格式文件访问
第七章 文件访问
第七章 文件访问 7.5.1 HDF文件访问 1、hdf_ishdf 2、hdf_sd_start 3、hdf_sd_fileinfo 4、hdf_sd_select 5、hdf_sd_getinfo 6、hdf_sd_getdata 7、hdf_sd_endaccess 8、hdf_sd_end
第七章 文件访问
第七章 文件访问 7.5.2 使用ENVI插件MCTK访问HDF格式Modis文件 1、Modis数据与MCTK简介
第七章 文件访问 Modis数据下载网址很多,如:http://ladsweb.nascom.nasa.gov/data/search.html http://glovis.usgs.gov/
第七章 文件访问
第七章 文件访问 ENVI4.x和ENVI5.x调用MCTK的过程名都是:convert_modis_data。
第七章 文件访问
第七章 文件访问 2、基于MCKT进行Modis数据处理
第七章 文件访问 1、L1A数据导入 2、L1B数据导入 3、L2 级数据导入 4、L3级数据导入
第七章 文件访问 7.6 使用ENVI函数访问栅格地图文件 7.6.1 使用ENVI函数获取栅格地图文件
第七章 文件访问
第七章 文件访问 7.6.2 使用ENVI函数进行投影设置
第七章 文件访问 1、地图信息、投影信息获取 文件的mapinfo结构体内包括的成员信息为:投影结构体(proj)、图像左上角行列坐标及其对应的地图坐标(mc,4个元素的数组)、图像分辨率(ps,图像分辨率,2个元素的数组)等信息。 地图信息获取格式: result= envi_get_map_info(fid=file_id) 地图投影信息获取格式: result= envi_get_projection (fid=file_id) 其中的file_id即文件ID,可以通过envi_open_file获取。
第七章 文件访问 2、图像行列坐标和地图坐标的相互转换 图像上的行列坐标和地图坐标的相互转换可以使用envi_convert_file_coordinates函数实现。 格式: envi_convert_file_coordinates, xf, yf, xmap, ymap[,/to_map] 说明: xf:图像列坐标。 yf:图像行坐标。 xmap:图像x坐标(地图坐标)。 ymap:图像y坐标(地图坐标)。 to_map:取值1,指定从图像行列坐标转换到地图坐标。默认状态下,不使用该关键字,从地图坐标转换到行列坐标。
第七章 文件访问 3、创建mapinfo结构体、projection结构体 创建mapinfo结构体时,不一定要对每个成员进行赋值。IDL中自建了一些关键字,能够辅助进行mapinfo结构体创建。 创建投影坐标下的mapinfo结构体时,需确定左上角的行列坐标及其对应的地理坐标值、图像分辨率、单位、投影名称、椭球体名称等参数。 【例7.38】创建投影坐标、UTM投影、第47投影带的语句为: IDL>envi_convert_file_coordinates,fid_file1,0,0,$ upperleft_x,upperleft_y,/to_map IDL>mc=[0,0,upperleft_x,upperleft_y] IDL>ps=[1000,1000] IDL>units=envi_translate_projection_units('meters') IDL>output_mapinfo=envi_map_info_create(/utm,zone=47,$ ,units=units,ps=ps,mc=mc,datum='WGS-84')
第七章 文件访问