大话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码到变量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之(基本操作流程)的更多相关文章
- 大话IDL编程之函数功能调用(envi_doit、ENVIRaster、ENVITask)
2020年2月1日.好长时间没更新博客,还真有点不习惯.受新型冠性病毒的影响,平时街上熙熙攘攘的人流了无踪影,2020的春节竟然来的如此冷清.为响应“呆在家里就是做贡献的号召”,在家一宅就是十多天.闲 ...
- 【大话QT之十六】使用ctkPluginFramework插件系统构建项目实战
"使用ctkPluginFramework插件系统构建项目实战",这篇文章是写博客以来最纠结的一篇文章. 倒不是由于技术都多么困难,而是想去描写叙述一个项目架构採用ctkPlugi ...
- 大话keepalive
大话keepalive 我们说到keepalive的时候,需要先明确一点,这个keepalive说的是tcp的还是http的. tcp的keepalive是侧重在保持客户端和服务端的连接,一方会不定期 ...
- 我也来说说DDD~大话目录
回到占占推荐博客索引 DDD之前没有接触过,但一但有了接触就一发不可收拾,他会带去进入一个全新的世界! DDD不是新技术,而是新思想,新模式,是软件开发领域的一次突破,它更接近于业务,对于业务的改动它 ...
- Atitti 大话存储读后感 attilax总结
Atitti 大话存储读后感 attilax总结 1.1. 大话存储中心思想(主要讲了磁盘文件等存储)1 1.2. 最耐久的存储,莫过于石头了,要想几千万年的存储信息,使用石头是最好的方式了1 1.3 ...
- GitHub新手快速入门日常操作流程
GitHub新手快速入门日常操作流程 1. 注册帐号 打开https://github.com/,填写注册信息并提交. 2. 登录帐号 打开https://github.com/login,输入注册的 ...
- 大熊君大话NodeJS之------Connect中间件模块(第一季)
一,开篇分析 截止到今天来说,NodeJS系列文章已经有将近十篇了,让我们回顾一下: (1),大熊君大话NodeJS之开篇------Why NodeJS(将Javascript进行到底) (2),大 ...
- angular模块和组件之间传递信息和操作流程的方法(笔记)
angular的模块之间,以及controller.directive等组件之间,是相对独立的,用以实现解耦合. 为实现相互之间传递信息及操作流程,有以下一些机制: 1.事件机制: $scope.$b ...
- IDL中的HRESULT值
IDL中的HRESULT值
随机推荐
- C#实现DataTable转为Excel文件
实现DataTable转为Excel文件,和上次分享的Excel文件转为DataTable互为反操作.DataTable转化为Excel文件是通过传入一个DataTable类型的参数,然后将传入的Da ...
- 记录初试Netty(2)-服务端心跳检测
今天在在搭建的netty框架中添加心跳机制,特此记录一下: 1.什么是心跳机制? 心跳是在TCP长连接中,客户端和服务端定时向对方发送数据包通知对方自己还在线,保证连接的有效性的一种机制 在 ...
- Java架构师中的内存溢出和内存泄露是什么?实际操作案例!
JAVA中的内存溢出和内存泄露分别是什么,有什么联系和区别,让我们来看一看. 01 内存泄漏 & 内存溢出 1.内存泄漏(memory leak ) 申请了内存用完了不释放,比如一共有 102 ...
- 1z0-062 题库解析6
You want execution of large database operations to suspend, and then resume, in the event of space a ...
- Docker学习(十)Docker容器编排 Docker-compose
Docker学习(十)Docker容器编排 Docker-compose 标签(空格分隔): docker 容器编排是什么 应用一般由单独容器化的组件组成,须按照一定顺序在网络级别进行组织,以使其能够 ...
- 异数OS 织梦师-水桶(三)-- RAM共享存储方案
. 异数OS 织梦师-水桶(三)– RAM共享存储方案 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455 ...
- 神器| 这款软件让win系统像Mac系统一样的好用!
每天进步一丢丢,连接梦与想 输不起的人,往往就是赢不了的人 使用过 Mac OS X 系统的朋友可能都会使用过自带的 Quick Look 快速预览功能,用鼠标选中一个文件后,再按下键盘空格键就会弹出 ...
- Python错误与异常
1 异常和错误 1.1 错误和异常 从软件方面来说,错误是语法或者逻辑上的,语法错误指示软件的结构上有错误,导致不能被解释器解释.当程序的语法正确后,剩下的就是逻辑错误了,逻辑错误可能是由于不完整或者 ...
- Linux下socket编程基本知识
本文档主要讲解了Linux下socket编程的一些基本知识,主要包括套接字和字节序的概念,以及一些常用的结构体和函数. 本文是在网易云课堂学习过程中的记录,这个老师讲得很不错,推荐大家围观. Linu ...
- Photoshop 2020安装教程
首先来看看新增功能 [Photoshop 2020新增功能] 1.ipad和云文档 2.预设改进 3.新对象选择工具 4.转换行为一致 5.改进的属性面板 6.智能对到图层 7.增强的转换变形. 需要 ...