R包swmmr的run_swmm无法生成.rpt/.out及swmm5.exe查找求助
解决swmmr调用run_swmm无法生成.rpt/.out文件的问题
问题背景
运行R包swmmr自带的SWMM率定示例时,调用run_swmm函数无法生成预期的.rpt和.out文件。执行代码时SWMM GUI(epaswmm5.exe)会自动启动并在10-15秒后关闭,同时出现警告提示需使用命令行版本swmm5.exe而非GUI版,但安装64位SWMM后未找到swmm5.exe文件。
操作步骤
- 安装SWMM 5.2.3(64位)
- 在R中执行以下代码:
remotes::install_github("dleutnant/swmmr") install.packages("DEoptim") library(swmmr) library(DEoptim) inp_file <- system.file("extdata", "Example1.inp", package = "swmmr", mustWork = TRUE) tmp_rpt_file <- tempfile(tmpdir = "D:/SWMM_example", fileext = ".rpt") tmp_out_file <- tempfile(tmpdir = "D:/SWMM_example", fileext = ".out") swmm_files <- run_swmm(inp = inp_file, rpt = tmp_rpt_file, out = tmp_out_file, exec = "D:/SWMM/EPA SWMM 5.2.3 (64-bit)/epaswmm5.exe")
解决方案
1. 获取命令行版swmm5.exe
- 预编译版本获取:SWMM官方源码仓库提供了预编译的命令行工具,可找到对应64位系统的
swmm5.exe文件。 - 手动编译:若熟悉C++编译流程,可克隆SWMM源码仓库,按照官方文档的编译步骤生成命令行版本的
swmm5.exe。
2. 更新R代码中的exec参数
将代码中exec的路径替换为命令行版swmm5.exe的实际路径,示例如下:
swmm_files <- run_swmm(inp = inp_file, rpt = tmp_rpt_file, out = tmp_out_file, exec = "D:/SWMM/swmm5.exe")
3. 验证结果
运行修改后的代码,检查D:/SWMM_example目录下是否生成.rpt和.out文件。若仍有问题,查看R控制台的报错信息以进一步定位问题。
内容的提问来源于stack exchange,提问作者Yang Yang
相关产品推荐
相关产品推荐

