现在啥都要讲究自动化,一年前在深入学习了SWMM模型后经历了一段技术困扰,特别是如何自动运行SWMM模型生成报告并作处理最终变成TIFF等能用GIS展示的结果。那会从自动处理降雨(变成inpfile里面的格式)、输入模型、运行模型、输出结果、调用GDAL库生成shp,TIFF等等…
纪念一下如何调用 swmm5.dll,也忘记是从哪里学来的了,在这里感谢网上分享技术、代码的大佬们!
//run swmm model.
char inpfile[]="D:\\New.inp";
char out_rpt[]="D:\\Result.rpt";
char out_out[]="D:\\out.out"; //这是以前写字符串的习惯。现在比较喜欢用 string,然后用const_cast<char *> 来转换
// 开始调用dll
typedef int(_stdcall*fun)(char* f1, char* f2, char* f3);
HMODULE hDLL = LoadLibrary("D:\\swmm5.dll"); //加载dll文件
if (hDLL != NULL)
{
fun swmm_run = fun(GetProcAddress(hDLL, "swmm_run")); // 调用名为 swmm_run的函数
swmm_run(inpfile, out_rpt, out_out); // 这里的 inp是建立好的模型文件,out_rpt 输出.rpt文件,out_out输出.out文件
FreeLibrary(hDLL);
}
else
{
std::cout << "Cannot Find " << "swmm5.dll" << std::endl;
}
cout << "swmm run over" << endl;