怎样计算高速公路路线坐标及高程15页精选文档.docx
- 文档编号:5058935
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:12
- 大小:20.29KB
怎样计算高速公路路线坐标及高程15页精选文档.docx
《怎样计算高速公路路线坐标及高程15页精选文档.docx》由会员分享,可在线阅读,更多相关《怎样计算高速公路路线坐标及高程15页精选文档.docx(12页珍藏版)》请在冰点文库上搜索。
怎样计算高速公路路线坐标及高程15页精选文档
一个excle模板的制作
在当今社会,excle的使用已经是越来越来频繁了,几乎涉及所有的行业,路桥施工也不例外。
我在某路桥公司曾经负责过某项目部的测量工作。
大家都知道,测量最主要的就是计算了,如坐标、高程、横坡度等。
我现在给大家推荐一款我自己编制的关于测量计算的excel模板。
首先我会跟大家介绍一下模板的作用,然后再一一讲解此模板的制作过程。
首先给大家看一下此模板的界面如下:
也许大家咋一看,切~这算啥,我也会做这张表格,实在是太简单了。
不错,如果仅仅是靠手动输入这样子的数字,也许只要懂一点点excle的人都会制作出这张表格吧。
不过,这张表格并不是你表面所看到的仅仅是几个数字而已,其内在的公式才是它的亮点。
也许这样讲大家还不是很清楚,我继续给大家截个图,看看它里面的公式是什么。
大家注意到上面的公式了吗,并不是仅仅是输入数字就完事的,它是一个自定义函数zbx(),那么后面的都是一样吗?
完全正确,后面的都是自定义函数,它们分别是zby()、sqx()、hpz()、hpy()。
也许大家会问,恩,是不错,但是有什么用呢?
那让我先给大家简述一下这个自定义函数的用法。
竟然是一个函数,那么它就必须要有一个自变量,这几个函数的自变量又是什么呢?
其实这个模板里面所有函数的自变量只有一个,就是桩号。
什么意思?
就是只要你给出任意一个桩号,都能得到其对应的坐标、中桩高程和横坡度。
假设我们要K38+000~K38+200段落内每隔20M一个断面所有点的坐标、中桩高程、以及左右横坡。
我就用这个模板给大家演示一下(此模板暂时数据只针对黄祁高速公路六标项目部)。
先在桩号那一列把K38+000~K38+200输入进去,可不要真的把字母“K”和加号“+”给输进去,只用输入纯数字就行了,否则计算会出错,之所以在模板里显示的是那样子,只不过是自定义的单元格式而已。
第二步剩下的仅仅就是拖动公式了,后面的都是公式,所以可以一起拖下来,先选定后面的所有单元格,然后向下直接拖动至最后,那么你需要的数据就全部出来了。
呵呵,是不是很神奇!
并不是只能计算整数桩号数据的,是任意桩号的,也就是说桩号K38+000和K38+111.232计算出来的结果的精度是一样的。
这个模板可以让你计算任意你想要的坐标,比如其演化计算出来的桥梁墩柱坐标,涵洞坐标等等。
给大家示范一下计算涵洞的坐标。
假设某涵洞桩号是K38+433.245,左边据中桩距离是23.45M,右边距中桩距离是33.56M,基础宽度是6M,那么我要用这个模板计算出涵洞基础4个拐点的坐标。
在这里我用此模板的一个空白的工作表来给大家演示一下。
上面这张表格现在大家都会做了吧,只不过多了一个自定义函数jfw(),它也是以桩号为自变量的一个函数,其得出的值是所在路线的某桩号的方位角。
好了,有了中桩坐标和方位角,而且距离我们已经知道了,那么各边桩的坐标就可以计算出来了,x左=中桩坐标x+距离左X(乘号)cos(方位角—pi/2),y左=中桩坐标y+距离左X(乘号)sin(方位角—pi/2)。
至于右边坐标公式仅仅是把那里面角度的减号改成加号而已。
那么就可以得出来下面的表格了,离那4个拐点坐标也就越来越近了。
好了,我们计算出了涵洞轴线的两个坐标,宽度我们又是知道的,而且我们方位角也知道,那么左边两个的拐点坐标就是轴线左边的坐标分别利用三角函数就能计算出来了,只是距离变成了宽度的一半,而另外一个拐点的方位角要加上一个pi,如下表:
以上就是拐点的4个坐标。
至于边桩高程就不做介绍,竟然有了中桩高程,而且有了左边和右边的横坡度,那么自然的边桩高程也是很容易计算出来的了。
讲了这么多其实只是介绍了这个模板是怎么操作和有什么用处,可是有那么多用处又有什么用呢,它只是针对你黄祁六标项目部才能用,我们项目部又不能用。
没关系,我马上给大家详细讲解此模板的制作流程。
还回到这个模板里面来,打开这个模板,然后进入vb编辑器里面,直接按Alt+F11可以进入,也可以从以下界面进入:
工具宏vb编辑器(不好意思了,怎么都截不了那个图,还是直接按Alt+F11来的快)
接下来就进入此界面了,注意旁边的模块,之所以可以能用自定义函数全部是它们的功劳,我一个一个的模块给大家讲解,先讲模块1:
模块1
Functionzbx(zhAsDouble)AsDouble
DimxAsDouble'交点横坐标
DimyAsDouble'交点纵坐标
DimzhjdAsDouble'交点桩号
DimjzjAsDouble'转角(右转为正,左转为负)
DimrAsDouble'圆曲线半径
DimlsAsDouble'缓和曲线长
DimjzhAsDouble'起始直线方位角
DimpiAsDouble'pi=3.14159265358979
DimmAsDouble'切垂差
DimpAsDouble'内移距
DimtAsDouble'切线长
DimlcAsDouble'外矢距
Dimj0AsDouble'缓圆点切线方位角
DimzhzhAsDouble'直缓点桩号
DimzhhyAsDouble
DimzhyhAsDouble
DimzhhzAsDouble
DimzbzhAsDouble'直缓点坐标
DimzbhyAsDouble
DimzbyhAsDouble
DimzbhzAsDouble
DimliAsDouble
DimxeAsDouble
DimyeAsDouble
DimdsAsDouble'弦长
DimjiAsDouble'转角
DimiAsDouble'转角正负号
Ifzh>=35290Andzh<36571.636Then'从这里开始
x=3302618.225
y=515805.714
zhjd=36087.224
jzj=-1*dzh(46.3735)
r=1096.226
ls=130
jzh=dzh(299.1304)
ElseIfzh<37683.43Then
x=3302286.5
y=514747.726
zhjd=37142.734
jzj=dzh(34.263)
r=1600
ls=150
jzh=dzh(252.353)
ElseIfzh<38850.118Then
x=3302680.931
y=513460.274
zhjd=38458.851
jzj=-1*dzh(28.2945)
r=1300
ls=150
jzh=dzh(287.0159)
ElseIfzh<=40400Then
x=3302433.987
y=512242.43
zhjd=39687.464
jzj=dzh(28.4725)
r=1700
ls=150
jzh=dzh(258.3215)
Else
zbx=Null
ExitFunction
EndIf'到这里结束
pi=3.14159265358979
i=Sgn(jzj)
j0=ls/r/2
m=ls/2-ls^3/r^2/240
p=ls^2/r/24
t=m+(r+p)*Tan(Abs(jzj)/2)
e=(r+p)/Cos(Abs(jzj))-r
lc=r*(Abs(jzj)-2*j0)
li=ls
xe=li-li^5/r^2/ls^2/40+li^9/r^4/ls^4/3456-li^13/r^6/ls^6/599040+li^17/r^8/ls^8/175472640-li^21/r^10/ls^10/(7.80337152*10^10)
ye=li^3/r/ls/6-li^7/r^3/ls^3/336+li^11/r^5/ls^5/42240-li^15/r^7/ls^7/9676800+li^19/r^9/ls^9/(3.53009664*10^9)-li^23/r^11/ls^11/(1.8802409472*10^12)
ds=(xe^2+ye^2)^(1/2)
ji=Atn(ye/xe)
zhzh=zhjd-t
zhhy=zhzh+ls
zhyh=zhhy+lc
zhhz=zhyh+ls
zbzh=x+t*Cos(jzh+pi)
zbhy=zbzh+ds*Cos(jzh+i*ji)
zbhz=x+t*Cos(jzh+jzj)
zbyh=zbhz+ds*Cos(jzh+jzj-i*ji+pi)
Ifzh li=zhzh-zh ds=li ji=jzh+pi x=zbzh+ds*Cos(ji) ElseIfzh li=zh-zhzh xe=li-li^5/r^2/ls^2/40+li^9/r^4/ls^4/3456-li^13/r^6/ls^6/599040+li^17/r^8/ls^8/175472640-li^21/r^10/ls^10/(7.80337152*10^10) ye=li^3/r/ls/6-li^7/r^3/ls^3/336+li^11/r^5/ls^5/42240-li^15/r^7/ls^7/9676800+li^19/r^9/ls^9/(3.53009664*10^9)-li^23/r^11/ls^11/(1.8802409472*10^12) ds=(xe^2+ye^2)^(1/2) ji=jzh+i*Atn(ye/xe) x=zbzh+ds*Cos(ji) ElseIfzh li=zh-zhhy ds=2*r*Sin(li/r/2) ji=jzh+i*j0+i*li/r/2 x=zbhy+ds*Cos(ji) ElseIfzh li=zhhz-zh xe=li-li^5/r^2/ls^2/40+li^9/r^4/ls^4/3456-li^13/r^6/ls^6/599040+li^17/r^8/ls^8/175472640-li^21/r^10/ls^10/(7.80337152*10^10) ye=li^3/r/ls/6-li^7/r^3/ls^3/336+li^11/r^5/ls^5/42240-li^15/r^7/ls^7/9676800+li^19/r^9/ls^9/(3.53009664*10^9)-li^23/r^11/ls^11/(1.8802409472*10^12) ds=(xe^2+ye^2)^(1/2) ji=jzh+jzj-i*Atn(ye/xe)+pi x=zbhz+ds*Cos(ji) Else li=zh-zhhz ds=li ji=jzh+jzj x=zbhz+ds*Cos(ji) EndIf zbx=x EndFunction 以上模块其实就是一个以自变量为桩号的函数,名字是叫zbx(),所返回的值就是坐标x。 也许有人会说什么乱七八糟的东西,我一点也看不懂。 呵呵,没关系,我们所要的只是把它运用于实际中来,并不要求所有人都能看懂,毕竟要全部看懂,还得学会编程语言vba。 这里我只讲它的用法,怎么能让它运用到所有项目的路线中去。 首先让我们知道这个函数所要运用到的已知条件,如下: 这是设计院所给的数据,那么我现在要用到哪些呢? 注意了,到重点了,以下的大家只要跟着我一步一步做就行,请不要问为什么(如果你很想知道为什么的话,我就推荐你看一下excle关于vba的书)。 在模块中看见从“从这里开始”和“到这里结束”了吗? 呵呵,为了写这个特意加上的。 好了,竟然我们要运用到新的路线上面去,那么它的已知条件的各个数据是变化的。 所以必须得改一些东西。 刚才说的那个把它全部删除,什么? 删除? 对,全部删了! 呵呵,然后改成下面的: Ifzh>=起始桩号Andzh<第一个交点的第二缓和曲线终点桩号Then'从这里开始 x=交点横坐标 y=交点纵坐标 zhjd=交点桩号 jzj=-1*dzh(转角) (说明: 输入方式,比如31°02′19″就输入31.0219左转就如上一样输入,如右转就是jzj=dzh(转角)没有负号的。 ) r=圆曲线半径 ls=缓和曲线长度 jzh=dzh(前一个交点到下一个交点的方位角) (说明: 输入方式,比如31°02′19″就输入31.0219) ElseIfzh<第二个交点的第二缓和曲线终点桩号Then x=第二个交点横坐标 y=第二个交点纵坐标 zhjd=第二个交点桩号 jzj=dzh(第二转角) r=圆曲线半径 ls=缓和曲线长度 jzh=dzh(第二交点与第一交点的方位角) (……直到全部输完,用的都是第二段语句的格式) Else zbx=Null ExitFunction EndIf'到这里结束 明白了吗? 黑体字换成你应该要输入的数据,文字说明就免了,而且必须免了,不然程序就会出错。 数据在你输入的时候一定要保证准确无误,不然的话就到时候计算出来的数据就全错了。 到这里模块1应该弄清楚了吧,接下来的就特别简单了,我们继续讲解模块2: 模块2跟模块1所要改的东西几乎是一模一样的,你所需要的仅仅是把模块1输入的数据首先复制过来,然后在一个地方要改写一下,倒数第3行(“到这里结束”是算最后一行),模块1里面是zbx,如果到了模块2里面请将其改为zby就OK了。 是不是觉得万事开头难这句话很有道理,这么快就搞定模块2了。 模块2好了,就应该是模块3了吧。 啊? 怎么可能,改的完全是一样的,只是还要改正一下倒数第三行,把模块1里面的zbx改成jfw就行了,哈哈,这也太简单了吧。 是的,就是这么简单。 再接再厉,我们进行模块4的研究: 这个大家什么都不用改,只是一个输入转换的小程序,意思就是如果你要输入角度,比如31°02′44″,只要输入dzh(31.0244)就会把角度转换成对应的弧度。 这就是上面说明中解释角度为什么要这样子输入,嘿嘿,方便吧。 快了,离成功就只有一点点了,我们现在已经能计算出全部的坐标了,让我们看看高程是怎么计算的吧。 模块5登场了: 要知道高程怎么计算,我们先看看设计院能提供给我们的数据有哪些呢? 我们还从这个模块里面的“从这里开始”和“到这里结束”谈起,大家知道怎么做了吧,不错,正如你所想,把它删掉。 然后……没有然后了,这样子就行了,嘿嘿,开玩笑的了,还得改成下面的: Ifzh>=起始桩号Andzh<第一个圆曲线的终点桩号Then'从这里开始 zh1=前一个交点桩号 zh2=中间的交点桩号(也就是正用的第一个) zh3=下一个交点桩号 gc1=前一个交点的高程 gc2=中间的交点的高程 gc3=下一个交点的高程 r=圆曲线半径 ElseIfzh<第二个圆曲线的终点桩号Then zh1=相对于这个交点的前一点桩号 zh2=这个交点的桩号 zh3=相对于这个交点的下一个桩号 gc1=还用说明你就是傻瓜 gc2=还用说明你就是傻瓜 gc3=还用说明你就是傻瓜 r=圆曲线半径 (……一直到结束,用的都是第二段语句的格式) Else sqx=Null ExitFunction EndIf'到这里结束 注意: 所有输入的数据在等号后面是没有空格的,直接输入数据,而数据后面都跟上一个空格或N个空格,我也不怎么记得语法了,你这样做至少能够保证是正确的。 我们还要研究模块7和模块8了吗? 嘿嘿,大家就自己琢磨吧,这已经差不多够用了。 现在我们已经在vb编辑器里面全部改过来了,我们可以在工作表里面试验一下子了,刚才我们用了几个自定义函数呢,x坐标zbx()、y坐标zby()、方位家jfw()、中桩高程sqx()。 这么累,让我们来体会一下劳动的果实吧。 我们来求任意一个桩号的坐标、方位角和高程,比如K37+777: 怎么回事,出现这种情况了,怎么办? 不用担心,这其实是office自己的一种保护方法,它是不允许不信任的函数随意运行的,万一是病毒怎么办。 但这是我自己编的程序呀,一定不是病毒了,我要它运行该怎么做呢? 继续跟我来,首先在菜单栏工具里面找到宏下的子菜单安全性这一项,点开它,把它改成“中”,然后点确定,关掉excel,再重新打开,看见了吗? 点击启用宏,再看看,好了。 还没显示的话就按alt+ctrl+shift+F9强制它运行就可以了。 说了这么多其实只是针对本人制作的一个模板才能运行的,如果谁有兴趣的话可以联系本人取得模板。 QQ: 看书被书耍 希望以上资料对你有所帮助,附励志名言3条: 1、上帝说: 你要什么便取什么,但是要付出相当的代价。 2、目标的坚定是性格中最必要的力量源泉之一,也是成功的利器之一。 没有它,天才会在矛盾无定的迷径中徒劳无功。 3、当你无法从一楼蹦到三楼时,不要忘记走楼梯。 要记住伟大的成功往往不是一蹴而就的,必须学会分解你的目标,逐步实施。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 怎样 计算 高速公路 路线 坐标 高程 15 精选 文档