ENVI_IDL:批量获取影像文件各个波段的中值并输出为csv文件

简介: ENVI_IDL:批量获取影像文件各个波段的中值并输出为csv文件

01 实验数据

诸多.float后缀的影像文件(但以ENVI默认格式存储)

02 实验思路

迭代循环所有影像文件所在的文件夹, 获取每一个float后缀的影像文件,并对每一个影像文件进行循环,获取循环文件的每一个波段影像的中值,最后将其输出为csv文件(每一列表示一个影像文件各个波段的中值数)


03 部分函数说明

Result = SIZE( Expression [, / L64 ] [, / DIMENSIONS | , / FILE_LUN | , / FILE_OFFSET | , / N_DIMENSIONS | , / N_ELEMENTS | , / SNAME , | , / STRUCTURE | , / TNAME | , / TYPE ] )

解释:expresion表示传入的数组,size函数依次返回该数组的维度、列数、行数、数组元素的数据类型(返回类型代码)、数组元素的总个数;(以一维数组形式返回)


(除了L64之外,上述所有关键字参数用于确定SIZE函数的返回值,并且它们是互斥的——最多只能指定上述关键字之一)


部分参数说明:


DIMENSIONS

将此关键字设置为返回Expression的维度。如果Expression是标量,则结果是包含0的标量。对于数组、列表和哈希表,结果是包含数组或列表维度的数组。如果Expression中的元素数量需要,结果为32位整数,如果需要,为64位整数。设置L64以强制在所有情况下返回64位整数。如果Expression未定义,则IDL报告八个维度。(例如是3列4行的数组,那么返回3 4)


L64

默认情况下,SIZE的结果在可能的情况下为32位整数,如果Expression中的元素数量需要,则为64位整数。设置L64以强制在所有情况下返回64位整数。除了影响默认结果外,L64还影响DIMENSIONS、FILE_OFFSET、N_ELEMENTS和STRUCTURE关键字的输出。


N_DIMENSIONS

将此关键字设置为返回Expression中的维数(如果它是数组或列表)。如果Expression是标量或未定义的,则返回0。


N_ELEMENTS

将此关键字设置为返回Expression中的数据元素数量。设置此关键字相当于使用N_ELEMENTS函数。如果Expression中的元素数量需要,则结果将为32位整数,如果需要,则为64位整数。设置L64以强制在所有情况下返回64位整数。如果Expression未定义,则返回0。


其中,数据类型代码的指代如下:



Result = MEDIAN(Array [, Width] [, /DOUBLE] [, DIMENSION=value] [, /EVEN])


其中,参数的含义为:


- Array:要计算中位数的数组。

- Width:指定中位数计算的窗口大小。默认情况下,中位数计算的窗口大小为1,即只考虑每个元素本身的值。如果指定了Width参数,则中位数计算的窗口大小为2*Width+1。例如,如果Width=2,则计算的窗口大小为5,包括当前元素及其相邻的4个元素。如果Width=0,则计算的窗口大小为1,即只考虑当前元素本身的值。

- /DOUBLE:指定计算中间结果时使用双精度浮点数。默认情况下,MEDIAN函数使用单精度浮点数计算中间结果。

- DIMENSION=value:指定在哪个维度上计算中位数。默认情况下,MEDIAN函数在整个数组上计算中位数。如果指定了DIMENSION参数,则在指定的维度上计算中位数。例如,如果DIMENSION=1,则在数组的第一维(行)上计算中位数。

- /EVEN:指定在计算中位数时,如果窗口大小为偶数,则取中间两个数的平均值作为中位数。默认情况下,如果窗口大小为偶数,则取第二个中间数作为中位数。


04 代码部分

pro batch_extract_median
  ; 二次开发接口
  compile_opt IDL2
  e = envi(/headless) ; Launch the application
  ; 所有需要提取的文件的所在目录
  in_path = "C:\Users\HeZehuang\Desktop\66"
  ; 获取in_path目录下所有满足后缀为.float的文件
  files_path = file_search(in_path, "*.float", count=files_amount)
  ; 创建存储所有影像中值的csv文件
  csvfile_path = "C:\Users\HeZehuang\Desktop\median.csv"
  ; 存储所有影像中值的矩阵
  box_median = fltarr(files_amount, 128)
  ; 进入循环对每一个文件做批量处理
  for file_i = 0, files_amount - 1 do begin
    ; 获取当前循环下的文件路径
    file_path = files_path[file_i];
    file_name = FILE_BASENAME(file_path, ".float")
    ; 获取该文件数据
    dat = e.OpenRaster(file_path)
    dat_data = dat.GetData()
    ; 获取该文件的行列数以及波段数,这里需要注意,这里size函数的输出结果与前文的讲解不一致,可能
    ; 与该文件是ENVI默认格式有关,一般读取tiff等格式时就是正常的,所以大家最好打开ENVI看一下行列
    ; 以及波段数在数组的哪个索引上
    dat_size = size(dat_data)
    dat_col = dat_size[1]
    dat_row = dat_size[3]
    dat_channel = dat_size[2]
    ; 对当前循环的文件再次循环,找到每一个波段的中值
    for channel_i = 0, dat_channel - 1 do begin
      ; 获取当前波段影像的中值
      data = dat_data[channel_i, *, *]
      channel_median = median(data[where(data ne 0.0)], /EVEN)
      ; 存储当前循环文件下的第channel_i波段的中值
      box_median[file_i, channel_i] = channel_median
    endfor
    print, file_name, "提取中值完毕"
  endfor
  ; 将保存在矩阵中的中值全部存储为csv格式
  write_csv, csvfile_path, box_median
end
目录
相关文章
|
ice
Google Earth Engine ——Landsat 7 影像集合数据集详细介绍
Google Earth Engine ——Landsat 7 影像集合数据集详细介绍
398 1
|
1月前
|
数据采集 数据可视化 数据挖掘
从CSV到交互式地图:用Plotly Express可视化地理数据
交互式地图让数据“活”起来:通过悬停、点击、缩放直观探索地理信息。结合Python的Pandas与Plotly Express,仅需几行代码即可实现散点图、热力图、线路图等可视化,支持自定义样式、动态筛选与多图层叠加,广泛应用于商业分析、环境监测、物流追踪等领域,零基础也能快速上手的空间数据分析利器。
142 1
|
传感器 测试技术 atlas
Landsat系列卫星:Landsat 9 详解和细节(NASA/USGS)
Landsat系列卫星:Landsat 9 详解和细节(NASA/USGS)
4307 0
Landsat系列卫星:Landsat 9 详解和细节(NASA/USGS)
|
机器学习/深度学习 JSON 算法
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
3518 0
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
|
定位技术 开发工具 数据安全/隐私保护
GIS数据格式坐标转换(地球坐标WGS84、GCJ-02、火星坐标、百度坐标BD-09、国家大地坐标系CGCS2000)
GIS数据格式坐标转换(地球坐标WGS84、GCJ-02、火星坐标、百度坐标BD-09、国家大地坐标系CGCS2000)
4850 1
ENVI Classic:如何进行图像融合(HSV变换/Brovey变换/PC变换)?
ENVI Classic:如何进行图像融合(HSV变换/Brovey变换/PC变换)?
3561 0
ArcMAP对遥感影像进行波段提取的3种方法
ArcMAP对遥感影像进行波段提取的3种方法
4485 0
ENVI_IDL:如何读取HDF4文件和HDF5文件的数据集和属性?
参考Documentation Center (l3harrisgeospatial.com) 由于时间和精力,这里并没有对其中的函数进行详细的说明,只是介绍了函数作用以及用法。
492 0
|
数据处理 Windows
成信大ENVI_IDL第二周课堂内容:打开HDF4文件并读取文件以及简单的数据处理和保存+详细解析
成信大ENVI_IDL第二周课堂内容:打开HDF4文件并读取文件以及简单的数据处理和保存+详细解析
843 1
|
编译器 C语言 Windows
windows MinGW C语言编译器安装及环境变量配置教程
MinGW被称为Windows版的GCC,安装包下载地址:提示:该安装包下载完之后,相当于安装好了MinGW,之后即可配置环境变量!所以,可以先新建好一个专门用来存放MinGW安装包的文件夹。
839 2

热门文章

最新文章