#读取包含经纬度和土壤信息的CSV文件 soil_info <- fread('path/to/soil_info.csv')

#循环运行每个经纬度的土壤信息 for (i in 1:nrow(soil_info)) {

#读取apsim文件 apsim <- readLines('D:/APSIM_work/scenario_585/SW/chuan_HT33.apsim')

#替换经纬度和土壤信息 lat <- soil_info$Lat[i] lon <- soil_info$Lon[i] apsim[4] <- gsub("57237", lat, apsim[4]) apsim[5] <- gsub("104.05", lon, apsim[5]) apsim[10] <- gsub("5.5", soil_info$Sand[i], apsim[10]) apsim[11] <- gsub("2.4", soil_info$Clay[i], apsim[11]) apsim[12] <- gsub("1.3", soil_info$OM[i], apsim[12]) apsim[13] <- gsub("9.6", soil_info$BD[i], apsim[13])

#创建新的apsim文件 file_apsim <- paste0('D:/APSIM_work/scenario_585/SW/chuan_HT33_run_', i, '.apsim') writeLines(apsim, file_apsim)

#运行模型 system(paste(apsim_exe, file_apsim), wait = TRUE, ignore.stdout = TRUE, show.output.on.console = FALSE)

#保存输出文件 file.copy('D:/APSIM_work/scenario_585/SW/chuan_HT33.out', paste0('D:/APSIM_work/result585_radn/SW/HT33/', i, '.out'))

print(i) }

#将所有输出文件合并成一个CSV文件 out_files <- list.files('D:/APSIM_work/result585_radn/SW/HT33/', pattern = '.out', full.names = TRUE) out_all <- data.table() for (file in out_files) { out <- fread(file, skip = 2, sep = '\t')[, list(Day, Year, Radn, Rain, MaxT, MinT)] out_all <- rbind(out_all, out) } setnames(out_all, c('Day', 'Year', 'Radn', 'Rain', 'MaxT', 'MinT')) fwrite(out_all, 'path/to/result.csv'

这段代码是用R运行APSIM的代码现在是调用不同站点的Met文件请改为调用CSV文件中不同经纬度的土壤信息不考虑Met文件了将CSV文件中所有经纬度的土壤信息均运行一遍并将所有运行保存在新的CSV文件中librarydatatable#链接apsimexeapsim_exe - DAPSIMAPSIM710-r4158ModelAPSIMexe#读取文件准备循环df-freadDAPSIM_wor

原文地址: http://www.cveoy.top/t/topic/c1x6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录