基于MO的手持GPS采集点高程校正系统

时间:2022-09-19 12:11:52

基于MO的手持GPS采集点高程校正系统

【摘 要】随着GPS技术在各个领域的广泛应用,对GPS高程精度的要求也越来越高。利用手持GPS测量点位时,由于测量点的高程坐标精度远低于平面坐标精度,使得测量出的高程一般不纳入使用。本文介绍基于VB语言和MapObjects组件开发一个运用等高线高程值对GPS采集的点数据高程值进行校正的简易系统,从而提高手持GPS数据高程的精度。

【关键词】MapObjects;GPS高程;等高线;校正

1 引言

通过我国测绘、地质等相关部门的使用证明,GPS以全天候、高精度、自动化、高效益等显著特点,赢得广大测绘工作者的信赖,并成功地应用于大地测量、工程测量、航空摄影测量、运载工具导航和管制、地壳运动监测、工程变形监测、资源勘察、地球动力学等多种学科,从而给测绘领域带来一场深刻的技术革命。本文是利用现有地形图的等高线对已经解算好的GPS测量点数据进行内插处理,校正GPS量测点的高程值。

2 手持GPS的特点及其定位精度

手持式GPS是一种体积小巧、携带方便、独立使用的全天候实时定位导航仪器。它具有灵敏度高,存贮量大,价廉,外部接口齐全等特点,在很多领域得到了广泛的运用。尤其近年来在工程地质测绘以及中小比例尺填图中应用越来越广泛,大大地加重了地质工作手段的科技含量。手持GPS定位时长应在 4-5 min才能保证有稳定的观测结果。Mobile Mapper™ CX(麦哲伦)是目前世界最高精度的手持GPS,可提供实时亚米级以及后处理亚英尺的精度。目前市场上主流的手持GPS(如:集思宝G510、60csx)的单点定位精度小于6米,后处理为3米。由于大多GPS解算软件注重对点位的平面位置解算,而把误差累积到高程方向,导致高程方向误差为平面位置的l-3倍,这使得GPS所量测的点高程值大多无法使用[2]。

3 手持GPS数据的预处理

手持GPS会记录采集者储存下来的点位信息。实验中进行内插的GPS数据要求为shapefile格式,只要将GPS接收机采集的点数据导出后,在MapInfo中打开并转为shapefile格式。为了方便比较通过该实验系统校正后和使用GPS采集的高程,编辑GPS点数据的属性表,在GPS点数据属性表中只存放GPS点的高程值及点的ID。

4 GPS点高程值修正思路

以福清市东张镇1:10000等高线图及GPS点采集数据为例进行内插功能的开发。内插主要是通过GPS采集点附近的等高线,根据GPS点距两边等高线的比例求算出GPS点的高程值。计算的公式为:G=G1+g*(d1/D)。其中,G为内插出的GPS点高程值,G1为用来内插GPS点高程中值小的等高线,g为等高距,D为GPS点与两条等高线距离之和,d1为GPS点在最短线段上到高程值小的那条等高线的距离。利用该公式对GPS点高程进行内插,在现实的情况中存在一定的误差,但在理想情况下,依据相似三角形原理能够准确计算点的高程值。

5 实验系统介绍

5.1 内插功能开发的的具体步骤及部分实现代码[4]:

文件操作模块:

包括文件的打开、关闭,图层的上下移动、删除、放大、缩小、全图显示地图、比例尺、指针位置坐标显示等功能的实现。

GPS点数据的读取:

在实验系统中打开预处理好的GPS数据,并按照属性表中的字段ID逐个读取GPS点进行插值。

Set layer = Map1.Layers("gps_point") ’通过属性ID读取GPS点文件,将点闪烁显示

Set recs = layer.Records

Set oPoint = recs.Fields("shape").Value

Text1.Text = oPoint.X

Text2.Text = oPoint.Y

Map1.FlashShape oPoint, 10

recs.MoveNext’自动读取下一个点

If recs.EOF Then

Set recs = Nothing

Command3.Enabled = False

Command2.Enabled = True

Exit Sub

End If

Set oPoint = recs.Fields("shape").Value

Text1.Text = oPoint.X’把读取到的点横、纵坐标写在文本框中,点闪烁显示

Text2.Text = oPoint.Y

Map1.FlashShape oPoint, 10

用做内插的两条等高线的选取:

选中等高线时,线闪烁显示并弹出对话框提示等高线的高程值

Set pl = Map1.ToMapPoint(X, Y)

Set recs1 = Map1.Layers(0).SearchByDistance(pl, Map1.ToMapDistance(50), "")

If recs1.EOF Then

MsgBox "没有找到对象."

GPSElev2 = recs1.Fields("Elev").Value

MsgBox "高程值为:" & GPSElev2 & "米"’信息框提示所选等高线的高程值

分别计算GPS点与用来内插点高程的两条等高线的距离

通过MapObjects中的DistanceTo方法来实现

odistance = oPoint.DistanceTo(shp1) ’点到选中对象的距离

高程内插:

计算的公式为:G=G1+g*(d1/D)。其中,G为内插出的GPS点高程值,G1为用来内插GPS点高程中值小的等高线,g为等高距,D为GPS点与两条等高线距离之和,d1为GPS点在最短线段上到高程值小的那条等高线的距离。

oPointEvel = ominElev + (omaxElev - ominElev) * (omin / (omax + omin))

Text3.Text = oPointEvel & "米"

recs.Edit’高程插值并把得到的值写入GPS点的属性表中

recs.Fields("NewElev").Value = oPointEvel

recs.Update

5.2 实验系统内插的步骤

操作步骤如下:

(1) 打开需要校正的GPS点数据和GPS点数据所在区域的等高线图。

(2) 点击“开始内插”按钮,实验系统读取GPS点数据文件中的第一个点,并且该点在地图中闪烁显示。

(3) 单击“选择第一条线”按钮后,选择最用来内插GPS点高程的一条等高线,选中后会弹出信息提示框,显示该条等高线的高程值。

(4)单击“选择第二条线”按钮,继续选择第二条等高线。

(5)点击“插值点的高程”按钮,内插出GPS点的高程,在左下文本框中显示并写入GPS点文件属性表中。

(6)点击“下一点”按钮,读取下一GPS点的坐标进行内插。

5.3 内插的结果

通过该实验系统对GPS点高程进行校正,把校正后的高程写入GPS点图层属性表的Newelev中,如下图。比较通过该实验系统校正后和使用GPS定位的高程,可以看出该实验系统能够在一定程度上提高GPS数据高程精度。

图6-4 内插前后GPS点高程比较

6 结语

本文介绍利用地形图中的等高线校正手持GPS采集点的高程实验系统。虽然在系统中存在一定的局限性,如系统的精度局限于手持GPS的平面精度和所采用地形图的等高距等,但是该系统利用手持GPS采集点的平面坐标和实验区地形图的等高线对采集点的高程进行校正,可以大大提高GPS数据的高程精度,有效提升工作效率,适合在一定范围内使用。

上一篇:铁路接触网隧道打灌施工探讨 下一篇:建筑电气设计中的消防设计研究