大地主题解算程序设计报告

合集下载

大地测量学白塞尔大地主题解算实习报告(模板)1

大地测量学白塞尔大地主题解算实习报告(模板)1

大地测量上机实习报告
一、实习时间:第9周星期三
二、实习地点:系办三楼机房
三、实习内容:白塞尔大地主题解算
四、实习目的:(1)尝试编写白塞尔主题解算的程序
(2)通过实例检验解算的结果
五、实习步骤:
1、先了解书本上关于白塞尔大地主题解算的步骤;
2、双击打开白塞尔大地主题解算的程序,如下:
3、在“选择椭球”中选择“克氏椭球”,“选择正反算”中选择“正算”;
4、然后在输入框中输入相应的数据,如下:
5、接下来单击菜单栏中的“数据正确”,记得正算结果,如下所示:
6、重复第3步,选择反算,并输入相应数据:
7、点击“数据正确”,即得反算结果:
六、实习总结:通过白塞尔大地主题结算方法的上机操作,懂得了白塞尔法结算大地主题是将椭球面上的大地元素按照白塞尔投影条件投影到辅助球面上,继而在球面上进行大地主题解算,再将球面上的计算结果换算到椭球面上的原理,并熟悉白塞尔大地主题解算的程序。

84坐标系大地主题解算

84坐标系大地主题解算

84坐标系大地主题解算84坐标系大地主题解算是地理信息系统中常见的一种坐标系解算方法,用于将地球表面上的点的经纬度坐标转换为平面坐标,以便进行地图绘制、测量和定位等工作。

本文将介绍84坐标系大地主题解算的基本原理、步骤和应用。

首先,84坐标系是一种地理坐标系,也称为WGS84坐标系,是全球定位系统(GPS)所采用的坐标系。

它使用经度和纬度来标识地球上的点,其中经度表示点位于东西方向上的位置,纬度表示点位于南北方向上的位置。

大地主题解算是将经纬度坐标转换为平面坐标的过程,需要考虑地球的椭球形状和地球表面的曲率。

大地主题解算的基本原理是根据地球的椭球形状和曲率,利用数学公式将经纬度坐标转换为平面坐标。

这个过程涉及到椭球的参数、大地主题的计算和坐标转换公式的推导。

其中,椭球的参数包括椭球的长半轴、短半轴和扁率,大地主题的计算包括椭球面上两点之间的距离、方位角和高度差等,坐标转换公式包括正算和反算两种。

大地主题解算的步骤主要包括坐标系的选择、坐标的输入、大地主题的计算和坐标的输出。

在选择坐标系时,需要确定使用的地理坐标系和投影坐标系,以便进行坐标的转换。

在输入坐标时,需要输入待转换的经纬度坐标,计算大地主题时,需要根据输入的坐标和椭球参数计算出相应的平面坐标。

最后,在输出坐标时,需要将计算得到的平面坐标转换为地理坐标,以便进行地图绘制和定位等应用。

大地主题解算在地理信息系统中具有广泛的应用,包括地图绘制、地理定位、导航引导、地质勘探和地球物理勘测等领域。

通过大地主题解算,可以实现地球表面点的精确定位和坐标转换,为地球科学研究和地理信息服务提供了重要的技术支持。

综上所述,84坐标系大地主题解算是地理信息系统中的重要技术,它通过将地球的经纬度坐标转换为平面坐标,实现地球表面点的精确定位和坐标转换。

大地主题解算的基本原理、步骤和应用对于地理信息系统的研究和应用具有重要意义,有助于提高地图绘制和地理定位的精度和效率。

高斯大地主题解算大地测量程序

高斯大地主题解算大地测量程序
double oL=L2-L1;
double Wm=sqrt(1-(e2)*sin(Bm)*sin(Bm));
double Vm=sqrt(1-(ee2)*cos(Bm)*cos(Bm));
double Mm=a*(1-e2)/(Wm*Wm*Wm);
double Nm=a/Wm;
double V=oB*Nm/(Vm*Vm)+oB*oL*oL*Nm/(24*Vm*Vm)*cos(Bm)*cos(Bm)*(2+3*tm*tm+2*nm*nm)+oB*oB*oB*Nm/(8*Vm*Vm*Vm*Vm*Vm*Vm)*(nm*nm-tm*tm*nm*nm);
double oAm=tm*cos(Bm)*oL+oB*oB*oL*1/(24*Vm*Vm*Vm*Vm)*cos(Bm)*tm*(2+7*nm*nm+9*tm*tm*nm*nm+5*nm*nm*nm*nm)+oL*oL*oL*1/24*cos(Bm)*cos(Bm)*cos(Bm)*tm*(2+tm*tm+2*nm*nm);
{
double HUDU;
if(du>0)
{
HUDU=(miao/60.0+fen)/60.0+du;
}
else
{
HUDU=-((miao/60.0+fen)/60.0+abs(du));
}//绝对值是防止输入的是负值角度
return HUDU;
}
Bm=B1+0.5*oB;
Am=A1+0.5*oA;
i++;
}while(i<4);//迭代计算3次

大地主题的数值解法

大地主题的数值解法

大地主题的数值解法范业明1,王解先1,2,刘慧芹1(1 同济大学测量与国土信息工程系,上海 200092;2 现代工程测量国家测绘局重点实验室,上海 200092)摘要:本文基于椭球面上大地线的微分方程,将法截弧方位角与大地线方位角之间的关系作为初始条件,通过用数值方法求解大地线的微分方程,进行大地主题的正反解。

并以实际数据验证了其正确性与可行性。

本法均采用封闭公式计算,精度高,公式简单,特别适用于计算机解算。

关键词:大地线;微分方程;数值解法中图分类号:P226+1文献标识码:BAbstract :Based on differential equation of geodesic on the surface of ellipsoid,the problem of direct and inverse solution of geodetic is solved through numerical method.The relationship of normal arc and geodesic is deduced and introduced as the initial condition for the differential equation.Numerical experiments are given,and the validity and feasibility of the method proposed in this paper have been proved.Besides,all the formulas are close,simple and easy to be realized by computer.Key words :geodesic;differential equation;numerical method 收稿日期:2006 02 15;修订日期:2006 05 10作者简介:范业明(1982-),男(汉族),辽宁沈阳人,硕士研究生.0 引言一直以来由于计算工具的限制,大地主题解算一般都采用级数展开形式,如短距离的高斯平均引数法,长距离的贝塞尔-赫尔默特方法等等。

Bessel大地主题解算程序

Bessel大地主题解算程序

// 计 算 终 点 大 地 坐 标 及 方 位 角
B2,L2,A2
sinu2=sinu1*cos(sigma)+cosu1*cos(A1)*sin(sigma);
B2=atan(sinu2/sqrt((1-e2)*(1-sinu2*sinu2)));
//计算 B2
lambda=atan(sin(A1)*sin(sigma)/(cosu1*cos(sigma)-sinu1*sin(sigma)*cos(A1))); //求 λ
大地主题解算的意义bessel函数bessel卫星坐标解算程序基线解算besseljmatlabbesselgps基线解算原理gps基线解算南方gps解算软件
#include<stdio.h> #include<math.h> #include<stdlib.h>
double trans1() { double B1,B11,B12,B13,B111;
//计算归化纬度
double sinA0,cotsigma1,sin2sigma1,cos2sigma1; //计算辅助三角函数值 sinA0=cosu1*sin(A1); cotsigma1=cosu1*cos(A1)/sinu1; sin2sigma1=2*cotsigma1/(1+cotsigma1*cotsigma1); cos2sigma1=(cotsigma1*cotsigma1-1)/(cotsigma1*cotsigma1+1);
//计算 A,B,C 以及 α,β 的值 //P144(4-265)
//P146(4-284)
(好像有问
double sigma0,sin2sigma1sigma0,cos2sigma1sigma0,sigma; //计算球面长度 σ sigma0=(S-(B+C*cos2sigma1)*sin2sigma1)/A; sin2sigma1sigma0=sin2sigma1*cos(2*sigma0)+cos2sigma1*sin(2*sigma0); cos2sigma1sigma0=cos2sigma1*cos(2*sigma0)-sin2sigma1*sin(2*sigma0); sigma=sigma0+(B+5*C*cos2sigma1sigma0)*sin2sigma1sigma0/A;

大地主题解算

大地主题解算

deltaL = s * Math.Sin(Am) * (1 + s * s * (Math.Sin(Am) * Math.Sin(Am) *
tm * tm - Math.Cos(Am) * Math.Cos(Am) * (1 + gm * gm - 9 * tm * tm * gm * gm)) / (24 * Nm * Nm))
+ 7 * gm * gm + 9 * tm * tm * gm * gm + 5 * Math.Pow(gm, 4)) + Math.Sin(Am) * Math.Sin(Am) * (2
+ tm * tm + 2 * gm * gm)) / (24 * Nm * Nm)) / Nm;
Vm = Math.Sqrt(1 + e12 * Math.Pow(Math.Cos(Bm), 2));
deltaB = Vm * Vm * s * Math.Cos(Am) * (1 + s * s * (Math.Sin(Am) * Math.Sin(Am)
deltaB = B0 = s * Math.Cos(A1) / M;
deltaL = L0 = s * Math.Sin(A1) / (Math.Cos(B1) * N);
deltaA = A0 = L0 * Math.Sin(B1);
B2 = B1 + deltaB;
L2 = L1 + deltaL;
A2 = A1 + deltaA+Math .PI ;
Console.WriteLine("计算结果:");
deltaA = A0 = L0 * Math.Sin(B1);

程序设计样例

程序设计样例

1
sin
)
第 7 页 /共 29 页
大地测量课程设计
sin A1符号
-
sin A2符号
+
A2 =
|A2|
-
180|A2|
+ +
180 | A2 |
+ -
360 | A2|
其中,|| 、|A2|是第一象限角。若A2 0, A2 A2 360;若A2 360, A2 A2 360
5.3 程序界面
计算差值小于规定限差,停止迭代。 Step4: 计算经差改正数
L
sin( ) cos(21 ) sin(2 ) cos(41 2 )sin A0
Step5: 计算终点大地坐标及坐标方位角
sin A1符号
tan 符号
sin 2 sin 1 cos cos 1 cos A1 sin
第 5 页 /共 29 页
大地测量课程设计
最终迭代到两次的δ值之差小于给定的允许值。
其中 A,B,C,及α、β、γ的计算如下:
cos2 A0 1 s in2 A0 , k 2 e'2 cos2 A0
A
(1
k2 4
7k 4 64
15k 6 256
)
/
b
B
k2 (
4
k4 8
37k 6 512
qp
cos b1
2 b2
sin cos
A1
arctan(
p) q
P 符号 q 符号
A1
+
+
-
+
-
-
|A1|
180°-|A1|
180°+|A1|

白塞尔大地主题解算

白塞尔大地主题解算
ﻩdoublea1,a2,b1,b2,p,q,x,y;
ﻩdoubleW1,W2,sinu1,sinu2,cosu1,cosu2,sinA0,cotsigma1,sin2sigma1,cos2sigma1,sigma0,sin2,cos2,sigma,sins,coss,delta0,delta,lamda;
ﻩC=(2.238*(1-sinA0*sinA0))*(1-sinA0*sinA0)+0.006;
ﻩafa=691.46768-(0.58143-0.00144*(1-sinA0*sinA0))*(1-sinA0*sinA0);
ﻩbeta=(0.2907-1.0E-3*(1-sinA0*sinA0))*(1-sinA0*sinA0);
ﻩB1=(B10+(float)B11/60+B12/3600)*pi/180;
L1=(L10+(float)L11/60+L12/3600)*pi/180;
ﻩﻩA1=(A10+(float)A11/60+A12/3600)*pi/180;
W1=sqrt(1-e*e*sin(B1)*sin(B1));//计算起点规划纬度
ﻩpi=4*atan(1);
printf("白塞尔大地主题正算请输入1\n白塞尔大地主题反算请输入2\n");
ﻩscanf("%d",&k);
if(k==1)
{
ﻩprintf("请输入大地线起点纬度B经度L,大地方位角A及大地线长度S:\n");
ﻩscanf("%d%d%lf%d%d%lf%d%d%lf%lf",&B10,&B11,&B12,&L10,&L11,&L12,&A10,&A11,&A12,&S);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
o=o0+(B+5*C*cos2o)*sin2o/A;
g=(r*o+t*(sin2o-sin2o1))*sinA0;
/*求B2*/
sinu2=sinu1*cos(o)+cosu1*cos(A1)*sin(o);
B2=atan(sinu2/(sqrt(1-e2)*sqrt(1-sinu2*sinu2)));
printf("大地线终点经度度分秒分别为:\n%d\n%d\n%lf\n",ex,ey,ez);
printf("终点大地方位角度分秒分别为:\n%d\n%d\n%lf\n",fx,fy,fz);
}
/*大地主题反算*/
else if(k==2)
{
double fx,fy,fz,gx,gy,gz,hx,hy,hz,ix,iy,iz,jz,kz,B1,B2,L1,L2,S,A1,A2;
大地主题结算实验报告
姓名:***
学号:********
测绘2班
一、实验目的:
1.提高运用计算机语言编程开发的能力;
2.加深对大地主题解算计算公式及辅助参数的理解并掌握计算步骤;
3.通过编程语言实现大地主题解算。
二、工具:
Windows XP Mode 环境下的Microsoft Visual C++ 6.0
scanf("%lf%lf%lf",&fx,&fy,&fz);
printf("请输入大地线起点经度度分秒\n");
scanf("%lf%lf%lf",&gx,&gy,&gz);
printf("请输入大地线终点纬度度分秒\n");
scanf("%lf%lf%lf",&hx,&hy,&hz);
printf("请输入大地线终点经度度分秒\n");
double hudu(double,double,double); /*度分秒转换为弧度*/
double du(double); /*弧度转换为度*/
double fen(double); /*弧度转换为分*/
double miao(double); /*弧度转换为秒*/
#define PI 3.1415926
ky=(int)(fen(A2));
kz=miao(A2);
printf("起点大地方位角度分秒分别为:\n%d\n%d\n%lf\n",jx,jy,jz);
printf("终点大地方位角度分秒分别为:\n%d\n%d\n%lf\n",kx,ky,kz);
printf("大地线长度为:%lf\n",S);
}
/*弧度转换为秒*/
double miao(double D0)
{
double _z1,_z2,z0;
_z1=(int)(D0*180/PI);
_z2=(int)((D0*180/PI-_z1)*60);
z0=(fabs)((double)(((D0*180/PI-_z1)*60-_z2)*60));
intdx,dy,ex,ey,fx,fy;
double e2,W1,sinu1,cosu1,sinA0,coto1,sin2o1,cos2o1,sin2o,cos2o,A,B,C,r,t,o0,o,g,sinu2,q;
/*输入度分秒数据*/
printf("请输入大地线起点纬度度分秒\n");
scanf("%lf%lf%lf",&ax,&ay,&az);
else if(sin(A1)<0 && tan(q)<0)
q=-fabs(q);
else
q=fabs(q)-PI;
L2=L1+q-g/3600/180*PI;
/*求A2*/
A2=atan(cosu1*sin(A1)/(cosu1*cos(o)*cos(A1)-sinu1*sin(o)));
/*判断A2*/
if(sin(A1)<0 && tan(A2)>0)
A2=fabs(A2);
else if(sin(A1)<0 && tan(A2)<0)
A2=PI-fabs(A2);
else if(sin(A1)>0 && tan(A2)>0)
A2=PI+fabs(A2);
else
A2=2*PI-fabs(A2);
else
o=PI-fabs(o);
sinA0=cosu1*sin(A1);
x=2*a1-(1-sinA0*sinA0)*coso;
t1=(33523299-(28189-70*(1-sinA0*sinA0))*(1-sinA0*sinA0))*1e-10;
t2=(28189-94*(1-sinA0*sinA0))*1e-10;
t=(0.2907-0.0010*(1-sinA0*sinA0))*(1-sinA0*sinA0);
o0=(S-(B+C*cos2o1)*sin2o1)/A;
sin2o=sin2o1*cos(2*o0)+cos2o1*sin(2*o0);
cos2o=cos2o1*cos(2*o0)-sin2o1*sin(2*o0);
B=(5354.469-8.978*(1-sinA0*sinA0))*(1-sinA0*sinA0);
C=(2.238*(1-sinA0*sinA0))*(1-sinA0*sinA0)+0.006;
r=691.46768-(0.58143-0.00144*(1-sinA0*sinA0))*(1-sinA0*sinA0);
return z0;
}
大地主题正算结果
大地主题反算结果
sinA0=cosu1*sin(A1);
coto1=cosu1*cos(A1)/sinu1;
sin2o1=2*coto1/(coto1*coto1+1);
cos2o1=(coto1*coto1-1)/(coto1*coto1+1);
A=6356863.020+(10718.949-13.474*(1-sinA0*sinA0))*(1-sinA0*sinA0);
scanf("%lf%lf%lf",&ix,&iy,&iz);
/*调用函数*/
B1=hudu(fx,fy,fz);
L1=hudu(gx,gy,gz);
B2=hudu(hx,hy,hz);
L2=hudu(ix,iy,iz);
/*白塞尔大地主题解算*/
e2=0.006693421622966;
W1=sqrt(1-e2*sin(B1)*sin(B1));
void main (void)
{
int k;
printf("请选择大地主题算法,若执行正算,请输入1;若执行反算,请输入2。\n");
scanf("%d",&k);
/*大地主题正算*/
if(k==1)
{
double ax,ay,az,bx,by,bz,cx,cy,cz,S,dz,ez,fz,B1,B2,L1,L2,A1,A2;
printf("请输入大地线起点经度度分秒\n");
scanf("%lf%lf%lf",&bx,&by,&bz);
printf("请输入大地方位角度分秒\n");
scanf("%lf%lf%lf",&cx,&cy,&cz);
printf("请输入大地线长度\n");
scanf("%lf",&S);
/*调用函数*/
三、注意事项:
1.计算所需变量多,容易混淆;
2.正反算函数的编写;
3.函数调用;
4.弧度与角度之间的转化。
四、实验要求:
1.提交报告,实验总结,编写代码;
2.独立编程,调试运行;
3.上交成果:编写思想,编写过程,问题分析,源代码,计算结果;
实验源代码:
#include<stdio.h>
#include<math.h>
else if(p<0 && q>0)
A2=PI-fabs(A2);
else if(p>0 && q>0)
A2=PI+fabs(A2);
else
A2=2*PI-fabs(A2);
/*调用函数*/
jx=(int)(du(A1));
jy=(int)(fen(A1));
jz=miao(A1);
kx=(int)(du(A2));
{
double x0;
x0=(int)(B0*180/PI);
return x0;
}
/*弧度转换为分*/
double fen(double C0)
{
double _y,y0;
_y=(int)(C0*180/PI);
y0=(fabs)((int)((C0*180/PI-_y)*60));
return y0;
A1=PI-fabs(A1);
else if(p<0 && q<0)
A1=PI+fabs(A1);
相关文档
最新文档