APP下载

绘制卫星定位等级点符号的程序设计方法

2011-06-09张立志李升才吴业君高平和

关键词:程序设计控制点绘制

张立志,李升才,吴业君,高平和

(1.长春市市政工程设计研究院测绘处,长春130012;2.黑龙江省牡丹江市国土资源局,牡丹江,157099;3.长春工程学院勘查与测绘学院,长春130021)

0 引言

研发测绘软件中,一般需要将测区内的控制点按相应的符号表示到图上来。该问题一般需在软件的开发中依据文献[1]及文献[2]的要求,对控制点符号进行程序设计,以便建立起控制点符号库[1]。如图1所示,(1)是三角点、(2)是小三角点、(3)是不埋石图根点、(4)是独立天文点、(5)是卫星定位等级点、(6)是水准点、(7)是导线点[2]。由于各控制点符号有的绘制方法十分近似,有的绘制方法较为简单,因此,本文仅以卫星定位等级点符号为例,将开发软件中作者对其进行程序设计的方法和应用的数学模型介绍如下。文中所用的编程语言为Visual Basic 6.0(以下简称 VB)[3]。

图1 控制点符号

1 绘制卫星定位等级点符号的基本思路

卫星定位等级点符号,在文献[2]中属于点状符号,它将占用一定的图上面积,形状、尺寸固定,且不允许与其他符号重叠。该符号出现时,将已知其定位点的平面坐标。

欲通过编程将该控制点符号在图上表示出来,当遇多种符号位于同一个图层时,必须先在该输出图层上的定位输出位置用背景色擦除一个与欲输出的该控制点符号轮廓形状相同、比欲输出的该控制点符号轮廓略大一点儿的区域,目的是防止该控制点符号与已经输出的其他符号(例如等高线、道路、植被符号,等等)重叠而引起混乱[4]。

在图上绘制该控制点符号之前,应先根据其定位点的已知平面坐标及其几何形状、尺寸,计算出其各特征点的坐标,依照一定的次序将各特征点用相应的线型(一般为细实线)连接。

绘制卫星定位等级点符号,可依据上述原理用SUB……END SUB(以下简称SUB)子过程编写特定的一段程序,单独编译成一个公共模块。调用时可通过传递给SUB子过程一组将要输出该控制点符号中心点位置的定位坐标即可。

设经过一段VB程序代码的设置,已经将VB中窗体上默认的绘图平面直角坐标系调整为数学平面直角坐标系(以下简称数学坐标系),即坐标原点位于窗体的左下角,自坐标原点向上为Y轴正向,向右为X轴正向。下面,以测量平面直角坐标系(X轴向上为正向,Y轴向右为正向;以下简称测量坐标系)为基础,介绍卫星定位等级点符号的程序设计原理与方法。关于数学坐标系与测量坐标系的换算关系,可参见有关测量教科书。

2 卫星定位等级点符号的程序设计原理与方法

卫星定位等级点符号如图2所示,文献[2]规定其△ABC边长S=3mm,形心O′是其定位点,程序设计时O′点坐标(X,Y)应已知。根据S及(X,Y)可推算出该符号的3个特征点A、B、C的测量坐标A(XA,YA)、B(XB,YB)、C(XC,YC)及内接圆半径R,然后,用LINE方法可画出其三角形轮廓,再用CIRCLE方法画出其内接圆部分。

图2 卫星定位等级点

2.1 卫星定位等级点符号3个特征点坐标及内接圆半径计算公式

解决这个问题的关键是根据S及(X,Y)求得O′A、O′K、BK(或CK)的值。

2.2 卫星定位等级点符号显示之前对其所欲显示区域擦除方法

2.2.1 编程基本思想

欲擦除三角形区域的轮廓也为一三角形,设为△A1B1C1,如图3所示,定位点也为O′点,边长设为S1,内接圆半径设为R1。实际编程时,应使S1比S大一些为好,例如设S1=S+2(设S1及S均以mm为单位),此时△A1B1C1与△ABC的形心重合。

此时由于欲擦除三角形区域为△A1B1C1,设K是△A1B1C1区域内的任意一点,过K点作水平横线K1K2,与B1C1边平行,与A1B1、A1C1边分别相交于点K1、K2;K1至 K2的水平距离为S3;过K1点作B1C1边的垂线K1K3,垂足为K3;设K1到K3的水平距离为H2;B1点至K3的水平距离设为S2。设水平横线K1K2是一条动直线段,自A1移动至C0,且K1、K2点坐标可求得。编写该擦除程序时,设置一重FOR…TO……NEXT循环(以下简称FOR循环),设其循环变量为T,FOR循环执行方向为从上到下,即从A1到C0,T的初值为0,终值(最大控制值)为H。FOR循环每执行一次,K点将从A1点向C0方向移动一个单位的距离,即动直线段K1K2将从A1点向C0方向移动一个单位的距离;此时,用LINE方法、使用背景色“画”直线段K1K2,这样,即会在过K点的水平方向用背景色“擦除”一条横线K1K2。如此循环执行的结果,即可擦除△A1B1C1区域。

图3 擦除三角形区域示意图

2.2.2 公式推导

若将图2中的△ABC的边长S换成S1,即为图3的△A1B1C1。根据式(1)至式(8)可得图3中△A1B1C1的有关量:

S2=(这是因为这是因为:

K1点在测量坐标系的纵、横坐标为:

K2点在测量坐标系的纵、横坐标为:

2.2.3 编程示例(伪代码)

REM**** 首先擦除欲显示卫星定位等级点符号的区域 *****

S=3:’***此时屏幕绘图坐标刻度采用mm作为单位

……:‘*****以下用到的有关参量的计算过程与上述所导出的公式相同,此略。

FOR T=0TO H Step 0.1:’***当屏幕绘图坐标刻度采用mm作为单位时,循环步长宜选用0.1

……

LINE(YK1,XK1)- (YK2,XK2),RGB(red,green,blue):‘这里的颜色应设定为背景色

NEXT T

REM*****下面绘制卫星定位等级点符号*****

……:‘*****以下用到的有关参量的计算过程与上述所导出的公式相同,此略。

LINE(YA,XA)-(YB,XB),RGB(red,green,blue):‘这里的颜色应设定为前景色

LINE(YB,XB)-(YC,XC),RGB(red,green,blue):‘这里的颜色应设定为前景色

LINE(YC,XC)-(YA,XA),RGB(red,green,blue):‘这里的颜色应设定为前景色

CIRCLE(Y,X),R,RGB(red,green,blue):‘这里的颜色应设定为前景色

PSET(Y,X),RGB(red,green,blue):‘此为显示形心标志点,这里的颜色应设定为前景色

3 结语

本文介绍了绘制卫星定位等级点符号的数学模型与编程方法,可供相关软件开发者编程时参考。此外,仿照文中所述的方法,也可进一步研究出其他点状地形图符号的程序设计方法,这对于测绘软件开发工作具有直接的启迪作用。

[1]CH/T 4015—2001,地图符号库建立的基本规定[S].

[2]GB/T 20257.1-2007,1∶500、1∶1000、1∶2000地形图图式[S].

[3]李怀明,骆原,王育新.Visual Basic 6.0中文版参考详解[M].北京:清华大学出版社,1999:333,346.

[4]高平和,杨立华.建立控制点符号库的程序设计方法[J].长春工程学院学报:自然科学版,2009(3):100.

猜你喜欢

程序设计控制点绘制
基于Visual Studio Code的C语言程序设计实践教学探索
超萌小鹿课程表
从细节入手,谈PLC程序设计技巧
放学后
NFFD控制点分布对气动外形优化的影响
基于风险管理下的项目建设内部控制点思考
高职高专院校C语言程序设计教学改革探索
相似材料模型中控制点像点坐标定位研究
PLC梯形图程序设计技巧及应用
SDCORS在基础地理信息控制点补测中的应用