图幅理论面积与图斑椭球面积计算公式及要求
一、 图幅理论面积计算公式
(1)
式中:
a—椭球长半轴(单位:米),α—椭球扁率,b—椭球短半轴(单位:米)。
е²﹦(a²﹣b²)/a²。
A﹦1﹢(3/6)е²﹢(30/80)е4﹢(35/112)е6﹢(630/2304)е8。
B﹦ (1/6)е²﹢(15/80)е4﹢(21/112)е6﹢(420/2304)е8。
C﹦ (3/80)е4﹢ (7/112)е6﹢(180/2304)е8。
D﹦ (1/112)е6﹢ (45/2304)е8。
E﹦ (5/2304)е8。
ΔL—图幅东西图廓的经差(单位:弧度)。
(B2﹣B1)—图幅南北图廓的纬差(单位:弧度),Bm﹦(B1﹢B2)/2。
二、椭球面上任意梯形面积计算公式
(2)
其中:A,B,C,D,E 为常数,按下式计算:
е²﹦(a²﹣b²)/a²
A﹦1﹢(3/6)е²﹢(30/80)е4﹢(35/112)е6﹢(630/2304)е8
B﹦ (1/6)е²﹢(15/80)е4﹢(21/112)е6﹢(420/2304)е8
C﹦ (3/80)е4﹢ (7/112)е6﹢(180/2304)е8
D﹦ (1/112)е6﹢(45/2304)е8
E﹦ (5/2304)е8
式中:a—椭球长半轴(单位:米),b—椭球短半轴(单位:米);
ΔL—图块经差(单位:弧度); (B2﹣B1)—图块纬差(单位:弧度)
Bm﹦(B1﹢B2)/2。
三、高斯投影反解变换()模型
(若坐标不带带号,则不需减去带号×1000000;)
+中央子午线经度值(孤度) (3)
式中:
公式说明:若坐标为没有带号前缀格式,则不需减去带号×1000000;若坐标为有带号前缀格式,则需减去带号×1000000。
四、计算用到的常数、椭球参数
在计算图幅理论面积与任意图斑椭球面积时,有关常数及保留的位数按给定数值计算。
常数:
π﹦3.14159265358979
206264.8062471
80椭球常数:
= 6378140 = 1/ 298.257
= 6356755.29
= 6.69438499958795E-03
= 6.73950181947292E-03
= 6399596.65198801
相关常数:
k0 = 1.57048687472752E-07
k1 = 5.05250559291393E-03
k2 = 2.98473350966158E-05
k3 = 2.41627215981336E-07
k4 = 2.22241909461273E-09
五、计算中的取位及要求
① 高斯投影反解变换后的B,L以秒为单位,保留到小数点后6位,四舍五入。
② 采用计算机计算时,所有变量数据类型均要定义为双精度。
③ 面积计算结果以平方米为单位,保留一位小数,四舍五入。
④ 各种比例尺标准分幅图经差、纬差见表1。
⑤ 在用大地坐标生成标准分幅图框时,要求在每条边框线的整秒处插入加密点。
表1 各种比例尺标准分幅图经差、纬差表
比例尺 1:100万 1:50万 1:25万 1:10万 1:5万 1:2.5万 1:1万 1:5千
经差 6º 3º 1º30′ 30′ 15′ 7′30″ 3′45″ 1′52.5″
纬差 4º 2º 1º 20′ 10′ 5′ 2′30″ 1′15″
六、任意图斑椭球面积计算方法
任意封闭图斑椭球面积计算的原理:将任意封闭图斑高斯平面坐标利用高斯投影反解变换模型,将高斯平面坐标换算为相应椭球的大地坐标,再利用椭球面上任意梯形图块面积计算模型计算其椭球面积,从而得到任意封闭图斑的椭球面积。
1、计算方法:
任意封闭区域总是可以分割成有限个任意小的梯形图块,因此,任意封闭区域的面积,式中Si为分割的任意小的梯形图块面积(i=1,2,…n)用公式(2)计算。
求封闭区域(多边形如图1)ABCD的面积 ,其具体方法为:
(1)对封闭区域(多边形)的界址点连续编号(顺时针或逆时针)ABCD,提取各界址点的高斯平面坐标A(X1,Y1),B(X2,Y2),C(X3,Y3),D(X4,Y4);
(2)利用高斯投影反解变换模型公式(3),将高斯平面坐标换算为相应椭球的大地坐标A(B1,L1),B(B2,L2),C(B3,L3),D(B4,L4);
(3)任意给定一经线L0(如L0=60°),这样多边形ABCD的各边AB、BC、CD、DA与L0就围成了4个梯形图块(ABB1A1、BCC1B1、CDD1C1、DAA1D1);
(4)由于在椭球面上同一经差随着纬度升高,梯形图块的面积逐渐减小,而同一纬差上经差梯形图块的面积相等,所以,将梯形图块ABB1A1按纬差分割成许多个小梯形图块AEiFiA1,用公式(2)计算出各小梯形图块AEiFiA1的面积Si,然后累加Si就得到梯形图块ABB1A1的面积,同理,依次计算出梯形图块BCC1B1、CDD1C1、DAA1D1的面积(注:用公式(2)计算面积时,B1、B2分别取沿界址点编号方向的前一个、后一个界址点的大地纬度,ΔL为沿界址点编号方向的前一个、后一个界址点的大地经度的平均值与L0的差);
(5)多边形ABCD的面积就等于4个梯形图块(ABB1A1、BCC1B1、CDD1C1、DAA1D1)面积的代数和。
图1 椭球面上任意多边形计算面积
则任意多边形ABCD的面积P为:
P=ABCD= BCC1B1+ CDD1C1+ DAA1D1- ABB1A1
2、计算要求
① 利用图形坐标点将高斯坐标系下的几何图形反算投影到大地坐标系,进行投影变换。
② 任意指定一条经线L0,从选定多边形几何形状的起始点开始,沿顺时针方向依次计算相邻两点构成的线段,以及两点到指定经线的平行线构成的梯形面积。将该梯形沿纬度变化方向(Y轴)进行切割,至少需切割为2个部分。
③ 计算过程中应顺同一方向依坐标点逐个计算相邻两点连线与任意经线构成的梯形面积,坐标点不得有遗漏。若多边形包含内多边形(洞),则该多边形面积为外多边形面积减去所有内多边形面积之和。
④ 计算所有梯形面积的代数和即为该多边形的面积。
七、算法伪代码描述
为了确保编程使用的参数、算法一致,保证不同软件计算的椭球面积一致,我们用算法伪代码描述的方法对编程进行统一,在利用计算机编制椭球面积计算软件时,计算参数与计算顺序应严格按照以下代码执行。
1、参数说明
双精度类型:
圆周率值:PI = 3.14159265358979
中央经线:CenterL
RHO = 206264.8062471
A:ParamA
B:ParamB
C:ParamC
D:ParamD
E:ParamE
Const ZERO As Double = 0.000000000001
80椭球常数
椭球长半轴:aRadius = 6378140
椭球短半轴:bRadius = 6356755.29
椭球扁率:ParaAF = 1/ 298.257
椭球第一偏心率:ParaE1 = 6.69438499958795E-03
椭球第二偏心率:ParaE2 = 6.73950181947292E-03
极点子午圈曲率半径:ParaC = 6399596.65198801
k0:Parak0 = 1.57048687472752E-07
k1:Parak1 = 5.05250559291393E-03
k2:Parak2 = 2.98473350966158E-05
k3:Parak3 = 2.41627215981336E-07
k4:Parak4 = 2.22241909461273E-09
2、算法描述
初始化参数
Double e;
Double a;
e = ParaE2;
ParaC = aRadius / (1 - ParaAF);
ParamA = 1 + (3 / 6) * e + (30 / 80) * Power(e, 2) + (35 / 112) * Power(e, 3) + (630 / 2304) * Power(e, 4);
ParamB = (1 / 6) * e + (15 / 80) * Power(e, 2) + (21 / 112) * Power(e, 3) + (420 / 2304) * Power(e, 4);
ParamC = (3 / 80) * Power(e, 2) + (7 / 112) * Power(e, 3) + (180 / 2304) * Power(e, 4);
ParamD = (1 / 112) * Power(e, 3) + (45 / 2304) * Power(e, 4);
ParamE = (5 / 2304) * Power(e, 4);
参数初始化结束
中央经线转换为弧度
CenterL = TransDegreeToArc(CenterL)
选定本初子午线为参考经线
StandardLat = 0
For 起始点 To 倒数第二点
由高斯坐标反解计算经纬度值
ComputeXYGeo (PntColl.Point(i).y, PntColl.Point(i).x, B, L, CenterL)
ComputeXYGeo (PntColl.Point(i + 1).y, PntColl.Point(i + 1).x, B1, L1, CenterL)
将经纬度转换为弧度值
B = B / RHO
L = L / RHO
B1 = B1 / RHO
L1 = L1 / RHO
计算梯形面积
Double AreaVal;//梯形面积值
Double lDiference ;//经差
Double bDiference; //纬差
Double bSum;//纬度和
Double ItemValue(5);//计算变量
bDiference = (B1 - B0);
bSum = (B1 + B0) / 2;
lDiference = (L1 + L) / 2;
ItemValue(0) = ParamA * Sin(bDiference / 2) * Cos(bSum);
ItemValue(1) = ParamB * Sin(3 * bDiference / 2) * Cos(3 * bSum);
ItemValue(2) = ParamC * Sin(5 * bDiference / 2) * Cos(5 * bSum);
ItemValue(3) = ParamD * Sin(7 * bDiference / 2) * Cos(7 * bSum);
ItemValue(4) = ParamE * Sin(9 * bDiference / 2) * Cos(9 * bSum);
AreaVal = 2 * bRadius * lDiference * bRadius * (ItemValue(0) - ItemValue(1) + ItemValue(2) - ItemValue(3) + ItemValue(4));
areaSum = areaSum + AreaVal;
Next
End Sub
3、高斯坐标反解算法
Public Sub ComputeXYGeo(x As Double, y As Double, B As Double, L As Double, center As Double)
Dim y1 As Double
Dim bf As Double
y1 = y - 500000
Dim e As Double
e = Parak0 * x
Dim se As Double
se = Sin(e)
bf = e + Cos(e) * (Parak1 * se - Parak2 * Power(se, 3) + Parak3 * Power(se, 5) - Parak4 * Power(se, 7))
Dim v As Double
Dim t As Double
Dim N As Double
Dim nl As Double
Dim vt As Double
Dim yn As Double
Dim t2 As Double
Dim g As Double
g = 1
t = Tan(bf)
nl = ParaE1 * Power(Cos(bf), 2)
v = Sqr(1 + nl)
N = ParaC / v
yn = y1 / N
vt = Power(v, 2) * t
t2 = Power(t, 2)
B = bf - vt * Power(yn, 2) / 2 + (5 + 3 * t2 + nl - 9 * nl * t2) * vt * Power(yn, 4) / 24 - (61 + 90 * t2 + 45 * Power(t2, 2)) * vt * Power(yn, 6) / 720
B = TransArcToDegree(B)
Dim cbf As Double
cbf = 1 / Cos(bf)
L = cbf * yn - (1 + 2 * t2 + nl) * cbf * Power(yn, 3) / 6 + (5 + 28 * t2 + 24 * Power(t2, 2) + 6 * nl + 8 * nl * t2) * cbf * Power(yn, 5) / 120 + center
L = TransArcToDegree(L)
End Sub
弧度转换为度
Public Function TransArcToDegree(arc As Double) As Double
Dim degree As Double
Dim min As Double
Dim sec As Double
Dim ret As Double
Dim tmp As Double
ret = arc * 180 / PI
degree = FormatValue(ret, 100, 100)
tmp = (ret - degree) * 60
min = FormatValue(tmp, 100, 100)
sec = (tmp - min) * 60
//秒保留到小数点后6位,四舍五入
sec = Format(sec, "####.000000") 'FormatValue(sec, 10000000, 100)
TransArcToDegree = degree * 3600 + min * 60 + sec
End Function
Private Function FormatValue(inputVal As Double, precsion As Long, scaleNum As Long) As Double
FormatValue = (Int(inputVal * precsion) - Int(inputVal * precsion) Mod scaleNum) / precsion
End Function
分享到:
相关推荐
该matlab代码基于武汉大学出版社出版的《大地测量学基础》,为高斯正算程序,代码中详细标注了公式在课本中的位置,以及计算注意事项,可用于多种椭球的大地坐标转换成高斯平面坐标。
高斯平面坐标换算为大地坐标公式.doc 图幅理论面积计算公式 椭球面上任意梯形面积计算公式 高斯投影反解变换模型 任意图斑椭球面积计算方法
一个经纬度&高程和高斯平面坐标或空间直角坐标的相互转换工具,含DLL,支持北京54、西安80、CGCS2000、WGS84 的3度带/6度带转换,精度达到毫秒级,简单易用。 使用说明:在左侧经纬度栏输入经纬度坐标,格式为 度:...
包含有两部分:①高斯平面坐标xy转为大地坐标BL,②大地坐标BL转为高斯平面坐标xy。 用C++语言编写,能够读取txt坐标文件,并将结果导出到新的txt文件。包含算例。 公式参考《张华海.应用大地测量学(第4版).中国矿业...
坐标转换源代码,包含空间直角坐标系互转、大地坐标系与空间直角坐标系互转、平面直角坐标系与大地坐标系互转的源程序;部分源代码来源于网络,涉及了C++、C#两种语言;本人亲测可用并全部通过C#实现出来,精度可...
完成从大地直角坐标到高斯平面坐标的相互转换。参考椭球参数为,a=6378137,f=alpha=298.2572235635,条带数beltWidth =6, assumedCoord=true。大地直角坐标,是符合WGS84标准的BL坐标,GPS坐标就是BL坐标的一种,以...
程序包含两个函数,其中[Gaussian_X,Gaussian_Y]=convert84BLToGauss(longitude,latitude) 函数将经纬度转为o-xy坐标;[longitude,latitude]=convert84GaussToBL(X,Y) 函数将o-xy坐标转为经纬度;选用的6度带宽。
利用c#编写的一个window窗体应用,可以实现大地坐标与空间直角坐标相互转换,转换结果利用https://blog.csdn.net/starmings/article/details/123034189的程序进行验证,结果一致。转换公式教材和csdn上都有,但是...
大地坐标到高斯平面的正反算法的程序,对于GPS坐标的转化非常有用,希望对大家有用。
大地坐标系与空间直角坐标系互转,高斯投影,用C#语言已经测试过了,全部都可以通过!
即二维平面坐标(x,y,h)形式 在工程测量和施工中,我国普遍使用的是1954北京或1980西安的高斯投影平面直角坐标系。 但为满足工程施工精度要求,通常会在测区建立独立的地方坐标系,且独立地方坐标系都能够通过...
用于控制测量中的坐标转换(高斯投影及UTM正反算、大地坐标与空间直角坐标相互变换、不同平面直角坐标系之间的坐标转换、不同大地坐标系之间的坐标转换)和转换参数答解(不同平面直角坐标系之间转换参数答解、不同...
自己做的GPS坐标系统转换程序,支持大地坐标,空间直角坐标,平面投影坐标(包括高斯投影,UTM投影等)的相互转换,并支持世界上绝大多数的参考椭球,支持中英文两种界面,对相关专业有极大的参考价值。email:...
坐标转换支持空间直角坐标、大地坐标、高斯投影平面之间互转,支持七参数、四参数转换,椭球参数支持WGS84/CGCS2000.很好用
基于椭球平移法的高斯平面坐标转换;测绘、GIS、大地测量。
用于控制测量中的坐标转换(高斯投影及UTM正反算、大地坐标与空间直角坐标相互变换、不同平面直角坐标系之间的坐标转换、不同大地坐标系之间的坐标转换)和转换参数答解(不同平面直角坐标系之间转换参数答解、不同...
Gps坐标系转换Java工具类WGS坐标与Google和百度坐标互转,偏差很小,与百度Api调用转换几乎相差无几,程序为Java程序,工具类直接传经纬度调用相应转换方法即可获取转换后的返回值
该程序采用的是VS2017的C#语言,包含了大地坐标、空间直角坐标和高斯平面+xyh坐标三者之间的转换,对于学习C#编程的以及大地测量学的学生有较高价值的借鉴价值。
高斯计算 大地坐标和平面直角坐标之间互相转换
经纬大地坐标(B、L、H)与平面直角坐标(x、y、h)之间的相互换算,即高斯投影坐标的正反算;高斯投影坐标的换带计算;已知国家坐标到独立坐标系的换算。批处理功能可以实现上述单点换算的所有功能。另外菜单中的...