大地坐标系和空间直角坐标系转换 - 范文中心

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

06/21

#include

#include

#include

#include

#define MAX 100

#define PI 3.1415926

/////////////////////////////////// 结构体存放B,L,H

struct BLH

{char name1[20];

char name2[20];

double B;

char name3[20];

double L;

char name4[20];

double H;

};

/////////////////////////////// 结构体存放X,Y ,Z

struct XYZ

{char name1[20];

char name2[20];

double X;

char name3[20];

double Y;

char name4[20];

double Z;

};

///////////////////////////////// 文件输入B,L,H

double FILEIN(BLH &b,char *fname)

{

ifstream in(fname,ios::nocreate); // 建立文件流, 并与输入文件名建立关联

if(!in)

{

cout

cout

return 0;

}

in>>b.name1;

in>>b.name2;

in>>b.B;

in>>b.name3;

in>>b.L;

in>>b.name4;

in>>b.H;

in.close();

}

//////////////////////////////////////////////// 文件输入X,Y ,Z

double FILEIN1(XYZ &b,char *fname)

{

ifstream in(fname,ios::nocreate); // 建立文件流, 并与输入文件名建立关联 if(!in) { cout

cout

return 0;

}

in>>b.name1;

in>>b.name2;

in>>b.X;

in>>b.name3;

in>>b.Y;

in>>b.name4;

in>>b.Z;

in.close();

return 1;

}

////////////////////////////////////////////////////////

double d_h(double angle) //角度化弧度

{

double a,b;

angle=modf(angle,&a);

angle=modf(angle*100.0,&b);

return (a+b/60.0+angle/36.0)*(PI+3.0E-16)/180.0;

}

///////////////////////////////////////////////////////////

double h_d(double angle) //弧度化角度

{

double a,b,c;

angle=modf(angle*180.0/(PI-3.0E-16),&a);

angle=modf(angle*60.0,&b);

angle=modf(angle*60.0,&c);

return a+b*0.01+c*0.0001+angle*0.0001;

}

/////////////////////////////////////////// 键盘输入B,L,H

jianpan(BLH &a)

{cout

cin>>a.B;

cout

cout

cin>>a.H;

}

///////////////////////////////////////// 键盘输入X,Y ,Z

jianpan1(XYZ &a)

{

cout

cin>>a.X;

cout

cin>>a.Y;

cout

cin>>a.Z;

}

//////////////////////////////////////////////////////

标系

double B_X(BLH &a)

{double aa[MAX][MAX];

double a1,b1,N,E1,X,Y,Z;

int k,n,m;

char outfilename[20],fname[20];

cout

cout

cout

cin>>m;

if(m==1)

{cout

cin>>fname;

if(FILEIN(a,fname));

else

{if(jianpan(a));

else

{cout

return false;

}

}

}

else if(m==2)

jianpan(a);

else

{cout

return false;}

if(a.B90)

{cout

return false;}

if(a.L360)

{cout

return false;}

if(a.H

{cout

return false;}

aa[0][0]=6378245.0000000000; aa[0][1]=6356863.0187730473;

aa[1][0]=6378140.0000000000; aa[1][1]=6356755.2881575287;

aa[2][0]=6378137.0000000000; aa[2][1]=6356752.3142;

aa[3][0]=6378137.000; aa[3][1]=6356752.314;

cout

cout

cout

cout

cout

cin>>k;

if(k!=0&&k!=1&&k!=2&&k!=3)

{cout

return false;}

couta1=aa[k][0];

b1=aa[k][1];

E1=(a1*a1-b1*b1)/(a1*a1);

a.B=d_h(a.B);

a.L=d_h(a.L);

N=a1/sqrt(1-E1*sin(a.B)*sin(a.B));

X=(N+a.H)*cos(a.B)*cos(a.L);

Y=(N+a.H)*cos(a.B)*sin(a.L);

Z=(N*(1-E1)+a.H)*sin(a.B);

cout

cout

cout

cout

cout

cout

cout

cin>>n;

if(n==1)

{cout

cin>>outfilename;

ofstream out(outfilename); //选择椭球体 //屏幕输出结 //文件输出结

out.precision(10);

if(!out) cout

out

out

out

out

out

out

out

out.close();

}

else if(n==2);

else

{cout

return false;}

cout

}

////////////////////////////////////////////////////////

////////////////////////////////////////////////////////// 空间直角坐标系换算到

大地坐标系

double X_B(XYZ &a)

{double a1,b1,N,E1,B,L,H,B0,aa[MAX][MAX];

double tanB[MAX][1];

int i=0,n,k,m;

char outfilename[20],fname[20]; //选择数据输

入方式

cout

cout

cout

cin>>m;

if(m==1)

{cout

cin>>fname;

if(FILEIN1(a,fname));

else

{if(jianpan1(a));

else

{cout

return false;

}

}

}

else if(m==2)

jianpan1(a);

else

{cout

return false;}

aa[0][0]=6378245.0000000000; aa[0][1]=6356863.0187730473;

aa[1][0]=6378140.0000000000; aa[1][1]=6356755.2881575287;

aa[2][0]=6378137.0000000000; aa[2][1]=6356752.3142;

aa[3][0]=6378137.000; aa[3][1]=6356752.314;

cout

cout

cout

cout

cout

cin>>k;

if(k!=0&&k!=1&&k!=2&&k!=3)

{cout

return false;}

a1=aa[k][0];

b1=aa[k][1];

E1=(a1*a1-b1*b1)/(a1*a1);

L=atan(a.Y/a.X);

tanB[0][0]=a.Z*(1+E1)/sqrt(a.X*a.X+a.Y*a.Y);

do{B0=atan(tanB[i][0]);

tanB[i+1][0]=(1/sqrt(a.X*a.X+a.Y*a.Y)*(a.Z+a1*E1*tanB[i][0]/sqrt(1+(1-E1)*tanB[i][0]*tanB[i]

[0])));

B=atan(tanB[i+1][0]);

i++;

}while(B-B0>0.[**************]);

cout

N=a1/sqrt(1-E1*sin(B)*sin(B));

H=sqrt(a.X*a.X+a.Y*a.Y)/cos(B)-N;

B=h_d(B);

L=h_d(L);

if(a.X

L=180+L;

else if(a.X0)

L=180+L;

else if(a.X>0&&a.Y

L=360+L;

cout

出结果

cout

cout

cout

cout

cout

cout

cin>>n;

if(n==1)

{cout

cin>>outfilename;

ofstream out(outfilename);

out.precision(15);

if(!out) cout

out

out

out

out

out

out

out

out.close();}

else if(n==2);

else

{cout

return false;}

cout

}

/////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////

main()

{cout.precision(15);

int m;

BLH a;

XYZ b;

cout

cout

cout

cin>>m;

if(m==1)

B_X(a);

else if(m==2)

X_B(b);

else cout

}


相关内容

  • 高斯-克吕格投影和UTM投影
    高斯-克吕格投影和UTM投影 4.1 高斯-克吕格投影与UTM投影异同 高斯-克吕格(Gauss-Kruger)投影与UTM投影(Universal Transverse Mercator,通用横轴墨卡托投影)都是横轴墨卡托投影的变种,目前 ...
  • 第六章 地籍控制测量
    第六章 地籍控制测量 第一节 概 述 一.地籍控制测量的原则 二.地籍控制测量的精度 三.地籍控制点埋石的密度 四.地籍控制点之记和控制网略图 本章主要对地籍控制测量的原则.精度要求.采用的坐标系等进行说明,而对地籍控制测量的方法只作一般介 ...
  • 地籍测量补测的方法及精度分析
    第33卷第6期201012测绘与空间地理信息 GEOMATICS &SPATIAL INFORMATION TECHNOLOGY Vol.33,No.6Dec.,2010 地籍测量补测的方法及精度分析 1,21,3 董志海,何腾飞, ...
  • 卫星定位汽车行驶记录仪
    广 东 省 地 方 计 量 检 定 规 程 JJG(粤)013-2009 卫星定位汽车行驶记录仪 Satellite Positioning Vehicle Travelling Data Recorder 2009-07-27发布 200 ...
  • 登峰杯论文范文-肖安安
    登峰杯论文 班 级: 姓 名:学 号: 嵌入式客车导航系统 肖安安 (温州大学物理与电子信息工程学院,10电信) 摘要:进入21世纪,汽车工业己成为世界的支柱产业,汽车在日常生活和工作中起的作用也越来越突出.怎样更好的发展汽车工业,提高其品 ...
  • 地图投影变换
    投影变换方法与研究 测绘1003班 张凌源 .椭球体 GIS 中的坐标系定义由基准面和地图投影两组参数确定,而基准面的定义则由特定椭球体及其对应的转换参数确定. 基准面是利用特定椭球体对特定地区地球表面的逼近,因此每个国家或地区均有各自的基 ...
  • 空间几何体的直观图+教案+1
    1.2.2空间几何体的直观图 一.教学目标 1. 学生掌握斜二测画法画水平设置的平面图形的直观图后, 并会利用斜二测画 法画简单几何体的直观图. 2. 学生通过观察和类比,利用斜二测画法画出空间几何体的直观图. 2.由特殊到一般, 由具体到 ...
  • 20**年测绘案例分析+答案
    2011年度全国注册测绘师资格考试试卷 测绘案例分析 第一题(18分) 某市的基础控制网,因受城市建设,自然环境.认为活动等因素的影响,测量标志不断破坏,减少.为了博阿正基础控制网的功能,该市决定对基础控制网进行维护,主要工作内容包括控制点 ...
  • 施工控制网中央子午线及投影基准面的选择
    施工控制网中央子午线及投影基准面的选择 平面控制测量中,地面长度投影到参考椭球面以及将椭球面长度再投影到高斯平面均会引起长度变形.工程施工控制网作为各项工程建设施工放样测设数据的依据,为了保证施工放样的精度要求,要求由控制点坐标直接反算的边 ...
  • 1.20空间直角坐标系
    1.20空间直角坐标系 一.知识结构 空间直角坐标系 空间直角坐标系空间中点的坐标 空间两点间的距离公式 二.重难点 1.空间直角坐标系的概念及用空间坐标刻画点的位置 2.空间直角坐标系的建立及空间两点间的距离公式 知识点1空间直 ...