基于MySQL的测量标志点可视化管理与导航寻点系统 | ![]() |
测量标志是标定地面测量控制点位置的标石、觇标以及其他用于测量的标记物的通称[1],是维持国家坐标系统、高程系统、重力系统及其框架的基础设施[2],对国家经济、国防建设、社会发展和科学研究都具有重要作用[3]。因此,测量标志的保护、管理和维护工作是十分重要的。长期以来,测量标志管理一直采用手工管理的方式[4-5]。随着控制点的数量增多,建设时间跨度变大和坐标系统多样性等情况的出现,导致资料纷繁复杂,并且还可能因为保存不当,使部分测量标志失效,另外,人们在使用测量控制点时,大多采用传统的简单利用点之记寻找测量控制点位置等,这种方法效率低,不易更好地服务于基础测绘和各类经济建设需要。
近年来,随着计算机信息技术的发展,我国许多单位和学者在相关方面都有一些实践[4-8],采用信息系统对测量标志进行管理,在很大程度上实现了快速检索、统计和分析等功能,大大提高了管理效率。但是,现有测量标志的管理系统仍存在不足,比如,如何充分利用现代移动设备实现外业快速寻找测量控制点,测量标志点信息化管理与测量控制点导航寻点互动等问题,为此,本文研发了基于服务端和移动端的测量标志可视化管理与寻点导航系统,解决了上述问题。
1 系统设计与数据交互基于MySQL的测量标志点可视化管理与导航寻点系统分为移动端与服务端两块,如图 1所示。服务端可以直接对MySQL数据库操作,分设地图浏览、信息管理、检索查询3个模块,实现服务端在离线地图上可视化测量标志的相关信息,更好地管理数据资料,可视化测量标志的分布、维护、使用等状况。移动端主要分为点位信息显示、点位导航寻查、信息采集记录、导航轨迹采集、点位图片上传、采集数据存储等模块,以满足测量标志的应用与更新的业务需求,拥有导航寻点与信息采集等功能。移动端和服务端的数据交互通过接口数据文件实现,通过设置管理员与权限来保证系统数据的保密。以上对数据的查询、访问、修改等操作均需要拥有相应权限的管理员才能进行。
![]() |
图 1 系统结构及功能 Fig.1 Structure and Functions of System |
1.1 测量标志点信息的数据管理
MySQL是目前最受欢迎的关系型数据库管理系统之一,其访问数据库使用的是最常用的标准化语言SQL语言。考虑到管理测量标志,测量控制点信息的数据类型和结构其实并不复杂,相对简单,并且根据文献[9-10]所得普查结果可知,数据量并不是很大,同时考虑到MySQL开放源码,因此服务器端采用MySQL数据库。
利用常用的数据库管理和设计工具Navicat for MySQL或者命令行输入,建立数据库,并设计库内的数据表结构,如三角点表、水准点表、GNSS控制点表等。
数据库创建成功,并设计完成各种类型测量标志的数据表后,服务端需要与之连接。在程序中引用MySQL.Data.dll动态链接库,通过数据库的相关信息,如数据库名、用户名、密码等作为参数,创建MySQLConnection对象,再利用其下Open方法即可与创建的数据库连接。
1.2 服务端与移动端的数据交互服务端与移动端之间的数据交互,通过接口数据文件实现。本系统采用的是XML格式的文件,为系统的服务端和移动端提供了一个描述数据和交换数据的有效手段。根据MySQL数据库中设计的字段自定义XML文件中的标签,方便理解与使用,然后通过C#与Java两种语言对XML文件解析与存储。
处理XML文件的方式很多,其中文档对象模型DOM是最常见的解析方式之一,该方法的优点是允许编辑和更新XML文档,满足需求。C#与Java两种编程语言均采用DOM方式解析XML文件,虽具体代码有所差异,但是基本的逻辑思路是一致的。将XML数据源转成相应的对象,C#中的XMLDocument对象,Java中的Document对象,然后可以将XML看作是由文档声明、元素、属性、文本等构成的一个树,再利用对象中的方法将文件中对应的数据提取出来,进行管理分析。
2 服务端的实现及关键问题处理服务端采用C#语言编写,实现了窗体界面的交互,以及大部分的基本功能,并同时使用SQL语言,拥有相应权限的管理员可以直接对MySQL数据库进行查询、更新和管理等操作。
2.1 地图浏览地图浏览模块负责测量标志信息的可视化,拥有对地图进行放大、缩小及移动等基本功能,并可以在地图上添加图层来显示测量标志的位置以及由主要道路导航到各点的导航路线。
考虑到测量标志的保密性,连接网络并不安全,但同时又兼顾地图数据的现势性,需要对地图数据更新。基于开源地图控件GMap.net进行二次开发实现离线地图的加载,来满足据保密性的需求,定期下载最新的离线地图数据又能防止地图信息的滞后性。使用GMap.net中两个常用的类即可完成测量标志信息的可视化。在窗体之中添加地图控件,作为地图容器,实例化GMapControl类得到对象,显示地图,并可以实现地图在服务端的移动,缩放等交互操作。给创建好的地图对象添加图层可以扩展其应用,GMapOverlay类是图层类,创建不同的图层来分别存放地标、路径对象等,再通过GMapControl.Overlay.Add()方法添加到地图中,地标点还可以用不同颜色及标识表示不同状态,图层间可相互叠加,也可单独展示或隐藏某一图层。本系可为添加的地标、路径对象添加点击事件,用以加载其相关信息,可显示在ListView控件中,增强了信息的可视化显示,如图 2所示。
![]() |
图 2 系统服务端主界面 Fig.2 Main Interface of Server |
2.2 信息管理
信息管理模块是服务端的主体部分。主要负责利用外业所采集到的信息数据对数据库进行更新,以及将已有的测量标志信息成果按照规定格式以接口数据文件(.xml)导出,以满足移动端进行巡查控制点等业务需求。
外业人员在将采集到的最新信息文件导入之后,进入点位信息的审核阶段。该阶段需要拥有审查权限的管理员对已录入的控制点信息进行浏览,判断待审核的控制点信息是否完整、正确,审核结果为“不通过”的信息,不会更新至对应数据表,并通知负责人员进行重新确认或更新。对于审核通过的数据,通过建立相应的SQL语句,再实例化MySQLCommand对象,将SQL语句赋值于CommandText,利用ExecuteNonQuery()方法可以将SQL语言执行,在数据库中插入、更新或删除记录。
测量标志成果的格式化导出,需要同时拥有导出和查询权限的管理员先利用检索查询板块确定需要输出的点位记录,再将信息存入DataSet对象。DataSet是ADO.NET结构的主要组件,在内部就是用XML来描述数据的,所以十分方便快捷,直接调用DataSet.WriteXML(), 即可导出本系统的数据接口文件。
2.3 检索查询检索查询模块可以根据具有查询权限的管理员输入的查询条件,在数据库中检索满足条件的测量标志点,获得所需信息,进行一定的统计与分析,有许多的应用途径,如反映现有测量标志的各种状态与情况,分析标志损坏的原因等。查询条件需要转化成对应的SELECT语句,如SELECT column_name FROM table_nameWHEREcondition,这仅是属性查询功能,还可以加以空间查询,即在地图上选定区域,查询该区域内所有满足条件的控制点。以上查询结果均会在地图和列表中予以展现。用红色的Marker显示在地图上,点击感兴趣的Marker, 可以知晓该点的详细的属性信息。
3 移动端关键问题处理考虑到智能手机已成为人们生活工作之中的必备工具,而Android手机操作系统的市场占有率很高,有助于应用的通用性,并且还有不增加额外硬件设备费用,使用者始终随身携带,使用方便快捷等优点。所以,移动端基于Android平台,在Android Studio的集成开发环境下,采用Java语言编写,并利用高德地图API(application programming interface)进行二次开发,实现导航巡查,采集信息等功能,并对其中关键问题进行了处理。
3.1 移动端导航寻找控制点和信息采集移动端功能实现在高德地图API的基础上进行二次开发。通过使用高德地图中包含的相关类,创建MapView控件对象作为地图的容器,通过AMap对象显示地图,通过AMapLocationClientOption对象实现定位,通过调用AMap地图对象的AddMarker方法,可以在地图上添加Marker绘制测量标志点位,在地图上可视化该点,点击后会触发事件,以显示自定义的InfoWindow包括地位相应的点名及坐标等信息,如图 3(a)所示。
![]() |
图 3 点位信息、导航路径和数据编辑 Fig.3 Point Information, Navigation Route and Editing Data |
当需要导航寻找控制点时,即知道从当前位置如何到达某测量标志点,可以使用工具栏中的导航寻点功能。该功能的实现是利用StartActivity方法打开NaviActivity加载新的导航界面。导航之前需要先得到两点之间的路径,可以利用高德地图API的导航地图对象提供的CalculateWalkRoute方法,自动规划当前到放样点之间的步行路径,但前提是两点之间不超过100 km,否则会计算失败;再使用导航地图对象的StartNavi方法即可开始导航寻点,如图 3(b)所示。找到测量标志后,需要对控制点点位信息进行更新,可以直接在移动端进行信息采集,如图 3(c)所示。完毕后存储在XML文件中,方便服务端的数据更新。
3.2 利用道格拉斯普克算法简化导航轨迹测量标志点信息作为记录控制点位置信息的测绘资料,其作用之一是测量人员在使用控制点时,依据信息方便找到实地位置。但是有一大部分测量标志埋设在野外,单靠高德地图API的导航功能无法完全胜任,并且这些点位缺乏一些明显的地物作为参考,使寻找比较困难,为此,本系统通过移动端的定位功能,在手机移动过程中可以不停更新GPS位置,将所在点的坐标信息进行采集,获得一系列的轨迹点,从而实现移动端中测量标志点的导航轨迹测量功能。
为了避免记录过程中产生冗余数据,通过两步简化导航轨迹:第一步设置过滤机制,若前后两次坐标的距离不超过10 m将不会被记录,大大减少了采集的数据量;第二步结合道格拉斯—普克算法将所采集到的轨迹点进行简化,将路径中无关紧要的节点去除,仅保留关键节点。经典普克算法的思想是连接曲线的首尾两点得到一条直线,求所有点到直线的距离,并将其中最大的距离值Dmax与阈值D相比:若Dmax < D,该曲线上的所有中间点全部舍去; 若Dmax≥D,则保留Dmax对应的坐标点,并以该点为界,把曲线分为新的两部分曲线,再重复使用以上方法,从而实现轨迹点简化。
3.3 利用贪心算法决策多个控制点导航在测量标志点的导航寻点过程中,通常会遇到一次外业需要对多个测量标志点进行寻找的情况。为了完成快速寻点任务,系统借鉴典型的旅行商问题的解决思想,利用贪心算法来决策对多个控制点的导航寻找。其基本思路是将问题分解为多个子问题,根据某个优化测度,总是做出在当前看来是最好的选择,确保每一步都获得局部最优解。移动端的具体实现是将所有目标点位分为已排序点集和未排序点集,每次从讨论点对未排序点分别求得最佳路径,将估计用时最短的点位移动到已排序点集,将该点置为讨论点,重复上述步骤,即可得到寻点顺序。贪心算法虽不考虑得到整体最优,但能得到在某种测度下的局部最优解,并且算法相对简单,计算资源消耗少,适用于移动端。
4 结束语本文根据管理系统的不足,以及传统点位勘测的低效性,提出并设计实现了基于MySQL的测量标志点可视化管理与导航寻点系统,服务端地图显示测量标志点,界面直观、友好,有效管理了各类测量标志的数据信息,移动端的导航寻点功能对提高野外勘探效率也颇有益处。系统各功能模块完善,操作简单,改变了测量标志的传统管理模式,对测量标志信息化管理与更新具有现实和科学意义。
[1] |
纪彦忠, 陈祥葱, 姜波. 基于GIS的测量标志管理系统设计与实现[J]. 测绘与空间地理信息, 2013, 36(6): 75-77. DOI:10.3969/j.issn.1672-5867.2013.06.023 |
[2] |
张全德. 测量标志保护若干问题的探讨[J]. 测绘科学, 2005, 30(6): 121-123. DOI:10.3771/j.issn.1009-2307.2005.06.043 |
[3] |
吴季红. 测量标志保护存在的问题及对策[J]. 安徽地质, 2011, 21(1): 71-73. DOI:10.3969/j.issn.1005-6157.2011.01.017 |
[4] |
林向军. 基于GIS的宁夏测量标志管理信息系统[J]. 现代测绘, 2011, 34(5): 51-52. DOI:10.3969/j.issn.1672-4097.2011.05.017 |
[5] |
王燕云. 测量标志管理系统的开发[J]. 海洋测绘, 2005, 25(4): 64-65. DOI:10.3969/j.issn.1671-3044.2005.04.021 |
[6] |
朱琳, 高飞, 张迁. 测量标志管理信息系统的设计与实现[J]. 测绘科学, 2013, 38(4): 157-159. |
[7] |
蔡欣恩, 唐诗华, 王睿. 基于Google地图的测量控制点成果管理系统[J]. 地理空间信息, 2014, 12(5): 31-34. |
[8] |
姚周祥, 花向红, 王东阁, 等. 基于Android平台的点之记管理系统的实现[J]. 测绘地理信息, 2017, 42(2): 5-7. |
[9] |
李雪松. 浅谈内蒙古测量标志普查和维护[J]. 测绘与空间地理信息, 2015, 38(3): 216-217. DOI:10.3969/j.issn.1672-5867.2015.03.073 |
[10] |
朱紫阳, 江海建, 许耿然. 广东省测量标志现状分析与保护展望[J]. 城市勘测, 2016(2): 144-147. DOI:10.3969/j.issn.1672-8262.2016.02.043 |