APP下载

基于VB的铁路测绘坐标转换的开发

2013-12-12丁肇军任娜娜王尊涛

测绘通报 2013年2期
关键词:界址中心线控件

丁肇军,任娜娜,王尊涛

(山东中基地理信息监理有限责任公司,山东济南250101)

一、引 言

铁路遍布全国各地,铁路用地是国有土地中重要的一个组成部分,核实铁路用地线对于合理规划国有土地具有深远的意义。本测区内铁路沿线均于20世纪90年代至2002年进行了土地证发放工作,发证坐标以地亩图上里程支距(以下称为旧里程、旧支距)坐标为准。随着铁路多次提速需求下铁路线路的变化及新建铁路线的增加,地亩图上百米位置与现百米标位置不再吻合,铁路部门现使用的基准中心线与原发证时的基准中心线也发生了多处变化,若不及时更新铁路界址线,在很大程度上会影响铁路土地管理部门对已有土地资源的有效利用和配置。除了要将新旧里程值进行转换,将旧里程、支距坐标转换成国家统一坐标是亟待解决的问题。

二、编程语言的介绍

南方CASS是现在全国范围内使用较为普遍的测绘绘图软件,编程语言的选择应该考虑实用性和普及性。在CASS绘图软件中使用VB程序语言进行程序开发具有以下优势:

1)VB编程界面操作简单,可视化操作。VB提供了可视化设计工具,开发人员在设计对象时,不必为界面设计和描述对象而写大量的代码,只需在屏幕上“画出”各控件,在属性对话框中编辑各控件属性,即可完成对界面的设计和控件的效果编辑,降低了编程难度。

2)VB具有高级程序设计语言的语句结构,接近于人的自然思维方式,可自动进行语法错误检查。VB是解译语言,在输入代码的同时解译系统将高级语言分解翻译成计算机可以识别的指令,并判断每个语法是否错误[1]。

3)事件驱动灵活,程序挂接人性化。VB通过事件来操作对象,一个对象可以产生一个事件,也可以产生多个事件,每个事件通过一个程序来控制。对象的程序代码是独立编写的,对于程序间的挂接,开发人员可以按照自己的习惯来进行分别设置,操作更为灵活。

4)VB可以与CASS绘图软件同一程序运行,执行速度快。

三、程序的建立

1.程序要实现的功能

不同坐标系统的转换本质上是不同基准间的转换[2],搜集铁路相关资料后发现,发证时采用的旧里程数是发证年代铁路系统采用的一套旧标准,时间多在二十年前,此套标准现已完全弃用,作为关键里程定义的所标示的桥涵里程,因里程改变及桥涵改造修建,也发生较大变化。因此,编写程序按以下流程进行:

1)将旧里程进行推算后,对原始界线进行恢复。

2)按照铁路要求,将旧百米标进行恢复。

3)确定新中心线路后,确定新百米标。

4)对铁路界线按照新里程支距进行标示。

主要实现的功能如下:

1)根据地亩图上的旧里程支距,确定原始界线点位置,实现的最终结果如图1所示。

图1 地亩图转换成电子图

2)将权属调查后确定的新界址点,按照铁路最新里程标准进行标示。

3)将中心线上的新旧百米标和新旧公里标标示出。

2.数据要求

恢复的铁路界址点坐标(里程和支距)和百米标、新里程对应的界址点坐标(新里程和新支距)和新百米标均有图层归类要求,按要求分别进行分层。

按照《铁路用地图绘制管理办法》第19条中规定:注记界址点为分数形式,分子为垂直距离,分母为百米以下线路里程,单位为m,保留两位小数。

四、程序的操作

在恢复出铁路中心线后,能够提供的初始数据:

1)起点旧里程;图上旧里程;图上旧支距。

2)推算后的里程系数(用于理论线路长度和实际线路长度转换)。

3)起点新里程;图上新里程;图上新支距。

1.关键操作1:定点

定点即按照旧里程支距值恢复出旧界址点的过程,因里程系数不同,起始点里程数值因情况而定,若从整千米数开始变更系数,则起始里程为0,否则按照实际数值输入,计算距离位置时需将输入数值扣除。

里程点坐标首先判断:

定义位置时利用函数计算:

2.关键操作2:里程标注

里程标注即标注界址点的新里程支距值的过程。这步相当于关键操作1的逆操作,主要原理是根据中心线起始坐标值(里程)来确定界址点的新里程数,利用界址点到中心线的垂距确定支距值,最终将界址点的新坐标值按照标准标注格式表示出来。

在CASS绘图软件中,线段是有方向的,起始位置的确定是标示点坐标的前提,里程的计算是以铁路中心线的起算点为起算点的,提取点位时做以下定义:

此时,命令行会提示输入点,按照捕捉辅助准确选定点位。

选取中心线通过以下实现:

点和中心线确定后,界址点的坐标标注功能即能完成,标注效果图如图2所示。

图2 界址点新坐标标注效果图

3.其他关键操作

(1)建立主界面

建立程序主界面。首先用 Visual Basic面向对象的编程功能,添加窗体、控件等需要的编程元素,建立适合的程序界面[3]。添加必要图层:

(2)定义里程支距格式

因里程坐标以每千米计数,按公里标进行注记,考虑里程系数可能跨度几千米,所以需将里程数超过整千米后的里程数值舍去千米位数表示:

(3)百米标标注

百米标的标注同定点的第一步操作是相同的,首先确定中心线起始及起始里程,铁路里程是线形增加[4],定义代码如下:

起点里程是手动输入:

里程垂距的确定通过提取图面平面直角坐标作为中转数据:

整百米和整公里的位置通过输入的中心线起始里程和比例系数计算确定,值得注意的是,除了百米标处需标注百米位数,公里标需要在千米位数前加前缀“K”以作区分:

4.程序实现

程序主界面如图3所示。

图3 程序主界面图

通过VB编码,实现点与坐标(里程支距)的正反标示功能。确定出点的位置后,利用CASS的内置提取坐标功能,确定点的直角坐标。

五、结束语

在测绘工作中,经常会与多个行业出现交集,每个行业也有其特殊的绘图表示形式,经常需进行二次开发。VB具有良好的图形用户接口,其丰富的控件和工具功能,以及简单便捷的操作方法,对测绘绘图软件的二次开发相当实用。

VB开发测绘的应用程序,免去了界面属性设置的复杂操作,只要将所需控件直接画到Form上,然后针对每个控件进行编码编辑即可,省去很多编写代码的工作,铁路换证项目需要实现的功能多与数学模型有关,数学模型的建立与VB的语言表达方式接近,对于非专业编程人员来说,实现起来更加容易。CASS绘图软件内置的VB兼容功能,通过APPLOAD命令即可实现VB程序的实现,对于测绘内业工作非常方便,VB在CASS绘图软件二次开发中的应用有着深远的前景。

[1]王强,胡铁石.VB语言在编写水准测量程序中的应用[J],测绘与空间地理信息,2009,32(6):177-179.

[2]梅熙,王国祥.高速铁路坐标转换方法探讨[J].高速铁路技术,2012,3(4):6-10.

[3]祝昕刚.VB编程实现测量数据文件的批量处理[J].地理空间信息,2011,9(5):115-117.

[4]张江.坐标转换在铁路勘察设计中的应用探讨[J].铁道勘察,2010(4):11-13.

猜你喜欢

界址中心线控件
立式水轮发电机组“三条线”浅析
CASS地籍图中界址信息批量转出方法研究
关于.net控件数组的探讨
X线摄影中中心线对DR摄影质量的重要性
地籍数据库点线拓扑一致性并行检查方法*
基于Meanshift和Hough变换的秧苗行中心线提取
ASP.NET服务器端验证控件的使用
在ArcMap中实现对金图建库系统中界址线属性的便捷录入
广州SCS中界址点的检查与处理
由X线中心线的特征来定标X线机中心线指示的方法