当前位置: 首页 > news >正文

使用R将nc文件转换为asc文件或者tif文件

使用R将nc文件转换为asc文件或者tif文件

文章目录

  • 前言
  • 一、nc文件转换为asc文件代码
  • 二、nc文件转换为tif文件代码
  • 总结


前言

本文主要记录一下如何将环境数据的nc文件转换为asc文件、tif文件,分享所用R代码。


一、nc文件转换为asc文件代码

使用R语言代码将nc文件批量转换为asc文件

该转换算是对于生态位模拟(ENM)分析笔记的一个步骤补充,具体可详见该文章。

#批量转换nc文件为asc文件
library(ncdf4)
library(raster)
library(progress)input_dir <- "D:/oceandata/48_nc"  #nc文件存放目录
output_dir <- "D:/oceandata/48_asc"  # 修改输出目录名
dir.create(output_dir, showWarnings = FALSE, recursive = TRUE)nc_files <- list.files(path = input_dir, pattern = "\\.nc$", full.names = TRUE)pb <- progress_bar$new(format = " 转换进度 [:bar] :percent | 剩余: :eta",total = length(nc_files), clear = FALSE,width = 60
)process_nc_file <- function(nc_file) {tryCatch({nc <- nc_open(nc_file)available_vars <- names(nc$var)first_var <- available_vars[1]nc_close(nc)tmpbr <- brick(nc_file, varname = first_var)base_name <- tools::file_path_sans_ext(basename(nc_file))# 修改为ASC输出格式output_file <- file.path(output_dir, paste0(base_name, ".asc"))writeRaster(tmpbr,filename = output_file,bylayer = TRUE,format = "ascii",  # 关键修改点NAflag = -9999)    # 设置无效值标识pb$tick()message(paste("\n成功转换:", basename(nc_file)))}, error = function(e) {pb$tick()message(paste("\n处理失败:", basename(nc_file), "错误:", e$message))})
}cat("开始批量转换NC文件为ASC...\n")
lapply(nc_files, process_nc_file)
cat("\n批量转换完成!共处理", length(nc_files), "个文件\n")

在这里插入图片描述

二、nc文件转换为tif文件代码

使用R语言将nc文件批量转换为tif文件

#library(ncdf4)
#nc <- nc_open("D:/oceandata/48_nc/Air_temperature_[range].nc")
#available_vars <- names(nc$var)  # 获取所有变量名
#first_var <- available_vars[1]   # 提取第一个变量名
#nc_close(nc)
#library(raster)#tmpbr <- brick("D:/oceandata/48_nc/Air_temperature_[range].nc", #            varname = first_var)
#print(paste("已选择变量:", first_var))
#print("数据维度信息:")
#print(dim(tmpbr))
## 显式指定输出目录
#output_dir <- "D:/output_folder"
#dir.create(output_dir, showWarnings = FALSE)
#writeRaster(tmpbr,#           filename = file.path(output_dir, paste0(names(tmpbr), ".tif")),#         bylayer = TRUE,#       format = "GTiff")# 批量处理
library(ncdf4)
library(raster)
library(progress)input_dir <- "D:/oceandata/48_nc"
output_dir <- "D:/oceandata/48_tif"
dir.create(output_dir, showWarnings = FALSE, recursive = TRUE)nc_files <- list.files(path = input_dir, pattern = "\\.nc$", full.names = TRUE)# 创建进度条
pb <- progress_bar$new(format = " 转换进度 [:bar] :percent | 剩余: :eta",total = length(nc_files), clear = FALSE,width = 60
)process_nc_file <- function(nc_file) {tryCatch({nc <- nc_open(nc_file)available_vars <- names(nc$var)first_var <- available_vars[1]nc_close(nc)tmpbr <- brick(nc_file, varname = first_var)base_name <- tools::file_path_sans_ext(basename(nc_file))output_file <- file.path(output_dir, paste0(base_name, ".tif"))writeRaster(tmpbr,filename = output_file,bylayer = TRUE,format = "GTiff")pb$tick()  # 更新进度条message(paste("\n成功转换:", basename(nc_file)))}, error = function(e) {pb$tick()message(paste("\n处理失败:", basename(nc_file), "错误:", e$message))})
}cat("开始批量转换NC文件...\n")
lapply(nc_files, process_nc_file)cat("\n批量转换完成!共处理", length(nc_files), "个文件\n")

总结

—2025-8-6

http://www.dtcms.com/a/317431.html

相关文章:

  • C语言控制语句练习题2
  • KVazaar:开源H.265/HEVC编码器技术深度解析
  • vcpkg: 一款免费开源的C++包管理器
  • 【开源分享】can-utils:深入解析 Linux CAN 工具集
  • UE编辑器相机窗口运行时相机fov 大小不一致
  • 毕业设计选题推荐之基于Spark的在线教育投融数据可视化分析系统 |爬虫|大数据|大屏|预测|深度学习|数据分析|数据挖掘
  • css margin属性auto原理
  • 海康威视相机,MVS连接成功,但无图像怎么办?
  • python每日一题 贪心算法
  • 智能文本转语音新选择:EasyVoice与内网穿透打造私域有声平台
  • 深入理解 Qt 中的 QOverload
  • 分布式事务Seata、LCN的原理深度剖析
  • Java 排序教程
  • P1983 [NOIP 2013 普及组] 车站分级
  • 《第五篇》基于RapidOCR的图片和PDF文档加载器实现详解
  • 分布式文件系统07-小文件系统的请求异步化高并发性能优化
  • LeetCode——118. 杨辉三角
  • 数据结构(四)内核链表、栈与队列
  • Go语言数据类型深度解析:位、字节与进制
  • 实时数据可视化工具SciChart.js v4.0即将发布——扩展更多极坐标图表
  • 【前端】问题总结
  • Spring Data MongoDB 教程:用 @Query 快速实现字段查询
  • 大前端游戏应用中 AI 角色行为智能控制
  • STM32CubeIDE新建项目过程记录备忘(九) A/D转换并用串口定时上报
  • 基于可视化分析的房地产市场监测与预警机制,展示二手房的价格趋势、区域分布、户型结构等关键信息
  • DataKit 采集器敏感信息加密最佳实践
  • NineData 新增支持 AWS ElastiCache 复制链路
  • 从 0 到 1 创建 InfluxDB 3 表:标签、字段、命名规范一篇讲透
  • 什么是单元测试?
  • 完美解决hive external表中csv字段内容含“,“逗号的问题