APP下载

基于VSTO.NET Excel道路平面线形计算程序开发与实现

2018-07-25马天驰江智云

交通科技与经济 2018年4期
关键词:检核转角数学模型

曹 明,马天驰,宋 伟,江智云,郭 军

(1.浙江省交通规划设计研究院有限公司,浙江 杭州 310006;2.黑龙江工程学院 测绘工程学院,黑龙江 哈尔滨 150050;3.广州海洋地质调查局,广东 广州 510760)

道路设计成果一般分为图形文件、表格文件以及资料文档等,其中各种表格文件最为精确,是勘测各阶段的数学基础,怎样高效合理地使用这些表格是外业路线测设和内业数据处理的关键。为提高道路各勘测设计及施工阶段内外业数据处理的效率和准确性,针对过程中需要提取的重要数据进行批量和精确计算,进而进行进一步高精度测量放样工作,获取路线野外三维地面数据。因此,本文提出基于VSTO和.NET Framework技术开发出嵌入式程序用于道路相关各要素和坐标计算等工作。

1 .NET和.NET Framework

.NET是微软用来实现XML,Web Services,SOA(面向服务体系结构Service-Oriented Architecture)与敏捷性的新技术,是微软的新一代技术平台,是基于标准的、联通的、适应变化的、稳定的和高性能的一种技术。一个.NET应用是一个使用.NET Framework类库来编写,并运行于公共语言运行之上的应用程序[1]。

.NET Framework的出现,使得原来需要通过编程语言来实现的工作转由.NET Framework来完成。操作系统也可以通过提供一些.NET Framework不支持的功能,降低程序间通信的复杂性与局限性。这些程序可以是相同语言编写的,也可以是不同语言编写的[2]。

2 VSTO

VSTO(Visual Studio Tools for Office)是.NET平台下最新的Office开发技术。相对传统的VBA技术,VSTO为中高级开发人员提供了强大的开发平台和语言,并解决传统Office开发中的诸多问题,开发人员也可以使用熟悉的技术来构建更加灵活、强大、跨平台的企业级解决方案[3-4]。对于Office解决方案开发,VSTO是简单而强大的框架。这个框架为每个Office开发者带来了许多令人惊叹的好处:窗体空间、类、安全性、服务器可测量性、面向对象特征、完整性、易发布等[5-6]。

3 道路设计线位中边桩坐标计算

根据不同等级道路设计要求,道路设计中的平面线型包含不同线型要素,但都是由直线、缓和曲线、圆曲线3种基本单元构成,如图1所示;道路平面曲线的基本组合有:基本型(直线—入缓和曲线—圆曲线—出缓和曲线—直线)、卵型曲线、S型曲线、复合曲线、回头曲线等[7-8]。

不同类型的线型各要素算法不同,需对不同线型单独计算,然后按桩号首尾相接,为保证计算精度,本文保留数学模型中的高次项,各曲线类型数学模型[9-11]如下:

图1 道路线路设计示意图

3.1 直线上点P处中桩坐标及方位角

如图1所示,P点方位角即为JDi-1与JDi连线方位角αJDi-1JDi如式(1)所示[12-13]:

(1)

根据P点桩号和JDi-1桩号及直线方位角即可求出P点坐标,故P点坐标如式(2)所示:

(2)

式中,LP和LJDi-1分别为P点和JDi-1点的桩号,即l为P点与JDi-1的直线长度。

3.2 圆曲线上任一点中桩坐标

圆曲线上任一点中桩坐标(如图1中K点)。

(3)

为保证上述数学模型中高次项能够满足计算精度要求,对高次项进行单独计算,如式(4)所示:

(4)

dXK和dYK分别为高次项影响值,本文特选取杭州绕城高速直曲转角表中半径较小的数据进行验证,特取ls1=220,R=1 800,αJDi-1JDi=45°。由式(4)可以得出dXM=-0.000 06 m,dYM=0.003 mm。

3.3 第一缓和曲线任一点的中桩坐标

第一缓和曲线任一点的中桩坐标(如图1中U点)

(5)

式中,w为路线转角方向识别号,右偏时:w=1,左偏时:w=-1;当U点位于第一缓和曲线上时,

为保证上述数学模型中高次项能够满足计算精度要求,对高次项进行单独计算,如式(6)所示:

(6)

dXU和dYU分别为高次项计算值,为验证高次项对计算结果的影响,本文特选取杭州绕城高速直曲转角表中半径较小的数据进行验证,特取l=ls1=220,实际计算中l

3.4 第二缓和曲线上任一点中桩坐标

M点处中桩坐标计算式如式(7)[14-15](见图1):

(7)

由于第一缓和曲线与第二缓和曲线数学模型一致,因此可以得出该数学模型中高次项能够满足计算精度要求,在此不再赘述。

3.5 边桩坐标计算

边桩坐标是在对应中桩坐标和方位角的基础上得出,如式(8)、式(9)所示。

路线左侧边桩坐标计算式[16]:

(8)

路线右侧边桩坐标计算式[16]:

(9)

4 道路上任一点坐标计算程序设计

4.1 程序结构设计

合理的程序结构设计是保证计算准确性的基础,也为后续开发各项功能提供接口,同时通过自检能更加准确地检核内部数据计算的准确性。

程序具体设计框架如图2所示。

图2 程序结构设计流程图

4.2 程序功能设计

本程序有两种资料录入方法。

方法一:输入路线起点桩号、交点坐标以及入缓和曲线和出缓和曲线长度,并生成对应的直曲转角表;

方法二:直接读取设计直曲转角表。根据计算和设计提供的直曲转角表对设计线路进行一致性检核,检测设计线路是否完整。

后台保存线位各段主点要素,然后根据待计算桩号所处曲线段和坐标计算模型计算对应坐标;该坐标与设计坐标进行逐桩做标记性对比检核,判断计算准确性和精度。

此外根据式(6)和(7)计算横断面成果坐标。

4.3 程序具体实现

4.3.1 程序界面设计

本文程序是Excel二次开发的嵌入式程序,程序界面如图3所示。

4.3.2 程序代码编写

C#是面向对象设计的程序语言,为更好地维护和拓展程序,本程序专门设计道路数据处理的类HintRoadClass和不同曲线类型的数据结构,如表1所示定义变量及函数,程序中的主要功能函数代码如下。

1)建立基本应用工作表

for(intiNumsht=sheetName.Length - 1; iNumsht >= 0;

iNumsht--){_wb.Sheets.Add();

_wb.ActiveSheet.name=sheetName[iNumsht];}

2)根据设计参数生成直曲转角表

q1 = pm[2,4]/2-ath.Pow(pm[2,4],3)/

(240 * Math.Pow(pm[2,3],2)) + Math.Pow(pm[2,4],5) / (34560 * Math.Pow(pm[2,3],4));

表1 程序结构

图3 程序操作界面

q2 = pm[2,5]/2-ath.Pow(pm[2,5],3)/(240*Math.Pow(pm[2,3],2))+Math.Pow(pm[2,5],5)/(34560 * Math.Pow(pm[2,3],4));

p1 = Math.Pow(pm[2,4],2)/(24 * pm[2,3])-Math.Pow(pm[2,4],4) / (2688 * Math.Pow(pm[2,3],3)) + Math.Pow(pm[2,4],6)/(506880 * Math.Pow(pm[2,3],5));

p2 = Math.Pow(pm[2,5],2)/(24 * pm[2,3])-ath.Pow(pm[2,5],4)/(2688*Math.Pow(pm[2,3],3))+Math.Pow(pm[2,5],6)/(506880 * Math.Pow(pm[2,3],5));

t1 = q1 + (pm[2,3] + p2-m[2,3]+p1)*Math.Cos(pj))/Math.Sin(pj);

t2 = q2 + (pm[2,3] + p1-m[2,3]+p2)*Math.Cos(pj))/Math.Sin(pj);

ly = pm[2,3] * pj - (pm[2,4] + pm[2,5]) / 2;

其中q1、q2、p1、p2、t1、t2、ly分别为曲线要素。

3)中桩坐标计算

中桩坐标计算分多种情况,需采用不同的数学模型,此处只列举代码片段,如下:

l = lxzh - kzh;

tp = (2 * l - ls1) / 2 / R;

xp = R * Math.Sin(tp) + q1;

yp = R * (1 - Math.Cos(tp)) + p1;

x = x1 + xp * Math.Cos(a0) - zy * yp * Math.Sin(a0);

y = y1 + xp * Math.Sin(a0) + zy * yp * Math.Cos(a0);

5 程序测试与工程实践

本文以浙江省某高速公路项目为测试对象,选取其中一段设计数据进行测试,同时阐述程序操作流程,并对计算结果进行精度统计。

启动Excel软件后,点击“路线表格准备”按钮,即生成所需工作表,如图4所示。

图4 程序生成工作表

将设计参数录入“平面资料”表中,执行“生成直曲转表”,即在“直曲线表”中计算载入数据,同时读取设计直曲转角表并与该表进行详细检核比对,如图5所示。

图5 直曲转角精度及计算结果

将待计算桩号和横断面数据录入相应表格即可计算出相应坐标等,如图6所示。限于篇幅有限,在此不一一列举。

图6 道路中桩坐标计算结果

此外程序自动将计算成果与设计坐标逐个进行对比,生成精度检核报表,如表2所示。

表2 计算结果精度统计表

因篇幅所限,省略了程序运行中的部分界面及计算成果表。

6 结束语

本文研究了道路设计参数数学模型,编写了基于VSTO、Excel和.NET开发平台的道路数据处理程序,实现了直线段、入缓和曲线、圆曲线、出缓和曲线段主点坐标以及任一点坐标和方位角的计算,通过保留更高迭代项以提高计算模型的精度,并对各阶段成果进行检核,同时对计算结果统计分析形成报表。程序能在可靠性、效率、精度以及适应性等方面满足道路测设放样要求。同时,对程序结构和功能的优化设计,为今后开发更多功能提供相应接口,有利于程序进一步的拓展,以便更高效、更准确完成今后道路测设工作。

本文仅对完整线路进行研究和开发,而对于卵型曲线等非完整线位尚有待进一步研究和探讨。

猜你喜欢

检核转角数学模型
构建检核表,聚焦幼儿发展
——以大班艺术领域为例
AHP法短跑数学模型分析
活用数学模型,理解排列组合
照护群集管理在防范转床信息错误风险中的应用
玩转角的平分线
基于Python 设计的TEQC 数据质量可视化分析软件
垂直荷载木结构大跨屋顶设计
侧围外板转角深拉伸起皱缺陷研究
基于电力机器人控制系统的数学模型简述
三次“转角”遇到爱