IDL基础【影像读取-转存数组-输出】

2024-05-15 17:32

本文主要是介绍IDL基础【影像读取-转存数组-输出】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

IDL是一门非常适合高分辨率和大量图像数据处理的语言,在envi的安装过程中自带,通过学习IDL,可以实现十分简单的像元运算功能,方便快捷易上手。

学习所有计算语言,入门分为三个内容:数据输入 —— 数据处理 —— 数据输出

IDL也不例外,本文将采用IDL8.5版本,对采用IDL进行图像读取、转换为数组、图像输出三个部分的内容进行讲解

讲解图像读取之前,首先需要了解一下,任何一个IDL脚本都是从pro开始,end结束,所以这个开头和结束不能省略,并且,pro后的名称代表该脚本/函数名,所以文件也需要存储为对应的名字。

开始输入前,首先新建IDL脚本,构建程序框架并保存文件名为函数名:

pro my_program

end

一、IDL图像读取

compile_opt idl2 ;更改IDL的编译配置,推荐值为IDL2,参考:http://www.harrisgeospatial.com/docs/compile_opt.html

;如果IDL程序中调用了ENVI函数,那么在发布的时候需要加上以下语句:
ENVI,/restore_base_save_files
ENVI_BATCH_INIT

;选择图像文件
image_file=DIALOG_PICKFILE(PATH=’examples\data’, $
TITLE=’Select DICOM Patient File’, FILTER=’*.tif’) ;TITLE为数据选取窗口的标题,PATH为打开文件的默认目录,TILTER为过滤出的数据格式

;读取影像文件

e=envi()
raster=e.OpenRaster(image_file)

二、图像转换到数组

;获取文件ID

fid = ENVIRasterToFID(raster)
;获取对应ID的文件基本信息

MAP_INFO = ENVI_GET_MAP_INFO(fid=fid);获取投影信息
ENVI_FILE_QUERY, fid, ns=ns, nl=nl, nb=nb, dims=dim, data_type=data_type ;获取图像行列数、维度信息和数据类型信息

;获取数据

data = raster.getdata();这里data就是得到的图像数组

三、输出数据

ENVI_WRITE_ENVI_FILE, data, out_name=’c:\desktop’, /nocopy, $
ns=ns,nl=nl,nb=nb, offset=offset, bnames=bnames, map_info=map_info

以上三个部分内容,主要完成了遥感影像数据的读入并获取相关数据的信息、转换成可计算的数组以及进行带投影的输出,其中部分功能为ENVI5.0版本以后新更新的用法,而输出功能则是传统用法。

在学习过程中,个人觉得比较难把握的就是如何带上投影信息进行数据转存,目前这种输出方法只能输出为标准ENVI STANDARD格式,如何带投影输出为TIF等格式还需要进一步学习。

?

这篇关于IDL基础【影像读取-转存数组-输出】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/992469

相关文章

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

C++一个数组赋值给另一个数组方式

《C++一个数组赋值给另一个数组方式》文章介绍了三种在C++中将一个数组赋值给另一个数组的方法:使用循环逐个元素赋值、使用标准库函数std::copy或std::memcpy以及使用标准库容器,每种方... 目录C++一个数组赋值给另一个数组循环遍历赋值使用标准库中的函数 std::copy 或 std::

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

Python使用Colorama库美化终端输出的操作示例

《Python使用Colorama库美化终端输出的操作示例》在开发命令行工具或调试程序时,我们可能会希望通过颜色来区分重要信息,比如警告、错误、提示等,而Colorama是一个简单易用的Python库... 目录python Colorama 库详解:终端输出美化的神器1. Colorama 是什么?2.