史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx

上传人:b****3 文档编号:6528753 上传时间:2023-05-06 格式:DOCX 页数:43 大小:26.71KB
下载 相关 举报
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第1页
第1页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第2页
第2页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第3页
第3页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第4页
第4页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第5页
第5页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第6页
第6页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第7页
第7页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第8页
第8页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第9页
第9页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第10页
第10页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第11页
第11页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第12页
第12页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第13页
第13页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第14页
第14页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第15页
第15页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第16页
第16页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第17页
第17页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第18页
第18页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第19页
第19页 / 共43页
史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx

《史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx(43页珍藏版)》请在冰点文库上搜索。

史上最全的高斯投影源代码集合精心收集9种Word文档下载推荐.docx

CEarthCEarthPlaneDialog:

PlaneToEarth(constCCoordinate&

coor,UINTSign)

doublex=coor.m_dX;

doubley=coor.m_dY;

doubleL0=(6.0*Sign-3.0)/180*PI;

doublesinB,cosB,t,t2,N,ng2,V,yN;

doublepreB0,B0;

doubleeta;

y-=500000;

B0=x/A1;

do

{

preB0=B0;

B0=B0*PI/180.0;

B0=(x-(A2*sin(2*B0)+A3*sin(4*B0)+A4*sin(6*B0)))/A1;

eta=fabs(B0-preB0);

}while(eta>

0.0000000000000001);

sinB=sin(B0);

cosB=cos(B0);

t=tan(B0);

V=sqrt(1+ng2);

yN=y/N;

doubleB=B0-(yN*yN-(5+3*t2+ng2-9*ng2*t2)*yN*yN*yN*yN/12.0+(61+90*t2+45*t2*t2)*yN*yN*yN*yN*yN*yN/360.0)*V*V*t/2;

doubleL=L0+(yN-(1+2*t2+ng2)*yN*yN*yN/6.0+(5+28*t2+24*t2*t2+6*ng2+8*ng2*t2)*yN*yN*yN*yN*yN/120.0)/cosB;

CEarthearth(B,L,0,'

r'

);

returnearth;

//将平面直角坐标系转换为大地坐标系

voidCEarthPlaneDialog:

OnRADIOPlane1954()

//TODO:

Addyourcontrolnotificationhandlercodehere

a=6378245;

f=298.3;

e2=1-((f-1)/f)*((f-1)/f);

e12=(f/(f-1))*(f/(f-1))-1;

A1=111134.8611;

A2=-16036.4803;

A3=16.8281;

A4=-0.0220;

m_iReferenceFrame=0;

OnRADIOPlane1980()

a=6378140;

f=298.257;

A1=111133.0047;

A2=-16038.5282;

A3=16.8326;

m_iReferenceFrame=1;

OnRADIOPlaneWGS84()

a=6378137;

f=298.257223563;

m_iReferenceFrame=2;

doubleCEarthPlaneDialog:

SetL0(doubleL)

L=L/PI*180;

if(L>

0)

for(m_iCincture=1;

!

((L>

=(6*m_iCincture-6))&

(L<

(6*m_iCincture)));

m_iCincture++)

{}

L0=6*m_iCincture-3;

}

elseif(L<

L=-L;

(6*m_iCincture-6))&

=(6*m_iCincture)));

m_iCincture=61-m_iCincture;

L0=m_iCincture*6-363;

else

L0=3;

m_iCincture=1;

doubletemp=((double)L0)/180*PI;

returntemp;

SetRad_PIPI(doubleRad)

if(Rad>

0)

doublei=floor(Rad/PI/2);

Rad-=2*PI*i;

if(Rad<

Rad=-Rad;

Rad=-Rad+PI*2;

PI)

Rad-=2*PI;

returnRad;

 

高斯投影C++源码2

//GaussBL2xy.cpp:

Definestheentrypointfortheconsoleapplication.

//

#include"

stdafx.h"

math.h"

CoorTrans.h"

#include<

iostream>

usingnamespacestd;

voidmain(intargc,char*argv[])

{

doubleMyL0=108;

//中央子午线

doubleMyB=33.44556666;

//33du44fen55.6666miao

doubleMyL=109.22334444;

//3度带,109d22m33.4444s

PrjPoint_KrasovskyMyPrj;

MyPrj.SetL0(MyL0);

MyPrj.SetBL(MyB,MyL);

doubleOutMyX;

//结果应该大致是:

3736714.783,627497.303

doubleOutMyY;

OutMyX=MyPrj.x;

//正算结果:

北坐标x

OutMyY=MyPrj.y;

//结果:

东坐标y

//////////////////反算////////////////////////////////////////

doubleInputMyX=3736714.783;

//如果是独立计算,应该给出中央子午线L0

doubleInputMyY=627497.303;

MyPrj.Setxy(InputMyX,InputMyY);

MyPrj.GetBL(&

MyPrj.B,&

MyPrj.L);

//把计算出的BL的弧度值换算为dms形式

doubleOutputMyB;

doubleOutputMyL;

OutputMyB=MyPrj.B;

//反算结果:

B

OutputMyL=MyPrj.L;

L

//分析表明,此程序的结果和Coord4.2的转换结果是一样的,只差到毫米级

//原程序有几个问题,1.Pi的值不对。

2.SetBL中多了两行错误代码

}

doubleDms2Rad(doubleDms)

doubleDegree,Miniute;

doubleSecond;

intSign;

doubleRad;

if(Dms>

=0)

Sign=1;

else

Sign=-1;

Dms=fabs(Dms);

Degree=floor(Dms);

Miniute=floor(fmod(Dms*100.0,100.0));

Second=fmod(Dms*10000.0,100.0);

Rad=Sign*(Degree+Miniute/60.0+Second/3600.0)*PI/180.0;

doubleRad2Dms(doubleRad)

doubleDms;

Rad=fabs(Rad*180.0/PI);

Degree=floor(Rad);

Miniute=floor(fmod(Rad*60.0,60.0));

Second=fmod(Rad*3600.0,60.0);

Dms=Sign*(Degree+Miniute/100.0+Second/10000.0);

returnDms;

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

//DefinitionofPrjPoint

boolPrjPoint:

BL2xy()

//x,y的计算公式见孔祥元等主编武汉大学出版社2002年出版的《控制测量学》的第72页

//书的的括号有问题,(和[应该交换

x=X+N*t*((0.5+((5-t2+9*ng2+4*ng2*ng2)/24.0+(61-

58*t2+t2*t2)*m2/720.0)*m2)*m2);

y=N*m*(1+m2*((1-t2+ng2)/6.0+m2*(5-18*t2+t2*t2

+14*ng2-58*ng2*t2)/120.0));

returntrue;

xy2BL()

do

{

0.000000001);

B=Rad2Dms(B0);

B=B0-(yN*yN-(5+3*t2+ng2-9*ng2*t2)*yN*yN*yN*yN/

12.0+(61+90*t2+45*t2*t2)*yN*yN*yN*yN*yN*yN/360.0)

*V*V*t/2;

L=L0+(yN-(1+2*t2+ng2)*yN*yN*yN/6.0+(5+28*t2+24

*t2*t2+6*ng2+8*ng2*t2)*yN*yN*yN*yN*yN/120.0)/cosB;

SetL0(doubledL0)

L0=Dms2Rad(dL0);

SetBL(doubledB,doubledL)

B=Dms2Rad(dB);

L=Dms2Rad(dL);

//B=dB;

//我靠,Iwanasayfuck

//L=dL;

//delit!

BL2xy();

GetBL(double*dB,double*dL)

*dB=Rad2Dms(B);

*dL=Rad2Dms(L);

Setxy(doubledx,doubledy)

x=dx;

y=dy;

xy2BL();

高斯投影VB源码1

坐标转换代码

doublea,f,e2,e12;

//基本椭球参数

doubleA1,A2,A3,A4;

//用于计算X的椭球参数

ConstPI=3.14159265358979

ConstY0=500000#

DimA1#,A2#,A3#,A4#,a#,f#

'

高斯正算求X

PublicFunctionX(B#,L#,L0#,zbx%)AsDouble//B纬度L经度L0中央子午线

zbcszbx

e2#=1-((f-1)/f)*((f-1)/f)

e12#=(f/(f-1))*(f/(f-1))-1

B=D_R(B):

L=D_R(L):

L0=D_R(L0)

Dimn,t,t2,m,m2,ng2

DimsinB,cosB

X=A1*B*180#/PI+A2*Sin(2*B)+A3*Sin(4*B)+A4*Sin(6*B)

sinB=Sin(B)

cosB=Cos(B)

t=Tan(B)

t2=t*t

n=a/Sqr(1-e2*sinB*sinB)

m=cosB*(L-L0)

m2=m*m

ng2=cosB*cosB*e2/(1-e2)

X=X+n*t*((0.5+((5-t2+9*ng2+4*ng2*ng2)/24#+(61-58*t2+t2*t2)*m2/720#)*m2)*m2)

EndFunction

高斯正算求Y

PublicFunctionY(B#,L#,L0#,zbx%)AsDouble

Y=n*m*(1+m2*((1-t2+ng2)/6#+m2*(5-18*t2+t2*t2+14*ng2-58*ng2*t2)/120#))

Y=Y+Y0

高斯反算求B(纬度)

PublicFunctionB(X#,Y#,L0#,zbx%)AsDouble

L0=D_R(L0)

DimsinB,cosB,t,t2,n,ng2,V,yN

DimpreB0,B0

Dimeta

Y=Y-Y0

B0=X/A1

DoWhileTrue

preB0=B0

B0=B0*PI/180#

B0=(X-(A2*Sin(2*B0)+A3*Sin(4*B0)+A4*Sin(6*B0)))/A1

eta=Abs(B0-preB0)

Ifeta<

0.0000001ThenExitDo

Loop

B0=B0*PI/180#

sinB=Sin(B0)

cosB=Cos(B0)

t=Tan(B0)

V=Sqr(1+ng2)

yN=Y/n

B=B0-(yN*yN-(5+3*t2+ng2-9*ng2*t2)*yN*yN*yN*yN/12#+(61+90*t2+45*t2*t2)*yN*yN*yN*yN*yN*yN/360#)*V*V*t/2

B=R_D(B)

高斯反算求L(经度)

PublicFunctionL(X#,Y#,L0#,zbx%)AsDouble

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2