李欣鹏,周文婷,丁永刚,张诗豪,徐宏亮,彭 虹*,陈 华,俞静雯
1.中电建生态环境集团有限公司,广东 深圳 518100;2.武汉大学水利水电学院,湖北 武汉 430072;3.湖北大学教育学院,湖北 武汉 430062
随着社会经济的高速发展和城市化进程的加快,生活污水和工业废水排放量增势迅猛,我国城市水体污染形势日益严峻,成为国内民生大计亟需解决的重大问题之一[1]。以水质模型为核心的水环境质量模拟分析,是落实《水污染防治行动计划》的关键技术,将为全面控制污染物排放、快速推进城市水体治理与水环境管控提供有效的数据支持与依据[2-4]。
城市河流往往承担着重要的社会经济功能,一方面,水质要求较高,需要包括点源整改、流域农业面源削减、河道疏浚和底泥清淤等的水环境治理工程支持[5-6];另一方面,存在点源分布密集、径流冲刷条件下面源负荷较大、河底淤泥沉积的问题[7-8],需要二维或三维空间上的水环境精细化模拟。当前国内研究尚缺乏具备我国自主知识产权的、便于二次开发的水质模型体系,针对本地化应用的不同国际模型体系,还有模拟模块不全面、建模复杂度高、内置模块耦合难度大、不具备可拓展性等限制。本土化主流系统的缺陷在当前国内环境改善工程方案的复杂情景下尤为突出,其对城市水环境模拟大多只考虑单一污染源,尤其是流域非点源污染[9],而对水质在复杂污染源、多环境变量影响下的变化过程,却鲜有体现。
为满足当前我国城市河流对点面结合、覆盖全面的工程方案下的水环境模拟需求,运用计算机和信息科学技术,构建基于污染治理目标的、自动化运行的、可视化的智慧城市河流水质模拟平台势在必行[10-12]。本文设计的平台既可耦合各类模型,建立相对独立的数据结构,避免设计情景的重复建模,来精准、综合地反映出点源、面源、內源污染的改变;又能支持水环境状态的空间可视化显示和分类统计,系统分析不同治理措施对水环境质量改善的效果。该平台将促进水环境数学模型这一高难度专业技术的推广,极大降低重复操作,扩大受众范围,为水污染防治和工程决策分析提供科学便捷的技术服务。
为满足对城市河流水质的精细化管理需求,城市河流水质模拟平台应当以二维或三维水动力水质模型为核心,主要根据模型计算和水质分析评价所需的信息内容进行设计,基于计算机技术,并采用适当的集成模式,整合出一套层次清晰、操作流畅的高效率水质模拟与分析系统。在此基础上,一是为水环境监测中心等部门以及水环境治理公司提供水质管理的服务平台,逐步扩充、丰富现有的高科技水环境信息建设体系;二是为水质模型开发人员的技术推广提供便捷入口,促进和激励模型的进一步发展和完善;三是考虑点源、面源、內源底泥释放等因素,开发多环境变量影响下的水质演变分析模型,为平台用户开展基于污染治理目标情景下有效的水质模拟提供技术支撑,以期为工程建设方进行水环境治理方案决策提供科学依据。在平台搭建方面,需要确保平台数据的安全性、模型运行的稳定性和功能模块的扩展性,做到接口数据、后台模型和交互界面的无缝衔接[13]。
平台的总体设计应该遵循科学性、可靠性、实用性、完备性和开放性的原则,充分考虑业务需要和用户体验,具备二次开发能力,使系统具有较好的可维护性、可扩展性和可操作性,同时具有较强的容错性。以水质模拟平台的功能和性能需求为导向,充分考虑系统构建过程的各个要素,确定平台的开发步骤,开发路线如图1所示。
水质模型是系统开发的核心,也是首要任务。在设计平台界面之前,需要对比平台预期功能来综合分析现有各种模型的优缺点,选取满足系统需求的、性能稳定的二维或者三维水动力水质模型。完成水质模型开发后,根据模型的数据录入、驱动模式、结果分析等板块进行交互界面各个相应功能模块的具体设计,主要包括基础信息管理模块、模型接口模块和情景分析模块。平台的功能模块要建立规范的数据录入与存储标准,完成平台和水质模型接口之间的信息交互,并实现对数据文件的灵活访问、可视化查询、统计与情景分析,以达到多层面管理的要求。
水质模拟平台系统框架如图2所示,包括客户层(user interface,UI)、业务逻辑层(business logic layer,BLL)、接口层(interface layer,IL)和数据访问层(data access layer,DAL)。
图1 平台设计路线Fig.1 Platform design route
客户层支持PC端展现,是用户和系统交互的接口,由用户管理界面、地形生成界面、模型计算界面和结果分析界面组成,以实现用户对系统的管理、配置等业务操作。业务逻辑层是平台的核心层,该层在收到事件处理请求后调用相应的事件处理机制进行业务处理,并将处理结果返回到客户端,根据系统业务处理需求,实现流程控制以及各种信息的获取、转换、存储、计算和验证等所有核心业务逻辑。接口层主要调用水质模型的驱动程序驱动模型,实现水质模拟平台和水质模型接口、地形采集接口以及其他需要的外部系统之间的信息交互。数据访问层实现数据的结构化管理,封装数据并面向业务逻辑层提供标准、统一的数据接口,主要对以文件形式存储的数据进行处理、访问,所有业务数据的读写均通过数据访问组件实现,数据访问组件包括地形、河流条件和污染源数据访问组件以及模型参数设置组件。
平台核心模型应当具备多个主要功能,一是需要实现地形前处理,完成对城市河道地形的二维或三维插值模拟;二是需要耦合水动力和水质过程,反映出河流水质随时间的动态变化,得到不同时期的水质特征[14-15];三是模型除了能够考虑河流点源污染因子,还可以嵌入城市面源模型,同时要具备河流内源底泥的释放模式,以期全面体现河流多种污染源对水质的综合影响;四是水质模型应当包含丰富的模拟模块,除了常规水质的模拟,还要具备溶解氧平衡、重金属、富营养化预测等功能[16];五是需要实现常规水质的水环境容量核算,能够针对水功能区的管理要求得到相应结果。
图2 平台系统框架Fig.2 Platform system framework
针对平台核心模型多个方面的需求,水质模拟平台需要设计用户管理、地形概化、计算条件输入、模型验证与计算、结果分析、日志查询等主要功能模块,如图3所示。
图3 平台主要功能Fig.3 Main functions of platform
用户管理模块用以维护系统安全、可以灵活控制文件存放位置,通常包括用户登录和项目路径选择2个功能。
地形概化在二维模型中指地形网格的生成,是一切数值模拟的基础,合理的地形概化,直接影响模型计算成功和计算速度。平台应设置包括网格、地形的二级校核,网格、地形的生成过程由地形获取、河岸线展示、河道网格绘制和地形校核组成,可以依次实现相应功能:通过地形采集接口获取资料缺乏地区的地形数据、展示河岸线、呈现河道网络以完成网格校核、利用河道地形图像实现二级校核——地形校核,来确定模拟地形的合理性。值得一提的是,地形图像结果应由插值算法得出,需要实现三维仿真模拟地形图的全方位查看、校验,同时可以支持二维俯视平面地形图辅助判断,一旦地形模拟结果出现较大偏差,地形生成功能允许用户重新进行覆盖操作,直至生成符合水质模型计算的地形。
计算条件输入模块能够为用户提供统一的数据采集端口,可以录入来流条件、污染源条件和模型参数,实现数据的自动化准备。来流部分应该包括模型的上、下游边界和时间控制条件输入;污染源部分要设置面源模型文件导入接口,还要实现模型点、面源的位置、排放流量及浓度条件输入;参数部分则用于采集河道糙率、降解系数、释放系数和河床底泥控制浓度数据。同时,条件输入模块还要提供录入数据的编辑功能,方便用户检验、修改或删除数据。
模型验证与计算模块,需要先发出模型计算的事件请求,驱动水质模型并得到模拟结果。该模块应该支持用户设定任意的模拟精度,然后在此条件下根据实际水质监测数据来计算模拟误差,得到设定模拟精度下的不合格模拟结果,并据此判断水质模型在应用水域的适应性。若没有出现设定模拟精度外的计算结果,即说明模型验证成功,反之,则调整计算条件输入模块中的模型参数,直至通过模型验证。
结果分析模块应该包括水环境容量分析和水质指标呈现。水环境容量根据水功能区划分情况计算,可以同时展现局部和全河的水环境容量,水质指标呈现区域按照水质类别,分级展示河道水质的空间分布,并提供定位查询和图示分级统计的功能。
平台还需要设置日志查询模块,用于辅助结果分析功能。在模型验证通过后,运行日志开始记录完整的操作信息,之后用户每进行一次模型计算,日志便自动更新一次,增加新的方案计算条件与模拟结果。
为了实现模型的快速响应,满足管理需求和兼顾平台的可拓展性,下面以Java基础类别框架(java foundation classes,JFC)为例来说明平台设计。基于C/S三层架构进行设计,使用Java Swing等技术构建窗体应用程序界面,并采取Java面向对象技术(model view controller,MVC)和编程模式实现系统功能。其中,数据访问层负责数据处理,通过标准的数据接口由数据访问组件实现数据的即时获取、写入;二维数据的可视化呈现可通过Ja⁃va2D实现,三维数据的可视化呈现可以通过Py⁃thon图像处理技术和Java等进行混合编程实现,运行内存量占比很小,没有时滞性。C/S三层架构及关键实现技术如图4所示。
图4 C/S三层架构及关键实现技术Fig.4 C/Sthree-tier architectures and key techniques
Java Swing是一种用纯Java语言实现的轻量级图形组件技术,用于进行系统界面的设计。与抽象窗口工具包(abstract window toolkit,AWT)相比,基于Swing的窗体程序具备良好的跨平台性,可以在Windows、Linux等多种操作系统下稳定运行。Java Swing包括JFrame、JDialog等容器和JBut⁃ton、JCheckBox、JTextField等一整套图形用户界面(graphical user interface,GUI)组件,组件量级轻、由自身外观类支持,且外观可插拔,既能够根据需要选择默认的样式,也可以根据平台特点设置相应的样式,设计出美观实用的用户界面。同时,Java Swing结合Java的事件处理机制和Java I/O技术,能够共同实现平台的业务逻辑。
Java2D应用程序接口(application program⁃ming interface,API)是Java类库提供的用于开发复杂界面、绘图软件和图像编辑器的一套编程接口,它通过扩展AWT,对二维图形、文本及成像功能提供了支持。作为Java基础库的一部分,Java2D API能够将程序员从重复性的代码中解放出来,易学易掌握。程序员通过调用基本几何图形,只需输入几何、位置、材质等基本参数,便可快捷创建或简单或复杂的几何图形,并能够进行填充、渲染、旋转、缩放、移动、剪切等操作。此外,该系统还提供不同的过滤器处理图像,具备许多增强AWT图形、文本、图像的功能,平台开发人员不需掌握复杂的语法、记忆繁琐的节点,就可以快速构建需要的二维图形。
Python图像处理类库(python image library,PIL)提供了通用的图像处理功能,以及大量有用的基本图像操作,比如图像缩放、裁剪、旋转、颜色转换等。和Java3D API相比,使用PIL进行图像处理更简单、更灵活、更强大,平台的三维数据可视化呈现可以采用Python图像处理技术与Java混和编程的方式,轻松构建所需要的三维场景,并能实现场景的浏览、查询和交互功能。
1)通用性强,模型优势显著
与传统水质模型相比,平台应当采用水动力水质耦合模型,并形成以下几点优势。一是充分考虑地形资料的获取难易程度,模型除了适用于地形数据详实的河道,还能够利用地形采集软件,在数据较少与形式简单的情况下实现地形模拟,具备较好的适应性;二要在点源污染模式下,再嵌套面源降雨径流污染模型,并融合污染物综合降解与底泥释放因子,能够反映点源、径流面源及河流内源污染对水质的联合影响;三是模型的水质模拟范围要广、运算速度要快,便于及时提出科学合理的水质改善工程方案,增强对政府部门的说服力。
2)模块独立,数据管理高效
平台设计要确保其功能模块各司其职并且连接合理,同时应该预留潜在接口,为开发者后期进行功能调整与改善提供支持,这样既可以避免模块构建的复杂性、保证平台开发速度,又能扩展平台的开放性。在数据管理方面,平台还应该部署一系列成套的错误提示、数据编辑、多级校核等约束系统运行,从而有效避免人为误差,来提升平台查错、纠错的能力和运行的稳定性,确保模型数据的自动化输入、快捷调用与查验。
3)结果可视,日志记录清晰
先进的可视化技术会使数据呈现更加直观、清晰,平台应当建立起空间数据与属性数据的连接,借助合适的插值算法,从而实现水质结果数据对现实世界高质量的虚拟显示,并且支持平台使用者对可视化图形的定位查找、缩放、拖动与输出等操作,来满足用户快速获取河道水质空间分布与变化规律的需求。平台应设置运行日志的生成功能,可以按照模型计算时间段进行查询,完整的日志记录便于管理者分析边界、污染源等计算条件改变,引起河道水质分布趋势和水环境容量的变化,为工程方案比选提供科学依据。
4)模拟智能,精度控制灵活
平台的自动智能体现在模型的调试与计算过程。一方面平台通过模型接口调用内置模型程序,实现数据交换与功能兼容,只要用户输入计算条件和目标需求,便可以一键驱动所有模型模块联动运行,不再需要用户进行中间操作与监控,具备自动化快速计算的特点。另一方面,模拟精度应当设为用户灵活调控,平台可以根据用户意愿计算任意目标精度下的误差,便于在参数调试时自动忽略验证合格区,并且快速锁定需要调整的参数区域,显示误差水平,极大减少用户工作量,辅助平台使用者高效地完成模型调试。
城市河流水质模拟是水环境管控的重要组成部分,涉及到生活与工业点源、径流冲刷面源、河道内淤泥内源、河道生态基流等水环境信息,也关乎污染源管理、水环境风险控制、水生态修复等重大水环境管理决策的制定。城市河流水质模拟平台将通过集成水质模型与用户界面,突破传统模拟软件不能体现河流点源、面源、內源污染相结合模式下水质响应过程的限制,可以打破模型鲜少为非专业人员服务的技术壁垒,并能够逐步实现数据输入、模型驱动和结果呈现的智能化,在全面反映各种污染源对水质综合作用的基础上,用以增强分析水质与水环境容量分布、模拟污染治理效果、核查重要污染源的便利性,切合水环境管理等各项工作的功能和效率需求,以期有效地提升对水体污染防治与工程方案决策的支持能力。