这里将对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码到变量var中
readu, lun, var ;读取二进制数据
printf, lun, var ;写入ASCII码到文件中(lun对应的文件)
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之(基本操作流程)的更多相关文章

  1. 大话IDL编程之函数功能调用(envi_doit、ENVIRaster、ENVITask)

    2020年2月1日.好长时间没更新博客,还真有点不习惯.受新型冠性病毒的影响,平时街上熙熙攘攘的人流了无踪影,2020的春节竟然来的如此冷清.为响应“呆在家里就是做贡献的号召”,在家一宅就是十多天.闲 ...

  2. 【大话QT之十六】使用ctkPluginFramework插件系统构建项目实战

    "使用ctkPluginFramework插件系统构建项目实战",这篇文章是写博客以来最纠结的一篇文章. 倒不是由于技术都多么困难,而是想去描写叙述一个项目架构採用ctkPlugi ...

  3. 大话keepalive

    大话keepalive 我们说到keepalive的时候,需要先明确一点,这个keepalive说的是tcp的还是http的. tcp的keepalive是侧重在保持客户端和服务端的连接,一方会不定期 ...

  4. 我也来说说DDD~大话目录

    回到占占推荐博客索引 DDD之前没有接触过,但一但有了接触就一发不可收拾,他会带去进入一个全新的世界! DDD不是新技术,而是新思想,新模式,是软件开发领域的一次突破,它更接近于业务,对于业务的改动它 ...

  5. Atitti 大话存储读后感 attilax总结

    Atitti 大话存储读后感 attilax总结 1.1. 大话存储中心思想(主要讲了磁盘文件等存储)1 1.2. 最耐久的存储,莫过于石头了,要想几千万年的存储信息,使用石头是最好的方式了1 1.3 ...

  6. GitHub新手快速入门日常操作流程

    GitHub新手快速入门日常操作流程 1. 注册帐号 打开https://github.com/,填写注册信息并提交. 2. 登录帐号 打开https://github.com/login,输入注册的 ...

  7. 大熊君大话NodeJS之------Connect中间件模块(第一季)

    一,开篇分析 截止到今天来说,NodeJS系列文章已经有将近十篇了,让我们回顾一下: (1),大熊君大话NodeJS之开篇------Why NodeJS(将Javascript进行到底) (2),大 ...

  8. angular模块和组件之间传递信息和操作流程的方法(笔记)

    angular的模块之间,以及controller.directive等组件之间,是相对独立的,用以实现解耦合. 为实现相互之间传递信息及操作流程,有以下一些机制: 1.事件机制: $scope.$b ...

  9. IDL中的HRESULT值

    IDL中的HRESULT值

随机推荐

  1. esri mdb 数据库导入 到postgreSQL

    需求: 项目升级,需要将esri的个人数据库(mdb格式)导入到开源数据库postgreSQL中. 思路: 使用fwtools工具导出到数据库中. 环境: windows+fwtools+postgr ...

  2. Spring--2.Spring之IOC--IOC容器的23个实验(2)

    Spring--2.Spring之IOC--IOC容器的23个实验(1) 中的所有实验我都是在同一个工程中进行的,从第十个实验开始,我将新建一个新的工程开始实验. 目前导包还是跟第一个项目一致,bea ...

  3. 在IIS上发布netcore项目

    保证电脑上有.net core sdk或者.net core runtime; 需要安装AspNetCoreModule托管模块:DotNetCore.2.0.5-WindowsHosting.exe ...

  4. vue状态管理vuex从浅入深详细讲解

    1.vuex简介以及创建一个简单的仓库 vuex是专门为vue框架而设计出的一个公共数据管理框架,任何组件都可以通过状态管理仓库数据沟通,也可以统一从仓库获取数据,在比较大型的应用中,数据交互庞大的情 ...

  5. 线段相交的异或值 (线段树 or 优先队列)

    VVQ 最近迷上了线段这种东西 现在他手上有 n 条线段,他希望在其中找到两条有公共点的线段,使得他们的异或值最大. 定义线段的异或值为它们并的长度减他们交的长度 输入描述: 第一行包括一个正整数 n ...

  6. 洛谷p1137 模拟退火

    题目链接:https://www.luogu.org/problem/P1337 以x为原点,将力分解成横纵方向的力,每次退火时单独对答案的横纵坐标进行判断是否更新答案 #include<ios ...

  7. Git将一个项目同时从本地推送到GitHub和Gitee

    前言 博主是根据自己的情况写这篇博文的,每个人遇到的情况和需求可能不一样哈,所以初始的步骤也不一定一致,但是同时推送到Github和Gitee的步骤都会是一致滴! Gitee拉取Github仓库 直接 ...

  8. flash-session

    作用:更改session存储的位置 1.session默认存放在浏览器的cookie中 源码 wsgi->app.__call__->wsgi_app->push->self. ...

  9. limit_choices_to

    # 多对多 老师 teachers = models.ManyToManyField(verbose_name='任课老师', to='UserInfo', related_name="ab ...

  10. C# 自动批量搜索指定关键字,没有注册的域名

    做好网站了,部署上线.想注册域名,但是想了很多要注册的,都被别人注册了.例如已经做好了体育资讯的网站,想要包含关键字sport的域名,就可以用这个工具自动完成搜索. 效果如下图: 演示程序结构 在vs ...