电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

高斯投影正反算编程

高斯投影正反算编程_第1页
1/11
高斯投影正反算编程_第2页
2/11
高斯投影正反算编程_第3页
3/11
高斯投影正反算编程一.高斯投影正反算基本公式(1)高斯正算基本公式(2)高斯反算基本公式 以上主要通过大地测量学基础课程得到,这不进行详细的推导,只是列出基本公式指导编程的进行。二.编程的基本方法和流程图(1)编程的基本方法高斯投影正反算基本上运用了所有的编程基本语句,本文中是利用 C++语言进行基本的设计。高斯正算中对椭球参数和带宽的选择主要运用了选择语句。而高斯反算中除了选择语句的应用,在利用迭代算法求底点纬度还应用了循环语句。编程中还应特别注意相关的度分秒和弧度之间的相互转换,这是极其重要的。(2)相关流程图1)正算 输入大地坐标 B ,L和经差 L0选择带宽3/6 度带计算带号计算弧长计算平面坐标 x,y打印 x,y计算带号计算弧长计算平面坐标 x,y打印 x,y开始选择椭球参数3 度带6 度带2)反算 开始输入自然值坐标 x,y和经差 L0利用迭代算法求解底点纬度利用公式计算 B和 L打印 B 和 L选择椭球参数三.编程的相关代码(1)正算# include "stdio.h"# include "stdlib.h"# include "math.h"# include "assert.h"#define pi (4*atan(1.0))int i;struct jin{ double B; double L;double L0;};struct jin g[100]; main(int argc, double *argv[]){FILE *r=fopen("a.txt","r"); assert(r!=NULL);FILE *w=fopen("b.txt","w"); assert(r!=NULL);int i=0;while(fscanf(r,"%lf %lf %lf",&g[i].B,&g[i].L,&g[i].L0)!=EOF){ double a,b; int zuobiao; printf("\n 请 输 入 坐 标 系 : 北 京 54=1 , 西 安80=2,WGS84=3:"); scanf("%d",&zuobiao); getchar(); if(zuobiao==1) {a=6378245; b=6356863.0187730473; } if(zuobiao==2) { a=6378140; b=6356755.2881575287; } if(zuobiao==3) { a=6378137; b=6356752.3142; } //选择坐标系// double f=(a-b)/a; double e,e2; e=sqrt(2*f-f*f); e2=sqrt((a/b)*(a/b)-1);//求椭球的第一,第二曲率// double m0,m2,m4,m6,m8; double a0,a2,a4,a6,a8; m0=a*(1-e*e); m2=3*e*e*m0/2; m4=5*e*e*m2/4; m6=7*e*e*m4/6; m8=9*e*e*m6/8; a0=m0+m2/2+3*m4/8+5*m6/16+35*m8/128; a2=m2/2+m4/2+15*m6/32+7*m8/16; a4=m4/8+3*m6/16+7*m8/32; a6=m6/32+m8/16; a8=m8/128; double Bmiao,Lmiao, L0miao; Bmiao=(int)(g[i].B)*3600.0+(int)((g[i].B-(int)(g[i].B))*100.0)*60.0+(g...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

高斯投影正反算编程

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部