大地测量程序设计.docx

上传人:b****3 文档编号:5329240 上传时间:2023-05-08 格式:DOCX 页数:23 大小:71.83KB
下载 相关 举报
大地测量程序设计.docx_第1页
第1页 / 共23页
大地测量程序设计.docx_第2页
第2页 / 共23页
大地测量程序设计.docx_第3页
第3页 / 共23页
大地测量程序设计.docx_第4页
第4页 / 共23页
大地测量程序设计.docx_第5页
第5页 / 共23页
大地测量程序设计.docx_第6页
第6页 / 共23页
大地测量程序设计.docx_第7页
第7页 / 共23页
大地测量程序设计.docx_第8页
第8页 / 共23页
大地测量程序设计.docx_第9页
第9页 / 共23页
大地测量程序设计.docx_第10页
第10页 / 共23页
大地测量程序设计.docx_第11页
第11页 / 共23页
大地测量程序设计.docx_第12页
第12页 / 共23页
大地测量程序设计.docx_第13页
第13页 / 共23页
大地测量程序设计.docx_第14页
第14页 / 共23页
大地测量程序设计.docx_第15页
第15页 / 共23页
大地测量程序设计.docx_第16页
第16页 / 共23页
大地测量程序设计.docx_第17页
第17页 / 共23页
大地测量程序设计.docx_第18页
第18页 / 共23页
大地测量程序设计.docx_第19页
第19页 / 共23页
大地测量程序设计.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

大地测量程序设计.docx

《大地测量程序设计.docx》由会员分享,可在线阅读,更多相关《大地测量程序设计.docx(23页珍藏版)》请在冰点文库上搜索。

大地测量程序设计.docx

大地测量程序设计

八程序设计

1已知某椭球体的长轴a=6378140.0m,扁率:

1

298.257

求给定大地维度处的子午

 

线曲率半径。

【提示:

M

a(1-e2)

W=,1-e2sin2B

22

e2=2二-二2】

 

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespaceConsoleApplication1{

classApplication

{

staticvoidMain(string[]args)

{

doublea=6378140.0;

doublea=1.0/298.257;

Console.Write("请输入大地维度B=");

doubleB=DEG(double.Parse(Console.ReadLine()));

doubleee=2*a-a*a;

doubleW=Math.Sqrt(1-ee*Math.Sin(B)*Math.Sin(B));

doubleM=a*(1-ee)/W/W/W;

Console.WriteLine("子午线曲率半径={0}",M);

}

//将ddd.mmss转为弧度

staticpublicdoubleDEG(doubleang)

{

intfuhao=(int)(ang/Math.Abs(ang));

ang=Math.Abs(ang);

intd=(int)ang;

intm=((int)(ang*100))-d*100;

doubles=ang*10000-m*100-d*10000;

return((d+m/60.0+s/3600.0)*fuhao)/180.0*Math.PI;

}

298.257,求给定大地维度处的卯酉

2已知某椭球体的长轴a=6378140.0m,扁率:

线曲率半径。

叽N嗚Wj—Se—

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespaceConsoleApplication1{

classApplication

{

staticvoidMain(string[]args)

{

doublea=6378140.0;

doublea=1.0/298.257;

Console.Write("请输入大地维度B=");

doubleB=DEG(double.Parse(Console.ReadLine()));

doubleee=2*a-a*a;

doubleW=Math.Sqrt(1-ee*Math.Sin(B)*Math.Sin(B));

doubleN=a/W;

Console.WriteLine("卯酉线曲率半径={0}",N);

}

//将ddd.mmss转为弧度

staticpublicdoubleDEG(doubleang)

{

intfuhao=(int)(ang/Math.Abs(ang));

ang=Math.Abs(ang);

intd=(int)ang;

intm=((int)(ang*100))-d*100;

doubles=ang*10000-m*100-d*10000;

return((d+m/60.0+s/3600.0)*fuhao)/180.0*Math.PI;

}

}

}

曲率半径。

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespaceConsoleApplicationl{

classApplication

{

staticvoidMain(string[]args)

{

doublea=6378140.0;

doublea=1.0/298.257;

Console.Write("请输入大地维度B=");

doubleB=DEG(double.Parse(Console.ReadLine()));

doubleee=2*a-a*a;

doubleW=Math.Sqrt(1-ee*Math.Sin(B)*Math.Sin(B));

doubleN=a/W;

doubleM=a*(1-ee)/W/W/W;

doubleR=Math.Sqrt(N*M);

Console.WriteLine("平均曲率半径={0}",R);

}

//将ddd.mmss转为弧度

staticpublicdoubleDEG(doubleang)

{

intfuhao=(int)(ang/Math.Abs(ang));

ang=Math.Abs(ang);

intd=(int)ang;

intm=((int)(ang*100))-d*100;

doubles=ang*10000-m*100-d*10000;

return((d+m/60.0+s/3600.0)*fuhao)/180.0*Math.PI;

}

}

}

圈曲率半径。

【提示:

acosB

r

丁1-e2sin2B

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespaceConsoleApplicationl{

classApplication

 

staticvoid

Main(string[]args)

double

a=6378140.0;

double

a=1.0/298.257;

Console

.Write("请输入大地维度B=");

 

double

B=DEG(double.Parse(Console.ReadLine()));

double

ee=2*a-a*a;

double

Console

r=a*Math.Cos(B)/Math.Sqrt(1-ee*.WriteLine("平行圈曲率半径={0}",r);

Math.Sin(B)*Math.Sin(B));

//

将ddd.mmss转为弧度

 

staticpublicdoubleDEG(doubleang)

intfuhao=(int)(ang/Math.Abs(ang));

ang=Math.Abs(ang);

intd=(int)ang;

intm=((int)(ang*100))-d*100;

doubles=ang*10000-m*100-d*10000;

Math.PI;

return((d+m/60.0+s/3600.0)*fuhao)/180.0*

 

m),请根据空间点在A空间直

X,厶Y,迄,3个旋转参数;x,丫,;z,一个尺度变化参数

角坐标系中的坐标求该空间点在B空间直角坐标系中的坐标。

[提示:

XB1

Yb

(1+m)R0Ya

cosYco$7

立B」

cossizn

R)=

-cosysinz

-si

coscczs

sinx

AY。

Na」工Z°」

sXn;$in;qos;xsin;zsin;xco$

SXns$in名zsin名xsi氓cosJcO$

ccxscy)s

Sizn

cos

sin

 

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespace坐标转换

{

classProgram

{

staticvoidMain(string[]args)

{

Console.Write("请输入转换参数ex(格式为:

ddd.mmss)=");

doublee=坐标转换.DEG(double.Parse(Console.ReadLine()));

Console.Write("请输入转换参数ey(格式为:

ddd.mmss)=");

doubleey=坐标转换.DEG(double.Parse(Console.ReadLine()));

Console.Write("请输入转换参数ez(格式为:

ddd.mmss)=");

doubleez=坐标转换.DEG(double.Parse(Console.ReadLine()));

Console.Write("请输入转换参数AX0=");

doubleAX0=double.Parse(Console.ReadLine());

Console.Write("请输入转换参数AY0=");

doubleAY0=double.Parse(Console.ReadLine());

Console.Write("请输入转换参数AZ0=");

doubleAZO=double.Parse(Console.ReadLine());

Console.Write("请输入转换参数m=");

doublem=double.Parse(Console.ReadLine());

坐标转换.设置参数(ex,ey,ez,AXO,AYO,AZO,m);

do

{

Console.Write("请输入XA[直接回车结束输入]=");

stringstr=Console.ReadLine();

if(str=="")break;

doubleXA=double.Parse(str);

Console.Write("请输入YA=");

doubleYA=double.Parse(Console.ReadLine());

Console.Write("请输入ZA=");

doubleZA=double.Parse(Console.ReadLine());

doubleXB,YB,ZB;

坐标转换•转换(XA,YA,ZA,outXB,outYB,outZB);

Console.WriteLine("该点在B坐标系中的坐标为({0},{1},{2})",XB,YB,ZB);}while(true);

}

}

class坐标转换

{

static

public

double

“x;

static

public

double

“y;

static

public

double

“z;

static

public

double

AX0;

static

public

double

AY0;

static

public

double

AZ0;

static

public

double

m;

//将ddd.mmss转为弧度

staticpublicdoubleDEG(doubleang)

{

intfuhao=(int)(ang/Math.Abs(ang));

ang=Math.Abs(ang);

intd=(int)ang;

intm=((int)(ang*100))-d*100;

doubles=ang*10000-m*100-d*10000;

return((d+m/60.0+s/3600.0)*fuhao)/180.0*Math.PI;

}

//设置7参数

staticpublicvoid设置参数(double“‘double^doubleez,doubleAXO,double△

Y0,doubleAZO,doublem)

{

坐标转换.“x=“x;

坐标转换.“y=“y;

坐标转换.“z=“z;

坐标转换.AX0=AX0;

坐标转换.AY0=AY0;

坐标转换.AZ0=AZ0;

坐标转换.m=m;

}

//7参数转换

staticpublicvoid转换(doubleX1,doubleY1,doubleZ1,outdoubleX2,outdoubleY2,outdoubleZ2)

{

doubleR11=Math.Cos(“y)*Math.Cos(“z);

doubleR12=Math.Cos(“x)*Math.Sin(“z)+Math.Sin(“x)*Math.Sin(“y)*Math.Cos(“

z);

doubleR13=Math.Sin(“x)*Math.Sin(“z)-Math.Cos(“x)*Math.Sin(“y)*Math.Cos(“z);

doubleR21=-Math.Cos(“y)*Math.Sin(“z);

doubleR22=Math.Cos(“x)*Math.Cos(“z)-Math.Sin(“x)*Math.Sin(“y)*Math.Sin(“z);

doubleR23=Math.Sin(“x)*Math.Cos(“z)+Math.Cos(“x)*Math.Sin(“y)*Math.Sin(“

z);

doubleR31=Math.Sin(ey);

doubleR32=-Math.Sin(e)*Math.Cos(e);

doubleR33=Math.Cos(e)*Math.Cos(e);

X2=(1+m)*(R11*X1+R12*Y1+R13*Z1)+AX0;

Y2=(1+m)*(R21*X1+R22*Y1+R23*Z1)+AY0;

Z2=(1+m)*(R31*X1+R32*Y1+R33*Z1)+AZO;

}

}

}

L,H),求该点在空间直角坐标系中的坐标。

[提示:

X(NH)cosBcosL

Y=(N+H)cosBsinL

2

ZJN(1—e)+H]sinB

]

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespace坐标转换

{

classProgram

{

staticvoidMain(string[]args)

{

do

{

Console.Write(”请输入大地维度B[直接回车结束输入](格式为:

ddd.mmss)=");

stringstr=Console.ReadLine();

if(str=="")break;

doubleB=坐标转换.DEG(double.Parse(str));

Console.Write("请输入大地经度L(格式为:

ddd.mmss)=");

doubleL=坐标转换.DEG(double.Parse(Console.ReadLine()));

Console.Write("请输入大地高H=");

doubleH=double.Parse(Console.ReadLine());

doubleX,Y,Z;

坐标转换.转换(B,L,H,outX,outY,outZ);

Console.WriteLine("该点的空间坐标为({0},{1},{2})",X,Y,Z);

}while(true);

}

}

class坐标转换

{

//转换参数

staticpublicdoublea;//长半车由

staticpublicdoublea;//扁率

staticpublicdoubleee;//e的平方

//静态构造函数

static坐标转换()

{

a=6378140.0;

a=1.0/298.257;

ee=2*a-a*a;//e的平方

}

//将ddd.mmss转为弧度

staticpublicdoubleDEG(doubleang)

{

intfuhao=(int)(ang/Math.Abs(ang));

ang=Math.Abs(ang);

intd=(int)ang;

intm=((int)(ang*100))-d*100;

doubles=ang*10000-m*100-d*10000;

return((d+m/60.0+s/3600.0)*fuhao)/180.0*Math.PI;

}

//转换

staticpublicvoid转换(doubleB,doubleL,doubleH,outdoubleX,outdoubleY,outdoubleZ)

{

doubleN=a/Math.Sqrt(1-ee*Math.Sin(B)*Math.Sin(B));

X=(N+H)*Math.Cos(B)*Math.Cos(L);

Y=(N+H)*Math.Cos(B)*Math.Sin(L);

Z=(N*(1-ee)+H)*Math.Cos(B);

}

}

}

标(X,Y,Z)求该点的大地坐标(B,L,H)。

[提示:

Y

L=arctan

X

W二siBi2二:

e—:

2

Z+Ne2sinBtanB二

Jx2+Y2

HZN(1—e2)

sinB

]

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespace坐标转换

{

classProgram

{

staticvoidMain(string[]args){

do{

Console.Write("请输入X[直接回车结束输入]=");

stringstr=Console.ReadLine();

if(str=="")break;

doubleX=double.Parse(str);

Console.Write("请输入Y=");

doubleY=double.Parse(Console.ReadLine());

Console.Write("请输入Z=");

doubleZ=double.Parse(Console.ReadLine());

doubleB,L,H;

坐标转换.转换(X,Y,乙outB,outL,outH);

Console.WriteLine("该点的大地坐标为({0},{1},{2})",坐标转换.DMS(B),坐标转换.DMS(L),H);

}while(true);

}

}

class坐标转换

{

//转换参数

staticpublicdoublea;//长半车由staticpublicdoublea;〃扁率staticpublicdoubleee;//e的平方

//静态构造函数

static坐标转换()

{

a=6378140.0;

a=1.0/298.257;

ee=2*a-a*a;//e的平方

}

//将弧度转为ddd.mmss

staticpublicdoubleDMS(doubleang)

{

ang+=1.0E-15;//加上一个小量,以保证进位

intfuhao=(int)(ang/Math.Abs(ang));

ang=Math.Abs(ang)*180.0/Math.PI;

intd=(int)ang;

ang=(ang-d)*60.0;intm=(int)ang;

doubles=(ang-m)*60.0;

return(d+m/100.0+s/10000.0)*fuhao;

}

//计算方位角,返回弧度值

publicstaticdouble方位角(doublex1,doubley1,doublex2,doubley2)

{

doubledeltaX=x2-x1;

doubledeltaY=y2-y1;

doubleangle=Math.PI*0.5;

if(Math.Abs(deltaX)>0.000000001)

{

angle=Math.Atan2(deltaY,deltaX);

}

if(angle<0)

{

angle+=Math.PI;

}

if(deltaY<0.0||((Math.Abs(deltaY)<0.000000001)&&(deltaX<0)))

{

angle+=Math.PI;

}

returnangle;

}

//转换

L,out

staticpublicvoid转换(doubleX,doubleY,doubleZ,outdoubleB,outdoubledoubleH)

{

doubleN=0;

L=方位角(0,0,X,Y);

doubleS=Mat

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

当前位置:首页 > 医药卫生 > 基础医学

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

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