IDL(ENVI)16位数据线性拉伸

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、线性拉伸
  • 二、批处理


前言


一、线性拉伸

调用LinearPercentStretchRaster任务

代码如下:

#fuction 函数名;函数参数1,函数参数2,函数参数3
function y_linear_stretch, raster_path, respath, percent

  ; Get the task from the catalog of ENVITasks
  COMPILE_OPT IDL2
  e=envi()
  Task=ENVITask('LinearPercentStretchRaster')

  ; Define inputs
  File = Filepath('CB04A_20230401_1955.tif', $

    Root_Dir=raster_path)

  Raster = e.OpenRaster(File)
  Task.INPUT_RASTER = Raster
  # 传递任务需要的参数
  Task.PERCENT = percent

  ; Define outputs

  Task.OUTPUT_RASTER_URI = respath

  ; Run the task

  Task.Execute

  return, 0

end

二、批处理

function y_linear_stretch, raster_path, respath, percent

  ; Get the task from the catalog of ENVITasks
  COMPILE_OPT IDL2
  e=envi()
  Task=ENVITask('LinearPercentStretchRaster')

  ;遍历并筛选文件
  Result = FILE_SEARCH(raster_path, "*.tif")
  ;获取文件数量
  temp = where(FILE_TEST(Result),num)
  for index = 0,num-1,1 do begin
    ;返回一个数组
    print,Result[index]
    ; Define inputs
    ; 根据文件名与文件路径及子路径进行索引
    ;File = Filepath('CB04A_20230401_1955.tif', $
     ; Root_Dir=raster_path)
    ;File = Filepath()
    ;打开栅格操作
    Raster = e.OpenRaster(Result[index])
    Task.INPUT_RASTER = Raster
  
    Task.PERCENT = percent
  
    ; 设置输出路径
    Task.OUTPUT_RASTER_URI = Result[index].Replace(raster_path,respath)
    ; Task.OUTPUT_RASTER_URI = respath
  
    ; Run the task
  
    Task.Execute
   endfor

end


pro test

a = y_linear_stretch('Z:\LanduseDataset\DBLUE\Data','Z:\LanduseDataset\DBLUE\Data\8bit',1)

end

参考链接

你可能感兴趣的:(IDL,开发语言)