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

如何用R将.GRD二进制降雨网格文件转为TXT并合并多文件

用R处理印度气象局GRD降雨数据:转换为TXT并合并

核心参数确认

先明确你的GRD文件关键属性,后续代码会基于这些参数编写:

  • 网格维度:135(纬度)×129(经度)
  • 经纬度范围:纬度6.5N38.5N,经度66.5E100.0E,步长0.25度
  • 记录数:平年365条/闰年366条,每条对应1天的网格降雨数据
  • 数据格式:单精度二进制浮点型(印度气象局GRD通用格式)

步骤1:编写单个文件处理函数

这个函数负责读取GRD二进制数据,解析为包含日期、经纬度、降雨量的结构化数据框:

process_single_grd <- function(file_path, target_year) {
  # 计算当年天数
  day_count <- ifelse(target_year %% 4 == 0 & (target_year %% 100 != 0 | target_year %% 400 == 0), 366, 365)
  # 读取二进制数据:size=4对应单精度浮点,若读取异常可尝试size=8(双精度)
  raw_data <- readBin(file_path, what = "numeric", n = 135*129*day_count, size = 4)
  # 转为三维数组:[纬度, 经度, 日期]
  data_array <- array(raw_data, dim = c(135, 129, day_count))
  
  # 生成经纬度序列
  lat_list <- seq(6.5, 38.5, by = 0.25)
  lon_list <- seq(66.5, 100.0, by = 0.25)
  # 生成当年日期序列
  date_list <- seq(as.Date(paste0(target_year, "-01-01")), as.Date(paste0(target_year, "-12-31")), by = "day")
  
  # 转换为长格式数据框
  result_df <- expand.grid(Latitude = lat_list, Longitude = lon_list, Date = date_list)
  # 调整数组维度顺序,匹配数据框的排列逻辑
  result_df$Rainfall <- as.vector(aperm(data_array, c(3, 1, 2)))
  
  return(result_df)
}

步骤2:批量处理并合并所有文件

将所有GRD文件放在同一目录下,批量读取处理后合并为单个数据框:

# 设置GRD文件所在目录,替换为你的实际路径
grd_folder <- "your_grd_files_folder"
# 获取所有GRD文件路径
grd_files <- list.files(grd_folder, pattern = "\\.GRD$", full.names = TRUE)
# 从文件名提取年份(假设文件名格式类似"rain2000.GRD",需根据你的实际文件名调整匹配规则)
year_list <- as.integer(sub(".*([0-9]{4})\\.GRD$", "\\1", basename(grd_files)))

# 批量处理所有文件
all_year_data <- lapply(1:length(grd_files), function(i) {
  process_single_grd(grd_files[i], year_list[i])
})

# 合并所有年份数据
combined_data <- do.call(rbind, all_year_data)

步骤3:导出为TXT格式

将合并后的数据导出为制表符分隔的TXT文件:

write.table(combined_data, file = "combined_rainfall_2000-2020.txt", 
            sep = "\t", row.names = FALSE, quote = FALSE)

常见问题排查

  • 若读取数据出现异常值,检查readBin的size参数是否匹配数据实际精度,可尝试切换size=4或size=8。
  • 文件名年份提取失败时,修改sub函数的正则表达式,匹配你的实际文件名格式。
  • 内存不足时,可分年份导出TXT后,用系统命令合并(Windows用copy *.txt combined.txt,Linux用cat *.txt > combined.txt)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:55:00