3986.net
小网站 大容量 大智慧
赞助商链接
当前位置:首页 >> 天文/地理 >>

空间直角坐标系与大地坐标系转换程序


空间直角坐标系与大地坐标系转换程序 #include<iostream> #include<cmath> #include<iomanip> using namespace std; #define PI (2.0*asin(1.0)) void main() { double a,b,c,d1,d2,f1,f2,m1,m2,B,L,H,X,Y,Z,W,N,e; //cout<<"请分别输入椭球的长半轴、短半轴(国际单位)"<<endl; //cin>>a>>b; a=6378137; //以 WGS84 为例 b=6356752.3142; e=sqrt(a*a-b*b)/a; c=a*a/b; int x; cout<<"请输入 0 或 1,0:大地坐标系到空间直角坐标系;1:空间直角坐标系到大地坐 标系"<<endl; cin>>x; switch(x) { case 0: { cout<<"请分别输入该点大地纬度、经度、大地高(国际单位,纬度经度请按度分秒,分 别输入)"<<endl; cin>>d1>>f1>>m1>>d2>>f2>>m2>>H; B=PI*(d1+f1/60+m1/3600)/180; L=PI*(d2+f2/60+m2/3600)/180; W=sqrt(1-e*e*sin(B)*sin(B)); N=a/W; X=(N+H)*cos(B)*cos(L); Y=(N+H)*cos(B)*sin(L); Z=(N*(1-e*e)+H)*sin(B); cout<<" 空 间 直 角 坐 标 系 中 X,Y,Z , 坐 标 值 ( 国 际 单 位 ) 分 别 为 "<<fixed<<setprecision(6)<<X<<""<<fixed<<setprecision(6)<<Y<<""<<fixed<<setprecision(6)<<Z<< endl;break; } case 1: { cout<<"请分别输入空间直角坐标系中 X,Y,Z 的值(国际单位)"<<endl; cin>>X>>Y>>Z; double t,m,n, P,k,B0; m=Z/sqrt(X*X+Y*Y); //t0 B0=atan(m); //初值 n=Z/sqrt(X*X+Y*Y);

P=c*e*e/sqrt(X*X+Y*Y); k=1+(a*a-b*b)/(b*b); t=m+P*n/sqrt(k+n*n); //现在为 t1,之后代替 t2,t3... B=atan(t); W=sqrt(1-e*e*sin(B)*sin(B)); N=a/W; H=Z/sin(B) - N*(1-e*e); int i; for(i=1;fabs(B-B0)>10E-10;i++)//每一次新的 B 与上一次计算的 B 比较,误差小于 10E-10 rad {B0=B; n=t; t=m+P*n/sqrt(k+n*n);//迭代 B=atan(t); } W=sqrt(1-e*e*sin(B)*sin(B)); N=a/W; //if((X<0)&(Y>0)) //L=atan(Y/X)+PI; //if((X<0)&(Y<0)) // L=atan(Y/X)+PI; // if((X>0)&(Y<0)) //L=2*PI-atan(Y/X); L=atan2(Y,X); H=sqrt(X*X+Y*Y)/cos(B)-N; int Bd,Bf,Ld,Lf; double Bm,Lm; B=180*B/PI;//B 转化为度做单位 Bd=B; Bf=(B-Bd)*60; Bm=((B-Bd)*60-Bf)*60; L=180*L/PI;//L 转化为度做单位 Ld=L; Lf=(L-Ld)*60; Lm=((L-Ld)*60-Lf)*60; cout<<" 大 地 坐 标 系 中 纬 度 , 经 度 , 大 地 高 ( 国 际 单 位 ) 分 别 为 "<<Bd<<""<<Bf<<""<<fixed<<setprecision(6)<<Bm<<endl<<Ld<<""<<Lf<<""<<fixed<<setprecision( 6)<<Lm<<endl<<fixed<<setprecision(6)<<H<<endl; break; } } }

运行结果



推荐相关:

大地坐标与直角空间坐标转换计算公式

大地坐标与直角空间坐标转换计算公式一、参心大地坐标与参心空间直角坐标转换 1 名词解释: A:参心空间直角坐标系: a) b) c) d) e) 以参心 0 为坐标原点...


大地坐标系和空间直角坐标系转换

大地坐标系和空间直角坐标系转换 - #include<math.h> #include<string.h> #include<iostream.h> #include<fstream.h> #d...


空间直角坐标转换大地坐标的直接解法新探

空间直角坐标转换大地坐标的直接解法新探_计算机软件及应用_IT/计算机_专业资料。空间直角坐标转换大地坐标的直接解法新探1 空间直角坐标转换大地坐标的直接解法新探1...


基于matlab的大地坐标与直角坐标间的转换

测量程序设计 实验报告实验名称:大地坐标与空间直角坐标换算 实验四 大地坐标与空间直角坐标换算一、实验目的 编写大地坐标与空间直角坐标相互转换程序, 并对...


已知经纬度转换为空间直角大地坐标系下坐标

已知经纬度转换空间直角大地坐标系坐标_工学_高等教育_教育专区。已知经纬度转换空间直角大地坐标系坐标 X ? ( N ? H ) cos B cos L Y ? ( N ...


空间直角坐标系、大地坐标系、平面坐标系、高斯平面直...

空间直角坐标系大地坐标系、平面坐标系、高斯平面直角坐标系_天文/地理_自然...在使用原“1956 年黄海高程系”的高程成果时,应注意将其换算 为新的高程基准...


空间大地坐标系与平面直角坐标系转换公式

空间 大地坐标系可用图 2-4 来表示: 图 2-4 空间大地坐标系 三、平面直角坐标系平面直角坐标系是利用投影变换, 将空间坐标空间直角坐标或空间大地坐标通过某种...


大地、地心空间直角和球面三种坐标的转换

以地球质心(总椭球的几何中心)为原点的大地坐标系。通常 分为 地心空间直角坐标系 (以 x,y,z 为其坐标元素)和 地心大地 坐标系 (以 B,L,H 为其坐标元素...


...程序设计结业考核报告大地坐标和大地空间直角坐标的...

二、原理和过程本程序数以大地坐标和大地空间直角坐标的相互换为内容展开的, 其中包括了大地 坐标系转化为大地空间直角坐标系, 大地空间直角坐标系转化为大地坐标系...


大地坐标与平面坐标之间的区别与转换

大地坐标系与平面 直角坐标系之间的转换是先将大地坐标转换空间直角坐标, 最后再转换到平面 直角坐标,可以参考下图。 对于第一种情况,只需要投影参数即可转换,...

网站首页 | 网站地图
3986 3986.net
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com