李 方,邹进贵
(武汉大学测绘学院,湖北 武汉430079)
测绘技术伴随着其他技术的发展而得到了迅速提高,逐渐走向自动化、数字化和智能化时代。工程测量任务往往包含多个环节,每一个环节的测量数据处理的正确性、精度和工作时效性直接影响整个测量工程的进度[1]。一旦测量数据出现问题就会影响工作进度,还浪费了很多人力、物力、财力。目前很多应用软件都面临着收费昂贵、安装更新烦琐、与仪器捆绑销售、可重复性差等问题。
针对以上问题,笔者开发了一个Web平台下的工程测量数据在线处理系统,其研究意义在于:①可实时动态处理数据并得到处理结果,实时评估工作质量;②用户无须购买各种配套软件,直接利用系统可以处理多种测量数据;③系统升级时只需服务器后台更新,省去用户需要多次下载更新软件的麻烦;④便于用户进行数据管理。因此,Web平台下的工程测量数据处理系统具有较高的实用价值。
由于系统需要对数据实现存储管理,因此需要使用数据库。针对此系统,本文的数据库需要进行结构方面的设计,数据库中包含了12个数据表,分别为:
1)TraverseKnownData;
2)TraverseObserveData;
3)TraverseResult;
4)LevelingKnownData;
5)LevelingObserveData;
6)LevelingResult;
7)IntersectionKnownData;
8)IntersectionObserveData;9)IntersectionResult;
10)CorTransformationKnownData;
11)CorTransformationObserveData;12)CortransformationResult。
在此数据库中本文对数据表的格式做了一定的设计,主要包含以下几个数据字段:①DataID,数据ID作为数据表主键,用户唯一标识数据文件,与服务器中对应文件夹下的数据一一对应;②UserName,用于存储登录账号的用户名;③UserCompany,用于存储用户所在的单位或公司;④ProjectName,用于存储此数据是哪个项目的名称;⑤Operater,用于存储数据操作者的名字;⑥Description,用于对数据进行相关备注描述;⑦Time,用于存储数据操作的时间。具体结构设计见表1。
表1 数据表结构
数据库中所存储的数据如图1所示。
Web平台下的工程测量数据处理系统的总体结构采用分层次框架设计。根据整个数据处理的流程,系统整体框架设计分为用户登录(或用户注册)、数据上传、数据处理、数据下载和数据管理。其中数据处理方面可以设计很多功能模块,比如导线网、水准网等,各个数据处理模块相互平行独立,用户可根据需要进行功能选择。进入系统后可以自主选择数据处理功能模块,比如导线网、水准网等,各个数据处理模块相互平行独立,用户可根据需要进行功能选择。目前功能处理暂定为设计导线网、水准网、交会计算和坐标转换4个模块,各个模块的数据处理流程相同。在这种框架结构设计下,各个数据处理模块相互独立,后期可根据实际需要继续添加不同功能的模块,以逐步优化完善系统。系统框架示意图如图2所示。
图1 数据表数据存储示意图
图2 工程测量数据处理系统结构设计图
B/S结构(Browser/Server结构)即浏览器和服务器结构,用户都可以通过浏览器来访问网络上的各类信息,这些信息由多个Web服务器产生,但是数据并不储存在Web服务器中,大量的数据实际存放在数据库服务器中,每一个Web服务器通过某种方式与数据库服务器连接[2]。
COM组件可以理解为一个封装的代码集合,它可以把程序代码转换到了二进制代码,运行速度远快于Web脚本的解释性语言,而且有很好的保密性,同时可以使用C#、C++等语言编写,有很好的兼容性,可以在不妨碍老客户的情况下被升级[3]。ASP中含有执行Web相关任务的COM对象集。这些对象可以执行检索HTML表单数据、把内容发回至浏览器、跟踪会话和应用程序的状态等任务。这些对象总是可以在整个ASP应用程序中使用[4]。
(1)利用ATL技术开发COM组件
通过ATL技术可以建立COM组件,然后通过ASP页面中的脚本对COM对象进行调用,达到可以利用COM组件中函数的目的,完成相应的功能。通过优化技术,ATL在其内部提供了C++开发的程序所必须具有的C启动代码的替代部分。同时,为了摆脱庞大的代码模块,ATL对产生的代码去粗取精,只留下了用户最基本的功能。因此,采用ATL开发的COM组件能够在网络环境下实现应用的分布式组件结构[5]。
(2)在ASP.NET中使用COM对象
COM对象可以在ASP.NET中被调用。ADO对象本身就是COM对象,内置的Request、Response、Server等对象也是COM对象。除了使用内置对象,程序员还可以通过调用Server对象的CreateObject方法来创建COM对象实例,具体调用如下:
Set
cnnMyConnectionObj=Server.CreateObject(“ADODB.Connection”)。
ADO.NET组件是重要的数据库开发工具,可以通过使用ADO.NET组件,实现对数据库的操作。ADO.NET提供与数据源进行交互的相关的公共方法,但是对于不同的数据源采用一组不同的类库,这些类库就成为Data Providers,并且通常都是通过与之交互的协议和数据源的类型来进行命名的。ADO.NET包含了以下5个对象:Command对象、SqlConnection对象、SqlDataReader对象、DataSet对象和SqlDataAdapter对象。绝大多数的数据库访问任务都能通过它们的组合完成。
本系统首先实现就是用户注册与登录功能,系统登录功能主要保证用户系统数据的安全,限制非工作人员登录系统,进行非法操作。系统登录功能的实现比较简单,只需要在主系统进程创建前,先显示登录窗口,对用户信息进行验证,若验证通过,则创建主系统进程,否则,不会创建主系统进程,直至验证通过。
在用户注册方面需要使用的是CreateUserWizard控件,该控件需要用户输入用户名、密码、邮箱和安全问题等,在每个用户输入的TextBox后面都加入一个RequiredFieldValidator控件,将控件的Control ToValidate属性设置为对于文本框的ID,修改Error Message属性即可设置输入无效提示,如“必须输入用户名”。将web.config文件中的membership元素设置为min-RequiredPasswordLength=”6”,即设置密码不少于6位数。使用CompareValidator控件保证再次输入的密码与第一次输入相同。RegularExpressionValidator控件确保电子邮件的格式输入正确。系统的登录页面使用Login控件进行登录,修改DestinationPageUel属性重定向至系统功能选择主页上,输入用户名和正确的密码,点击登录即可进入系统主页,如图3和图4所示。
图3 新用户注册界面
图4 用户登录界面
在数据处理功能模块中,将以坐标转换模块为例进行说明。在坐标转换处理模块中本文设置了四参数和七参数两个转换模型,用户需要选择一种数据处理模型。通过RadioButtonList1.SelectedItem.Text属性值来确定转换模型。文件的上传通过File-Upload控件实现,具体上传程序可见图5,文件的下载程序可见图6。
文件上传需要获取服务器端和客户端路径,然后获取上传文件名称,设置上传文件保存服务器的路径即可实现文件上传,见图7。如果服务器中已经存在此文件则会提示文件重复。通过获取上传文件的后缀名来实现控制上传文件的格式。利用ASP.NET调用C++编写的DLL文件,首先需要在项目中添加引用DLL文件。以下为引用片段:
图5 上传文件程序
图6 数据下载程序
[DllImport("kernel32.dll")]
private extern static IntPtr LoadLibrary(String path);
[DllImport("kernel32.dll")]
private extern static IntPtr GetProcAddress(IntPtr lib,String funcName);
[DllImport("kernel32.dll")]
private extern static bool FreeLibrary(IntPtr lib);
图7 上传文件
分别取得了LoadLibrary和GetProcAddress函数的地址,再通过这两个函数来取得DLL里面的函数即可实现调用DLL处理数据。其他功能模块的实现基本相同。
下面以2014年12月水准测量试验数据进行实例分析。试验过程中采集了大约6.9 km的水准数据,其中共有6个水准点,分别为B01—B06,其中B01为已知点,其高程为100 m,其余点为待定点,水准路线中包含了一个闭合环B02-B03-B06-B0。
数据采集完毕之后利用工程测量数据在线处理系统进行处理,首先注册一个账号,然后登录账户进入系统,选择水准网计算模块进入水准网数据处理,上传已知点文件和观测值文件,选择自动处理,然后下载结果文件,如图8所示。
图8 下载结果文件
为了验算本系统计算结果的正确性,本文使用GNPS软件对水准数据进行了计算,其中图9(a)为GNPS软件处理结果,图9(b)为系统处理结果,图9(c)为两者对比结果。
图9 处理结果对比
通过对比分析可知系统计算结果正确,并有较高的精度。上述过程实现了工程测量数据的自动处理,相对于利用软件计算工程测量数据处理,该系统十分简便快捷,特别是对于测量机器人自动测量数据,可以直接上传处理,大大减轻了测量工作者的作业负担。
通过使用试验数据对系统进行验证,能够十分方便快捷地得到数据处理结果,相对于手工计算或者软件计算来说速度更快,工作强度更小,这充分体现了工程测量数据在线处理系统的优越性和实时性。本系统在实际工程中具有较大的实用性,特别适合于处理观测数据量大、复杂且需要进行平差处理的情况,用户仅需按照指定格式上传数据即可进行数据处理,真正实现了工程测量数据的现测现算,能够实时评估工作质量,及时发现错误,对测量工作计划具有很好的指导性。
[1] 熊梓言.工程测量数据处理系统设计与实现[J].测绘与空间地理信息,2008,31(6):177-179.
[2] 任泰明.基于B/S结构的软件开发技术[M].西安:西安电子科技大学出版社,2006:16-20.
[3] Matt J.CROUCH.怎样用ASP和COM进行Web编程[M].北京:人民邮电出版社,2001:20-45.
[4] 米勒.Visual C++.NET开发人员指南[M].北京:清华大学出版社,2002:13-53.
[5] 王建康.大型联网视频监控系统中ICE中间件的设计与实现[D].北京:北京邮电大学,2010.