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

【环境数据处理】-基于R批量对环境数据克里金插值提高数据精度

【环境数据处理】-基于R批量对环境数据克里金插值提高数据精度

# 加载必要的包
if (!require("sp")) install.packages("sp")
if (!require("gstat")) install.packages("gstat")
if (!require("raster")) install.packages("raster")
if (!require("automap")) install.packages("automap")library(sp)
library(gstat)
library(raster)
library(automap)# 设置工作目录和文件路径
input_dir <- "F:/西安科硕信息/2.环境数据已处理/CurrentALL/4"
output_dir <- "F:/西安科硕信息/2.环境数据已处理/CurrentALL/3"# 创建输出目录(如果不存在)
if (!dir.exists(output_dir)) {dir.create(output_dir, recursive = TRUE)
}# 获取所有ASC文件
asc_files <- list.files(path = input_dir, pattern = "\\.asc$", full.names = TRUE)# 检查是否找到文件
if (length(asc_files) == 0) {stop("在指定目录中未找到ASC文件")
}cat("找到", length(asc_files), "个ASC文件\n")# 处理每个ASC文件
for (i in 1:length(asc_files)) {asc_file <- asc_files[i]filename <- basename(asc_file)output_name <- sub("\\.asc$", "_kriged.tif", filename)output_path <- file.path(output_dir, output_name)cat("正在处理文件:", filename, "\n")tryCatch({# 1. 读取ASC栅格数据raster_data <- raster(asc_file)cat("  原始像元大小:", res(raster_data), "\n")cat("  原始行列数:", nrow(raster_data), "x", ncol(raster_data), "\n")# 2. 将栅格转换为空间点数据框points_data <- as(raster_data, "SpatialPointsDataFrame")names(points_data) <- "value"# 移除NA值points_data <- points_data[!is.na(points_data$value), ]# 3. 自动克里金插值cat("  正在进行克里金插值...\n")# 定义新的更高分辨率网格(像元大小缩小一半)new_res <- res(raster_data) / 2new_extent <- extent(raster_data)# 创建新的网格grd <- expand.grid(x = seq(from = new_extent@xmin + new_res[1]/2, to = new_extent@xmax - new_res[1]/2, by = new_res[1]),y = seq(from = new_extent@ymin + new_res[2]/2, to = new_extent@ymax - new_res[2]/2, by = new_res[2]))coordinates(grd) <- ~x + ygridded(grd) <- TRUE# 执行自动克里金插值kriging_result <- autoKrige(value ~ 1, points_data, grd)# 4. 将结果转换为栅格kriged_raster <- raster(kriging_result$krige_output["var1.pred"])cat("  插值后像元大小:", res(kriged_raster), "\n")cat("  插值后行列数:", nrow(kriged_raster), "x", ncol(kriged_raster), "\n")# 5. 设置相同的CRScrs(kriged_raster) <- crs(raster_data)# 6. 导出为TIFF文件writeRaster(kriged_raster, output_path, format = "GTiff", datatype = "FLT4S", overwrite = TRUE)cat("  成功导出:", output_name, "\n\n")}, error = function(e) {cat("  处理文件时出错:", filename, "-", e$message, "\n\n")})
}cat("所有文件处理完成!\n")
cat("输出文件保存在:", output_dir, "\n")# 可选:显示处理结果的统计信息
if (length(asc_files) > 0) {cat("\n处理结果统计:\n")for (i in 1:length(asc_files)) {asc_file <- asc_files[i]filename <- basename(asc_file)output_name <- sub("\\.asc$", "_kriged.tif", filename)output_path <- file.path(output_dir, output_name)if (file.exists(output_path)) {result_raster <- raster(output_path)cat(filename, "-> 像元大小:", res(result_raster), "行列数:", nrow(result_raster), "x", ncol(result_raster), "\n")}}
}

资料来源:http://lucky-boy.ys168.com/

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

相关文章:

  • 广州wap网站建设百度seo优化技术
  • linux centos常用命令整理
  • Java设计模式之建造者模式(Builder)详解
  • [智能体设计模式] 第6章:规划
  • 学习react第三天
  • 营销软文网站西安网站建设网络公司熊掌号
  • 二分查找算法介绍及使用
  • [element-plus] el-tree 动态增加节点,删除节点
  • SQL:从数据基石到安全前线的双重审视
  • 数据结构:双向链表(1)
  • 【C++】深入拆解二叉搜索树:从递归与非递归双视角,彻底掌握STL容器的基石
  • 深圳趣网站建设网络外包服务公司
  • Axios 全面详解
  • ios-AVIF
  • 360网站建设公司哪家好石家庄有哪些互联网公司
  • 单机并发简介
  • 自相关实操流程
  • java基础-集合接口(Collection)
  • 基于中国深圳无桩共享单车数据的出行目的推断与时空活动模式挖掘
  • 【Rust】通过系统编程语言获取当前系统内存、CPU等运行情况,以及简单实现图片采集并设置系统壁纸
  • 【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 D
  • 智能合同系统,如何为企业合同管理保驾护航?
  • 基于Rust实现爬取 GitHub Trending 热门仓库
  • 深圳市建设局官方网站曼联对利物浦新闻
  • 【Android 组件】实现数据对象的 Parcelable 序列化
  • CrowdDiff: 使用扩散模型进行多假设人群密度估计
  • 同创企业网站源码wordpress自定义简单注册
  • 在 Android ARM64 上运行 x86_64 程序
  • 幽冥大陆(二十)屏幕录像特效增加节目效果——东方仙盟炼气期
  • 类加载机制、生命周期、类加载器层次、JVM的类加载方式