本发明涉及子午线弧长计算技术领域,更具体地说,本发明涉及一种利用递归算法计算子午线弧长的方法及装置、设备和可读介质。
背景技术:
子午线弧长是大地测量学中的一个基本量,在大地坐标计算、gnss定位和导航、gis地理坐标数据表达、高斯平面直角坐标计算,以及经典的弧度测量中,都需要计算不同的两点之间的子午线弧长。实用中由于子午线弧长的计算涉及到椭圆积分,所以现有应用中都是将其展开成级数形式,再用逐项积分的方法求出满足一定精度要求的计算公式。该公式的缺点是,精度越高,要求其展开的级数项就要越多,这在公式推导上增加了不少困难,也给子午线弧长理论研究带来障碍。另外,不同的椭球参数,级数中的系数值并不同,这就导致了子午线弧长计算不具普适性。
因此,实际工作中需要找到一种新的具有普适性且精度高的计算子午线弧长的方法。
技术实现要素:
有鉴于此,本发明提供了一种具有计算简单且精度高的利用递归算法计算子午线弧长的方法及装置、设备和可读介质。
本发明的技术方案是这样实现的,
一方面,本发明提供了一种利用递归算法计算子午线弧长的方法,包括以下步骤:
s1、获取子午线所在椭圆的偏心率和椭圆的长半轴以及子午线的纬度;
s2、依据偏心率计算第一递归系数;
s3、依据纬度计算第二递归系数;
s4、利用第一递归系数、第二递归系数和椭圆的长半轴,并按照递归算法计算子午线弧长。
在以上技术方案的基础上,优选的是,s1中获取子午线所在椭圆的偏心率具体为:获取子午线所在椭圆的扁率f,依据以下方法求出椭圆的偏心率e,e2=2f-f2。
进一步优选的是,s2中具体包括:
s21、获取第一初始递归系数cn,cn的表达式为:
s22、将cn在n为0至n之间累计求和即得第一递归系数
f1=c0+c1+c2+...+cn。
进一步优选的是,s3中具体包括:
s31、获取第二初始递归系数kn,kn的表达式为:
s32、由第二初始递归系数kn和第一初始递归系数cn,计算第二递归系数f2=-k0(c0+c1+c2+...+cn)-k1(c2+c3...+cn)-...-kn-1cn。
进一步优选的是,s4中具体包括:按照递归算法计算得到子午线弧长s,
另一方面,本发明还提供了利用递归算法计算子午线弧长的装置,包括:
获取单元,其用于获取子午线所在椭圆的扁率,子午线所在椭圆的长半轴和子午线所在纬度;
偏心率计算单元,其与获取单元通讯连接,偏心率计算单元用于根据椭圆的扁率计算偏心率;
第一初始递归系数计算单元,其与偏心率计算单元通讯连接,第一初始递归系数计算单元用于根据偏心率计算第一初始递归系数值;
第一递归系数计算单元,其与第一初始递归系数计算单元通讯连接,第一递归系数计算单元对第一初始递归系数值进行累计求和得到第一递归系数值;
第二初始递归系数计算单元,其与获取单元通讯连接,第二初始递归系数计算单元根据子午线所在纬度计算第二初始递归系数值;
第二递归系数计算单元,其与第二初始递归系数计算单元、第一递归系数计算单元通讯连接,第二递归系数计算单元根据第二初始递归系数值和第一递归系数计算得到第二递归系数值;
子午线弧长计算单元,其与获取单元、偏心率计算单元、第一递归系数计算单元和第二递归系数计算单元通讯连接,子午线弧长计算单元根据子午线所在纬度、偏心率、第一递归系数值和第二递归系数值计算得到子午线弧长。
在以上技术方案的基础上,优选的是,还包括接口单元,所述接口单元与cad软件单元通讯连接,所述接口单元与获取单元、偏心率计算单元、第一初始递归系数计算单元、第一递归系数计算单元、第二初始递归系数计算单元、第二递归系数计算单元和子午线弧长计算单元均通讯连接。
第三方面,本发明还提供了一种计算设备,包括:处理器以及存储器;其中,
所述存储器存储代码;
所述处理器执行所述代码,用于执行所述的利用递归算法计算子午线弧长的方法步骤。
第四方面,本发明还提供了一种计算机可读存储介质,可读存储介质上存储有方法程序,所述方法程序被计算机执行时实现利用递归算法计算子午线弧长的方法步骤。
本发明的利用递归算法计算子午线弧长的方法相对于现有技术具有以下有益效果:
(1)本发明的利用递归算法计算子午线弧长的方法,计算简单,无需针对具体的椭球,并适用于任意弧长精度,为目前研究弧长计算提供了一个精度分析标准,也为子午线弧长计算的理论和应用打下坚实基础;
(2)本发明的利用递归算法计算子午线弧长的方法,只有两个初始递归系数,其中一个初始递归系数与偏心率e有关,另一个初始递归系数与纬度有关,而第一递归系数、第二递归系数仅是两个初始递归系数的简单累计,计算过程简单,数值计算简单,精度高,具有很强的社会经济价值。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的利用递归算法计算子午线弧长的方法流程图;
图2为本发明的利用递归算法计算子午线弧长的装置组成示意图。
具体实施方式
下面将结合本发明实施方式,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
如图1所示,本发明的一种利用递归算法计算子午线弧长的方法,包括以下步骤:
s1、获取子午线所在椭圆的偏心率和椭圆的长半轴以及子午线的纬度;
s2、依据偏心率计算第一递归系数;
s3、依据纬度计算第二递归系数;
s4、利用第一递归系数、第二递归系数和椭圆的长半轴,并按照递归算法计算子午线弧长。
具体计算时,s1中获取待计算子午线所在椭圆的扁率f以及椭圆的长半轴a,然后按照以下方法求出待计算子午线所在椭圆的偏心率e,e2=2f-f2;
s2中根据偏心率e确定递归项数为n的第一初始递归系数cn,
s3中先获取待计算子午线的纬度
f2=-k0(c0+c1+c2+...+cn)-k1(c2+c3...+cn)-...-kn-1cn。
s4中通过第一递归系数f1、第二递归系数f2和椭圆的长半轴a,并按照递归算法计算子午线弧长s,
通过上述方法即可计算出子午线弧长,该子午线弧长的计算公式,表达简洁,而且无需针对具体的椭球,并适用于任意弧长精度,为目前研究弧长计算提供了一个精度分析标准,也为子午线弧长计算的理论和应用打下坚实基础;且上述计算方法中只有两个初始递归系数,其中一个初始递归系数与偏心率e有关,另一个初始递归系数与纬度有关,而第一递归系数f1、第二递归系数f2仅是两个初始递归系数的简单累计,计算过程简单,数值计算简单,具有很强的社会经济价值。
以下按照传统方法与传统方法来分别计算子午线弧长,传统的子午弧长计算公式为:
其中,a为椭圆的长半轴,e为偏心率,a、b、c、d、e分别为与椭球参数e相关的计算量,其具体形式如下:
a=1+3/6.0×e2+30/80.0×e4+35/112.0×e6+630/2304×e8;
b=1/6.0×e2+15/80.0×e4+21/112.0×e6+420/2304×e8;
c=3/80.0×e4+7/112.0×e6+180/2304×e8;
d=1/112.0×e6+45/2304×e8;
e=5/2304.0×e8;
分别计算纬度为10°、20°、30°、40°、50°、60°、70°、80°、90°的弧长,结果如下表1所示。表1中(表1中第三列至第十列为按递归法计算的弧长值;表头中的n为递归项,主要是考察弧长值随着递归项的增加所产生的变化;为避免数字重复,自第四列开始,只列出了弧长值的尾数部分,即前面均为110587)
表1-不同纬度的子午线弧长计算对比表
从表1中可以看出,按传统的公式计算的弧长值实际上相当于按递归法n=4和n=5之间的弧长值,是一种mm级的近似值,而本发明的递归算法相当于提供了一种理论值,其计算精度更高。
如图2所示,本发明还提供了一种利用递归算法计算子午线弧长的装置,包括:
获取单元,其用于获取子午线所在椭圆的扁率,子午线所在椭圆的长半轴和子午线所在纬度;
偏心率计算单元,其与获取单元通讯连接,偏心率计算单元用于根据椭圆的扁率计算偏心率;
第一初始递归系数计算单元,其与偏心率计算单元通讯连接,第一初始递归系数计算单元用于根据偏心率计算第一初始递归系数值;
第一递归系数计算单元,其与第一初始递归系数计算单元通讯连接,第一递归系数计算单元对第一初始递归系数值进行累计求和得到第一递归系数值;
第二初始递归系数计算单元,其与获取单元通讯连接,第二初始递归系数计算单元根据子午线所在纬度计算第二初始递归系数值;
第二递归系数计算单元,其与第二初始递归系数计算单元、第一递归系数计算单元通讯连接,第二递归系数计算单元根据第二初始递归系数值和第一递归系数计算得到第二递归系数值;
子午线弧长计算单元,其与获取单元、偏心率计算单元、第一递归系数计算单元和第二递归系数计算单元通讯连接,子午线弧长计算单元根据子午线所在纬度、偏心率、第一递归系数值和第二递归系数值计算得到子午线弧长。
还包括接口单元,所述接口单元与cad软件单元通讯连接,所述接口单元与获取单元、偏心率计算单元、第一初始递归系数计算单元、第一递归系数计算单元、第二初始递归系数计算单元、第二递归系数计算单元和子午线弧长计算单元均通讯连接。通过接口单元将该装置与cad软件连接,通过接口单元调用该装置并实现该装置的功能。
本发明还提供了一种计算设备,包括:处理器以及存储器;其中,
所述存储器存储代码;
所述处理器执行所述代码,用于执行所述的利用递归算法计算子午线弧长的方法步骤。
本发明还提供了一种计算机可读存储介质,可读存储介质上存储有方法程序,所述方法程序被计算机执行时实现利用递归算法计算子午线弧长的方法步骤。
以上所述仅为本发明的较佳实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。