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

参考链接

ENVI中处理夜间灯光数据时,如果发现数据与地理坐标不匹配,通常是由于数据的地理信息(如坐标系、投影、地理范围等)设置不正确或数据本身存在几何偏差。以下是几种常见的解决方法: ### 1. 检查数据的地理信息 首先,确认夜间灯光数据是否具有正确的地理头信息。可以通过ENVI的“View Metadata”功能查看数据的坐标系、投影、像元分辨率和地理范围等信息。如果这些信息缺失或错误,ENVI将无法正确地将数据与地图对齐[^1]。 ### 2. 重新定义坐标系 如果数据的地理信息存在但不正确,可以使用ENVI中的“Edit ENVI Header”工具手动修改数据的坐标系和投影信息。例如,如果已知数据应为WGS84地理坐标系但被错误地设置为其他坐标系,可以将其更正为GCS_WGS_1984[^1]。 ### 3. 几何校正(Geometric Correction) 如果数据本身存在几何偏移,需要进行几何校正。ENVI提供了“Geometric Correction”工具,可以通过控制点(Ground Control Points, GCPs)将图像与参考图像或矢量地图进行配准。具体步骤包括: - 加载参考图像或矢量地图作为配准基准; - 在夜间灯光图像和参考图像之间手动或自动选取多个匹配点; - 使用多项式拟合或三角网法(TIN)进行图像校正; - 输出校正后的图像并验证其地理一致性[^1]。 ### 4. 使用地面控制点配准工具(Registration) ENVI的“Registration”模块可用于对图像进行精确配准。该方法适用于需要将夜间灯光图像与高精度地理数据(如Landsat影像或矢量边界)对齐的情况。通过选择多个GCP,可以实现亚像元级别的精度校正[^4]。 ### 5. 利用外部地理数据进行重采样 若已知正确的地理参考数据(如Shapefile或GeoTIFF),可以使用ENVI的“Resize Data”或“Reproject Data”工具对夜间灯光图像进行重投影和重采样。该方法适用于将图像转换为统一的坐标系统和空间分辨率,以便与其他图层叠加分析[^4]。 ### 示例代码(IDL语言):使用ENVI API进行图像重投影 ```idl ; 打开原始夜间灯光图像 input_file = 'night_light_image.dat' envi_open_data, input_file, r_fid=fid ; 定义目标投影参数(WGS84地理坐标系) out_proj = envi_proj_create(/geographic, datum=8) ; 设置输出文件名 output_file = 'reprojected_night_light.dat' ; 执行图像重投影 envi_doit, 'reprojection_doit', $ infile=fid, $ out_file=output_file, $ out_proj=out_proj, $ resample_method=1 ; 双线性插值 ; 关闭文件 envi_close_data, fid ``` ### 6. 数据预处理优化 在进行上述操作前,建议对夜间灯光数据进行预处理,如去除噪声、增强对比度等,以提高后续几何校正的准确性。ENVI提供了多种图像增强工具,包括直方图拉伸、滤波处理等。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云朵不吃雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值