李爱民 兀泽坤 赵佳乐 张心怡 郭振强
(郑州大学地球科学与技术学院,河南 郑州 450001)
工程测量数据处理中的导线测量、水准测量、坐标转换等内容,计算工作量很大。目前测绘行业内流行几款数据处理软件,如南方测绘的平差易软件(Power Adjustment)[1]、 武大的“科傻”系统(COSA)[2]、清华山维的平差软件(NASEW)[3]等。这些软件都具有概算、平差、精度评定、控制网显示等功能,在测绘单位的测量数据处理中发挥了重要作用。但是,调查发现,这些软件普遍没有显示测区地图的功能,而工程测量一定是在一定区域进行的,测量数据都包含坐标位置信息,控制点点之记资料也需要周围地物地貌信息的支持,因此,把测区地图融合到测量数据处理软件中,研究建立基于测区电子地图的工程测量数据处理系统十分必要。
本文利用ArcGIS Engine 组件开发[4]、数据库等技术研究构建基于测区地图的测量数据计算处理系统,实现地图和测量数据计算处理功能的无缝集成,使测量数据处理地图化,提高测绘人员处理测量数据的可视化和便捷性。
某本系统对应的用户人群为有工程测量数据处理需求的测量人员,因此系统运行环境设置为PC 端,且无联网要求,设计为单机版系统,不考虑网络问题,但系统涉及GIS 技术和测量理论,因此开发者需要具有这方面的知识。
数据流程包括:数据录入,将测区地图数据和测量数据输入;根据测量数据进行平差计算,获得测量点坐标和高程数据;在地图窗口根据坐标数据生成测量点图层;基于地图制作点之记,进行空间查询和分析等;成果输出,输出所需的空间数据、测量数据处理结果等。系统应包括地图编辑、测量数据平差处理、空间分析、数据、图形的检索、查询及数据输出等功能。
系统设计要遵循软件工程建设的思想和简洁、实用、可靠、可拓展的原则,充分利用计算机编程、GIS、空间数据可视化、数据库查询和分析等技术,构建以电子地图为基础平台的测量数据处理系统。
从系统特点和应用角度出发,立足于整体,采用软件工程的结构化设计模式,把系统功能分解为不同的模块,包括数据操作、查询统计、报表操作、图形操作、测绘功能五个方面,如图1 所示。
图1 系统总体框架
把GIS 技术和测量数据处理相结合,使得一些测量数据处理操作更加直观地在地图上展现。
(1)软件支持mxd、Shapefile 等文件类型的导入,同时可以实时查看及更改属性表。主菜单上有跳转功能,通过输入某点坐标而直接跳转选中该点。此外,还具备打开文件、选中、平移、放大、缩小地图、添加数据、移除图层等地图软件所具有的基础功能。
(2)主菜单上有创建地图要素功能,可以进行点要素、线要素与面要素的创建,点击开始编辑后,在其右侧框体中选择图层,并使用绘图工具进行要素的创建;点属性配备有专门的要素库,可以用于选择点要素的样式。
(3)鹰眼功能,用于全局显示地图的处理情况,便于查找所进行处理或当前展示的页面位置。
(4)“生成测量点”功能,通过导入带有点坐标的Excel 或TXT 文件,从而生成带有相关点属性的Shapefile 文件,并保存在指定路径。
(5)“地图注记”功能,选择特定图层以及该图层内所想要显示的字段,可以将字段内容显示在底图上。
(6)“地图选择集”和输出功能,用于显示和输出所选要素的属性表。
(7)导线平差计算。导线测量是将测点连成折线,得到折线边的边长和转折角后,根据数据推算导线点的平面直角坐标的过程[9]。根据其导线布设方式,分为附合导线、闭合导线、支导线、导线网[10,11]。在选定精度等级并输入源数据后,平差得出导线网型绘制结果、解算结果、精度核验结果等内容。
(8)水准平差计算。水准测量是利用水平视线测定地面高差的方法,即由已知点高程推算未知点高程的过程[6-8],在选定精度等级和已知高程后,导入观测数据的Excel 或Shapefile 文件,得出线路总长、闭合差、限差等信息,并计算闭合差是否符合要求,且设置相应的结果导出功能。
(9)坐标转换功能。包括大地坐标、平面坐标、空间直角坐标等多种坐标系的坐标转换。
测量数据一般包括空间数据和属性数据,空间数据是用来直观表达位置关系的点状、线状、面状要素信息,图层的分类依据是根据其几何形状分为Point、Polyline、Polygon 等类型的要素图层[12-14];属性数据主要是测量数据以及对空间数据的说明。以控制点为例,空间数据类型为点状要素,其属性数据为控制点坐标、点名、点号、控制点高程等属性信息;以导线测量为例,导入数据后生成的空间数据类型为线状要素,其属性数据为点号、坐标、方位角、转折角、边长等属性信息。空间数据采用图层模式管理,使用Esri 公司的ArcGIS Engine 软件提供的各类控件进行输入、显示、存储、输出等功能,而对于使用测量功能得到的属性数据,则通过轻型关系型数据库SQLite进行输入、显示、存储、输出等功能,基于ComGIS 技术实现两种数据类型的无缝集成。
根据ArcGIS Engine 组件式开发技术提供的地理数据可视化及空间数据处理等特点,将多种测量数据处理功能与地理信息系统集成,综合利用空间数据和属性数据,在Visual Studio.NET 开发环境中嵌入ArcGIS Engine 组件[15,16],利用COM 组件技术开发测量数据处理系统,实现坐标值转换、七参数解算、水准测量、导线测量等测绘数据处理的功能,并且添加相应的处理结果可视化界面,提供网型绘制、解算结果、精度核验、起算及观测数据显示等功能。操作系统为WindowsXP/7/10,数据库管理系统采用SQLite 数据库。
主界面如图2 所示:
①菜单栏,可实现文件操作、地图注记、控制点生成、测量计算等功能。
②基础工具条,可实现对电子地图等基本操作,例如漫游、全图显示等。
③编辑工具条,可实现对地图要素的创建、编辑、删除等功能。
④图层目录,可实现对地图图层的管理、要素符号更改等操作。
⑤鹰眼,展示数据视图中的地理范围在全图中的位置。
⑥地图窗口,地图交互操作的窗口。
⑦状态栏,可显示数据框内鼠标的位置,菜单栏功能的简短说明。
图2 系统主界面
坐标转换模块包括坐标值转换和七参数解算,坐标值转换即选定转换前后的坐标系,输入单个点得到转换后的坐标系的相应坐标值,如图3 所示。七参数解算即输入相应的三个公共点的坐标,得到目标坐标以及七参数的值,如图4 所示。
以西安80 高斯投影平面坐标转换西安80 大地坐标为例,部分代码如下:
crd.x_XA = textBoxNum_xBX; ……//得到西安高斯投影平面坐标的X、Y、HZ
elpF.num = Ellips.Ellips75_XA80.num; ……//得到西安80所用椭球的参数
trans.XiAn80xyHgToXiAn80BLH(crd, elpF); // 调用转换函数
图3 坐标转换
图4 七参数解算界面
包括闭合水准测量平差、附合水准测量平差、支水准测量平差,选定精度等级及已知高程后输入文件,得到报表窗口,显示相应的源数据及结果,以及导出结果功能,如图5 所示。
以闭合水准平差为例,部分代码如下:closedDiff += Convert.ToDouble(dt.Rows[i][3]);//计算闭合差(单位:mm)
图5 水准数据处理
导线测量计算模块包括闭合导线坐标平差、附合导线坐标平差、支导线坐标计算、导线网平差(前方交会、侧边网坐标平差)功能。选定精度并输入数据后,得到网型绘制结果、解算结果、精度核验等信息,结果窗口右侧显示起算数据及观测数据信息,并提供导出结果功能,如图6 所示。
以闭合导线平差为例,部分代码如下:cartsCrds[i].X = Convert.ToInt32(stations[i].y);//将给出的测绘坐标转笛卡尔坐标,图形形状相同Increment[i].X = cartsCrds[i].X - knownedX;//求各点与已知点A的相对位置if(Increment[i].X < minIncrementX)//寻找X方向最小负增量
图6 导线数据处理
图层目录:可在图层栏中右击图层进行图层的相关操作,如图7 所示。
图7 图层控制目录树
创建要素:在编辑栏中选择带有铅笔图表的按钮(Sketch Tool),即可进行要素的创建,其右侧按钮(Attributes)可打开所创建要素的属性表,如图8所示。
图8 创建要素
生成控制点:选择导入带有点坐标的Excel 或Shapefile 文件,从而在指定路径中生成带有这些点属性的Shapefile 格式的文件,如图9 所示。
导入Excel 生成Shapefile 文件核心代码如下:String fileName = openFileDialog.FileName;DataTable myTable = ExcelToDataTable(fileName,"sheet1");string Point = myTable.Rows[i][0].ToString();//获取excel中的数据double x = Convert.ToDouble(myTable.Rows[i][1]); ……//得到xyh的值addPoint(ly, x, y, h ,Point);//添加点至shpfile文件
图9 导入Shapefile格式的文件
图10 点状要素符号选择器
符号选择器:通过在属性栏中双击点状符号、线状符号或面状符号,可打开符号选择器,选择所需要的符号来标记点、线、面要素,如图10 所示。pTextSymbol.Font = pFont as stdole.IFontDisp;I L i n e L a b e l P o s i t i o n p P o s i t i o n = n e w LineLabelPositionClass();……//设置注记放置格式、排放位置、摆设路径权重,以及处理文字间冲突的处理方式等pLableEngine.Expression = "[" + sFieldName +"]";//输入VBScript或JavaScript语言,设置要标注的字段IAnnotateLayerProperties pAnnoLayerProps=pLableEngine as IAnnotateLayerProperties;pAnnoProps.Add(pAnnoLayerProps);
图11 注记选择
图12 注记效果
地图选择集 :选择底图中的要素后,点击“地图选择集”,可弹出选中图层中所选要素的属性表,如图13 所示。
图13 地图选择集效果图
本文利用GIS 组件开发技术设计了融合测区地图的工程测量数据处理系统,并利用C#语言编程实现了软件功能。把测量数据处理与测区地图无缝集成,实现了测量数据的可视化,进而使计算更直观、高效和便捷,提高工作效率。组件开发技术的使用有利于系统的可拓展性,方便后期的维护与系统升级。