Windows Mobi1e在防汛实时水情信息采集工作中的应用

2010-03-05 02:59贺旭东
河南水利与南水北调 2010年4期
关键词:水情原点防汛

□杨 州 □贺旭东

(河南省信阳水文水资源勘测局)

现代防汛对水情服务的要求不断提高。水文部门以实时水情数据库和历史水文数据库为依托开发了很多基于桌面应用的水情服务系统,为各级防汛指挥部门提供及时可靠的水雨情信息。但是当重要汛情发生或可能发生时,相关防汛工作人员常需要深入一线开展工作,无法即时获得实时水情信息。如果有一个移动的工作环境,相关作业人员可以在任何地点及时掌握实时信息,即可协助开展防汛工作。随着移动通信技术的进步,移动电话的体积越来越小,计算速度越来越快,附加的功能如液晶显示器、数字相机、蓝牙、因特网等,再加上目前市面上移动服务商所提供的网络带宽已达2Mbps(3G)的规格,使防汛工作人员通过移动电话随时随地掌握实时水情信息成为可能。

一、系统平台选择

(一)系统操作平台

现在移动电话相关的开发工具的标准已逐渐统一,因此,我们可以像一般计算机一样在移动电话上开发特定的软件程序。目前移动电话主要的操作系统有Linux、WindowsMobi1e、Symbian,它们分别支持 C++、Windows Mobi1e.NET、Symbian C++、Symbian Python等程序开发的语言。考虑到国内个人计算机的操作系统一般都是Microsoft的Windows系列,我们在开发设计水情查询系统时选择Windows Mobi1e作为软件平台。WindowsMobi1e将熟悉的Windows桌面扩展到了个人设备中,是微软为手持设备推出的“移动版Windows”。

(二)网络环境

具有静态公网IP地址,使得移动设备能够通过GPRS、EDGE网络连接到单位内部网络服务器。

(三)系统运行环境

服务器操作系统为Windows Server 2003,支持IIS信息发布,SQLServer2000为数据库平台。客户端采用基于微软WindowsMobi1e操作系统的智能手机。

二、系统主要功能及设计实现

WindowsMobi1e水情查询系统通过处理实时雨水情、遥测等基础信息,制作易于查询的雨水情图表,以助于实现防汛科学指挥,为减灾防灾提供决策支持。

水情查询系统具有查询信阳地区各雨量站实时雨情信息及流域内主要控制站水位、流量等水情信息的功能。实时雨情信息通过列表和图形两种方式显示流域内各站降雨量列表和降雨量分布图。流域内主要控制站的水位、流量及其相应水位、流域过程线等实时水情信息可以通过列表方式显示,也可以通过流域内主要控制站水情监视图以图形方式显示。

WindowsMobi1e水情查询系统采用Microsoft Visua1Studio 2008集成开发环境,使用C#进行开发。

(一)管理设备网络连接

智能设备.NETCompact Framework只支持到SQLServer的TCP/IP连接,不支持跨越不同数据库的分布式事务和连接池。同时,System.Data.Sq1C1ient不像HttpWeb Request在有线或者Wi-Fi网络不可用时会自动建立GPRS连接。因此,智能设备在使用System.Data.Sq1C1ient查询和更新数据库前需要专门的方法来管理GPRS连接。而连接管理器是WindowsMobi1e的基础部分,当前只以Native API的形式暴露,我们需要将其封装为托管版本的 API。Connection Manager API由 ConnMgrMapURL、ConnMgrEstab1ishConnection、ConnMgrEstab1ishConnectionSync、ConnMgrRe1easeConnection、ConnMgrConnectionStatus等 11 个函数组成,在.NETCompactFramework可以通过静态DLL入口点的方式来访问本机代码库中这些私有对象成员,为便于调用,可将其封装成一个管理连接的类。

(二)数据库访问

在管理设备网络连接的类设计完成之后,接下来还需要为智能设备设计一个能够进行数据库访问的类,使设备能够通过GPRS或EDGE连接访问存储于实时水文数据库中的降雨量、水位等信息。在NETCompact Framework类库中,System.Data.Sq1C1ient命名空间描述了一个类集合,这个类集合可用于访问托管空间中的SQLServer数据库。我们可以使用ADO.NET对象,通过Sq1c1ient从SQLServer以只读方式取得数据。为此,查询系统使用一个自定义类,负责存储用户的用户名与密码,打开连接和使用Sq1DataReader读取数据。在取得数据后释放Sq1Command和Sq1Connection对象,避免内存泄露。由于.NET Compact Framework不使用连接池,在程序编写过程中,需要创建一个对连接对象的引用,在设备获取连接后,保持连接状态,直到连接中断或程序退出再关闭连接并销毁连接引用。

(三)地图显示

为使智能设备能够显示流域降雨量分布图和水情监视图,需要为智能设备编写处理地理信息的代码。在处理地理信息时,有两种处理方式可供选择,一是采用Arc/Info,Genasys等公司生产的专业GIS开发工具,进行组件式开发;另一个是自主设计实现GIS功能。采用GIS组件式开发实际上只是在别人系统的基础上作一些简单的应用开发,开发的成果需要这些专业工具的支持平台,意味着需要支付费用购买专业GIS组件的授权,同时系统没有自主的系统版权。考虑到智能设备在显示地图等地理信息时对矢量图形平台要求不是很高,对于水情查询而言,我们自主设计实现GIS主要的功能即可。

一个基本的GIS系统主要完成对空间矢量数据及性质数据的管理。为了便于对空间矢量数据的处理,我们可以把矢量对象抽象为点、线、面3种类型。在水情查询中,水文站、雨量站、水位站等,可以作为点对象处理;河道、堤防、道路等可以作为线对象处理;水库、湖泊、流域、滞洪区、行政区划等可以作为面对象处理。地图上点、线、面的坐标数据可以通过数字化仪或专用的GIS工具提取。在获取地图图形经纬度之后,需要建立地理经纬度坐标到设备像素坐标的转换。Windows映像方式就是Windows下的逻辑坐标方式。MM_TEXT方式(Windows默认映像方式)允许应用程序利用设备像素工作。屏幕(窗口)的原点约定在左上角,X和Y的正方向分别为向右和向下。地理经纬度坐标到设备像素坐标转换步骤:一是确定设备像素坐标原点的经纬度。在默认映像方式下,将待绘制地图西北角的地理经纬度坐标作为设备像素坐标原点。二是将设备像素坐标原点坐标单位由度转化为弧度,计算出像素坐标原点在地球椭球横轴、纵轴上投影的长度。三是计算带绘制点到设备像素坐标原点在椭球横轴、纵轴上投影的长度。四是设置合适的地理距离和像素点距离转换系数,将地图上两点的地理距离转换为设备上两点的像素点距离。经过上述步骤,便可得到待绘地理坐标相对于某设备像素坐标原点的以像素为单位的偏移量,为随后的图形绘制提供支持。

绘制矢量图时,需要为待绘图形建立一定的数据表,作为程序配置文件,便于程序检索。对于直线图形元素可以建立包含线宽、图层索引、笔色、画刷颜色、起讫点坐标等字段的数据表存储待绘制的图形元素信息。对于曲线、圆弧、标注矢量文本、多边形区域,可以建立相似的数据表来存储诸如线型、是否填充等图形绘制参数。

现在,智能设备的屏幕配置有很多种。屏幕物理显示区域尺寸不仅与其分辨率有关,还与其解析度dpi有关。所以在绘制图形时,在代码中最好通过Graphics.DpiX与DpiY属性检测当前设备显示器的dpi,根据dpi的不同,编写相应的绘图代码。如果不进行检测,也应当将窗体的AutoSca1eMode属性设置为dpi,以便程序根据设备显示器的dpi保持合适的物理尺寸。

绘制显示图像,常用的方法是使用PictureBox控件。对于河流、水系、行政区划等图形,可以把它们放在同一个图层中进行绘制。该图层绘制时可以使用窗体的OnPaint方法,OnPaint方法有一个PaintEventArgs参数,其Graphics属性暴露了Graphics对象,我们可以通过它来执行直线、曲线、区域等绘制操作。Graphics对象包含了用于绘制图形的DrawRectang1e、DrawP1oygon、DrawE11ipse、DrawLines和DrawLine方法,还有用于绘制文本 的 DrawText方 法 。 Fi11Rectang1e、Fi11E11ipse、Fi11P1oygon 和Fi11Region方法可以用来为图形填充颜色。对于通过访问数据库获取的降雨量、水位等性质数据,可以绘制在另外的图层中。最后将两个图层合并,完成分布图的显示。

三、系统界面效果

四、结语

WindowsMobi1e水情查询系统利用移动无线网络,实现了实时水情信息随时随地获取。为防汛指挥人员及时获取水情资料,进行科学指挥调度,最大限度地避免或减少灾害损失提供了有效的支撑。

猜你喜欢
水情原点防汛
夏季防洪防汛
防汛当前莫添乱
曹新刚
Book Pilot 飞行选书师,让书重新回到原点
重返历史“原点”的旅程
防汛,就是要和隐患“对着干”
甜水情
淮委组织开展2017年防汛抢险联合演练
在原点震荡的扰动Schrödinger-Poisson系统的无穷多个解
2011年辽宁省汛期水情分析