标题 | 海上溢油应急系统的开发 |
范文 | 李雅明+于梦如+李琳+李培良+杨波![]() ![]() 摘 要: 针对海上溢油事故的频繁发生以及给海洋环境带来的巨大损失,搭建了基于ASP.NET海上溢油应急系统。该系统采用浏览器/服务器(B/S)模式,通过Ajax技术,实现服务器端与浏览器端的异步传输,提高网页响应速度。其WebGIS地图服务由栅格地图技术与矢量可标记语言(VML)结合实现,弥补了单纯栅格地图表达力不足的情况。当出现溢油事故时,系统可迅速对溢油事件进行预测模拟,并将溢油的漂移扩散情况可视化,直观方便,为发现溢油后做出紧急决策提供支持。该系统的应用解决了海上溢油搜索发现困难的情况,可以更好地控制溢油给海洋环境带来的危害。 关键词: 溢油预测; ASP.NET; B/S; 地图服务 中图分类号: TN919?34; TP319 文献标识码: A 文章编号: 1004?373X(2015)04?0050?03 通过发生的大大小小溢油事件来看,溢油对于海洋环境的破坏以及对财产损失都非常巨大。现在不仅要对溢油采取提前的预防措施,更要在事件后采取强有力的补救措施。所以,对于海上溢油系统的开发就成为了一个研究的课题。本文主要研究了利用ASP.NET技术构海上溢油应急系统,采用了浏览器/服务器(B/S)模式,远程用户可以通过浏览器访问网站,来预测或查询溢油信息,相对于大多数采用的客户端/服务器(C/S)模式来说,具有便于维护、易于管理、使用范围广等优点。 1 系统设计 海上溢油应急系统主要目标: (1) 对于溢油信息实行存储与管理。 (2) 直观的对溢油预测图像信息进行展示与演示。 (3) 具有较强的操作性,适用于大多数人。 1.1 系统总体设计 海上溢油系统在Microsoft Visual Studio 2008进行集成开发,基于ASP.NET技术[1],采用B/S三层架构,包含客户端浏览器、服务器以及数据库3部分[2]。客户端由JavaScript实现部分事物逻辑;服务器端由C#实现主要事物逻辑。数据库则采用SQL Server 2008存储数据信息。 1.2 数据库设计 数据库的搭建对于海上溢油应急系统具有十分重要的作用。该系统使用的是SQL Server 2008数据库,它具有可信任、高效、智能等特点。通过使用ADO.NET技术访问数据[3?4],数据库无需一直链接,可以在缓存中查看、修改、删除数据,程序可使用更少的资源,节省时间,且提高了性能与协调力。图1主要展示ADO. NET的5个对象以及之间的联系。Connection对象负责链接数据库,Command对象负责对数据库执行命令,DataReader对象用于从数据源中检索只读数据集,DataAdapter对象负责数据集和数据库的联系,DataSet对象用于存储临时数据表。 1.3 地图设计 该系统采用栅格地图技术与矢量可标记语言(VML)[5]的融合来实现网站地图服务。栅格地图是将地图按照缩放级别进行切割并将同一比例的组织在一起,以gif形式存放在服务器中。在浏览器端查看地图时,客户端需先计算切片数量与序号,服务器仅将需要的图片传递过去,再拼接成一体显示。客户端运用JavaScript和Ajax与服务器交互,使得用户在拖动时感觉不出拼接,且极大降低服务器的负担,响应速度较快。 与VML的结合使得地图的功能得到增强,且VML无需与服务器进行交互,提高了效率。测距和测面积的实现依赖于VML与JavaScript交互。使用VML时,需将VML容器加入到HTML对象中,以下为具体实现: 2 系统主要功能 海上溢油系统主要功能为: (1) 记录查询 选择起始时间与结束时间,以时间为条件检索记录,默认显示30天内的溢油记录。 (2) 溢油预测 溢油预测包括预测模型、预测条件、预测结果三方面。预测模型分为单点模型、单点持续模型、管道模型与管道持续以及大面积模型。 预测条件包括溢油时间、溢油地点、持续时间、油的种类、溢油数量以及油粒子数,持续模式还包含连续溢油时间以及单位时间溢油量,如图2所示。预测结果分为溢油轨迹、扩散范围、油膜浓度,能够以动画形式连续播放油粒子运动轨迹,更加直观地展示溢油随时间的变化情况。油膜面积、扫海面积及剩余油量以时间过程曲线图展现。 (3) 地图功能 其功能包括放大、缩小地图,地图漫游,距离测量与面积测量,其中缩放有12个级别。 3 系统关键技术 3.1 Ajax技术 Ajax即异步JavaScript及XML,在浏览器向服务器请求数据时,不再需要传递整个页面,而是将少量的请求数据传递给浏览器,使网络更流畅[6?7]。AjaxPro是.NET平台下的一个回调式Ajax框架,系统调用此框架来实现异步传输的功能。配置web.config文件代码为: 使用时需先注册,在C#调用方法前需加上[AjaxPro.AjaxMethod],方能实现异步传输。 3.2 C#和Fortran混合编程 C#与Fortran的混合编程[8],利用C#实现可视化效果,用FORTRAN编写的过程进行所有的计算工作。在程序中,必须以C#为主程序来调用FORTRAN程序。实现混合编程的关键就是将FORTRAN计算程序编译为动态链接(dll),而后在C#中调用此动态链接库。 通过C#中的委托来调用封装好的dll,步骤为: (1) 声明委托: public delegate void DllFunction(); (2) 加载dll: DllInvoke dll = new DllInvoke(dllPath, dllName); (3) 获取相应的委托实例: DllFunction function = (DllFunction)dll.Invoke("OILSPILL", typeof(DllFunction)); (4) 调用函数: function(); (5) 释放dll: FreeLibrary(_hLib); Fortran编写的程序中要注意必须有以下两句: ! FUNCTIONS/SUBROUTINES exported from OILSPILL.dll: ! OILSPILL ? subroutine 4 系统实现 用户通过浏览器登录海上溢油应急系统,选择溢油时间、地点等相关参数,点击“开始预测”按钮,系统前端将以json形式通过Ajax技术将溢油参数传给服务器端,服务器端通过调用由fortran编写的动态链接库(dll)对数据进行运算,预测结果以文本形式和nc文件形式保存在相应文件夹中,溢油参数通过ado.net技术写入sql数据库中,服务器端将溢油结果画图并生成图片传到前端浏览器,流程图如图3所示。 系统所需的风场和流场数据于每天8点会自动上传到服务器中,其数据位包括当天在内的未来3天的预测值,一旦溢油发生,可随时投入计算。 下面是模拟2014年9月20日4点30分发生的溢油事件,其模式为管道持续,溢油起始坐标为119.056 4°E,23.819 91°N,结束坐标为119.070 7°E, 23.818 07°N;粒子数为1 000,持续溢油时间5 h,单位溢油量是4 t/h,追踪时间为20 h,间隔为1 h,图4为第7个小时的溢油结果。 5 结 语 海上溢油应急系统实现对发现溢油事件的油膜漂移及轨迹的及时准确的预报,为发现溢油后做紧急决策提供强有力的支持。将栅格地图和VML结合的地图服务与溢油模型进行结合,使地图相响效率得到提高,且地图功能得到增强。 参考文献 [1] 洪惠群,朱耿青,吴楠楠,等.基于ASP.NET的灾情信息系统的设计[J].现代电子技术,2013,36(14):73?76. [2] 李旭荣.基于B/S的高校协同办公平台的设计与实现[J].现代电子技术,2012,35(6):36?38. [3] 吴杨,孙蔚.B/S 模式下ADO.NET 数据库访问技术的设计及应用[J].电子测试,2014(2):45?46. [4] 江凌,杨平利,杨梅,等.基于ADO.NET技术访问SQL Server数据库的编程实现[J].现代电子技术,2014,37(8):95?98. [5] 蔡锦辉,陆明典.用VML构建基于WebGIS的交通气象服务系统[J].气象研究与应用,2014,35(2):60?62. [6] 熊文,熊淑华,孙旭.Ajax技术在Web 2.0网站设计中的应用研究[J].计算机技术与发展,2012,22(3):145?148. [7] 张天宫,徐婧,宋昊.Ajax技术在WebGIS系统中的性能优化研究[J].现代电子技术,2013,36(11):162?164. [8] 张凯华,郭金运,胡志博. Fortran与C#混合编程在卫星测高中的应用[J].计算机技术与发展,2014,24(5):48?52. [9] 任钢,王国栋.云计算架构下的安全生产应急预测预警系统的设计和应用[J].软件工程,2012,33(7):1?4. [10] 李全,韩增.溢油应急响应系统的设计和研究[J].油田环境保护,2013,23(6):76?79. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。