You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中打开读取高光谱ENVI文件?三种尝试均报错求解决方案

核心错误原因

  1. caTools包的read.ENVI函数的headerfile参数要求传入.hdr头文件的完整路径字符串,不能传入readLines读取的内存内容,也不能省略.hdr后缀。
  2. 你的高光谱数据尺寸为5187列×6111行×115波段,总像素数超过32位整数上限,caTools的read.ENVI对大文件支持较差,会触发整数溢出警告。

解决方案

方案1:修正路径适配caTools要求

首先确认你的文件目录下存在两个匹配的文件:

  • 无后缀的原始二进制数据文件:AISA_Flight_4_resampled
  • 带.hdr后缀的头文件:AISA_Flight_4_resampled.hdr

修改代码如下:

library(caTools)
dirname <- "S:/LAB-cavender/4_Project_Folders/oakWilt/oak_wilt_image_analyses/R_input/6.15.2021 - Revisions/ENVI export/AISA/Resampled_flights"
# 原始数据文件路径(无后缀)
img_path <- file.path(dirname, "AISA_Flight_4_resampled")
# 头文件路径(需加.hdr后缀)
hdr_path <- file.path(dirname, "AISA_Flight_4_resampled.hdr")

# 先确认两个文件均存在
print(file.exists(img_path))
print(file.exists(hdr_path))

# 调用读取函数
x <- read.ENVI(filename = img_path, headerfile = hdr_path)

如果运行后依然报整数溢出错误,使用方案2。

方案2:换用terra包读取大尺寸ENVI文件

terra包是R空间数据处理的新一代工具,对大文件支持更好,只要头文件和数据文件在同目录且同名,无需单独指定头文件路径:

# 安装包(首次使用执行)
# install.packages("terra")
library(terra)

dirname <- "S:/LAB-cavender/4_Project_Folders/oakWilt/oak_wilt_image_analyses/R_input/6.15.2021 - Revisions/ENVI export/AISA/Resampled_flights"
img_path <- file.path(dirname, "AISA_Flight_4_resampled")

# 直接读取,自动识别同目录下的.hdr头文件
x <- rast(img_path)

读取得到的SpatRaster对象可直接用于后续的高光谱分析、空间运算等操作。

内容的提问来源于stack exchange,提问作者Adriana Castillo Castillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 12:24:04