您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 常用测绘C#程序设计(源代码)
常用测量程序设计(1)用全站仪在A点观测了B点斜边和垂直角,求A到B的高差。(提示:22sin(1)cos2ABDhDakaivR,D--斜边,a--垂直角,i--仪器高,v--反光镜高,k--大气折光系数)usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceConsoleApplication1{classApplication{staticvoidMain(string[]args){Console.Write(请输入斜边=);doubleD=double.Parse(Console.ReadLine());Console.Write(请输入垂直角[ddd.mmss]=);doublea=DEG(double.Parse(Console.ReadLine()));Console.Write(请输入仪器高=);doublei=double.Parse(Console.ReadLine());Console.Write(请输入反光镜高=);doublev=double.Parse(Console.ReadLine());doubleh=D*Math.Sin(a)+(1-0.13)*D/6371000.0*D/6371000.0*Math.Cos(a)*Math.Cos(a)/2.0+i-v;Console.WriteLine(高差为{0},h);}//将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;}}}(2)如图所示,已知A点的坐标及A点到B点的边长及方位角,计算B点的坐标。usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceConsoleApplication1{classApplication{staticvoidMain(string[]args){Console.Write(请输入A点的X坐标=);doubleXA=double.Parse(Console.ReadLine());Console.Write(请输入A点的Y坐标=);doubleYA=double.Parse(Console.ReadLine());Console.Write(请输入A到B的方位角[ddd.mmss]=);doublea=DEG(double.Parse(Console.ReadLine()));Console.Write(请输入A到B的水平距离=);doubleS=double.Parse(Console.ReadLine());doubleXB=XA+S*Math.Cos(a);doubleYB=YA+S*Math.Sin(a);Console.WriteLine(B点的坐标({0},{1}),XB,YB);}//将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;}}}(3)如图所示,已知A点和B点的坐标,计算A点到的边长及方位角。usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceConsoleApplication1{classApplication{staticvoidMain(string[]args){Console.Write(请输入A点的X坐标=);doubleXA=double.Parse(Console.ReadLine());Console.Write(请输入A点的Y坐标=);doubleYA=double.Parse(Console.ReadLine());Console.Write(请输入B点的X坐标=);doubleXB=double.Parse(Console.ReadLine());Console.Write(请输入B点的Y坐标=);doubleYB=double.Parse(Console.ReadLine());doubleS=距离(XA,YA,XB,YB);doublea=方位角(XA,YA,XB,YB);Console.WriteLine(AB间的距离={0},从A到B的方位角={1},S,DMS(a));}//将弧度转为ddd.mmssstaticpublicdoubleDMS(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(angle0){angle+=Math.PI;}if(deltaY0.0){angle+=Math.PI;}returnangle;}//计算距离publicstaticdouble距离(doublex1,doubley1,doublex2,doubley2){returnMath.Sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));}}}(4)在如图所示的支中导线,已知A点到M点的坐标方位角0a及每个左角,求每条边的坐标方位角。usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceConsoleApplication1{classApplication{staticvoidMain(string[]args){Console.Write(请输入A点到M点的坐标方位角=);//将A点到M点的坐标方位角换算为M点到A点的坐标方位角,以便利用公式doublea0=DEG(double.Parse(Console.ReadLine())+180.0);if(a02*Math.PI){a0-=2*Math.PI;}Listdouble导线转角集合=newListdouble();inti=1;do{Console.Write(请输入第{0}个转角的水平角[左角为正,右角为负]直接回车结束输入=,i++);stringstr=Console.ReadLine();if(str!=){导线转角集合.Add(DEG(double.Parse(str)));}else{break;}}while(true);i=1;foreach(doubleain导线转角集合){a0+=a+Math.PI;if(a02*Math.PI){a0-=2*Math.PI;}elseif(a00.0){a0+=2*Math.PI;}Console.WriteLine(第{0}条边的方位角为{1},i++,DMS(a0));}}//将弧度转为ddd.mmssstaticpublicdoubleDMS(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;}//将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;}}}(5)在如图所示的支中导线,已知A点和M点的坐标及每个左角和每条边长,求每个点的坐标。usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceConsoleApplication1{classApplication{staticvoidMain(string[]args){Console.Write(请输入M点的x坐标=);doubleMx=double.Parse(Console.ReadLine());Console.Write(请输入M点的y坐标=);doubleMy=double.Parse(Console.ReadLine());Console.Write(请输入A点的x坐标=);doubleAx=double.Parse(Console.ReadLine());Console.Write(请输入A点的y坐标=);doubleAy=double.Parse(Console.ReadLine());Listdouble导线转角集合=newListdouble();Listdouble导线边长集合=newListdouble();inti=1;do{Console.Write(请输入第{0}个转角的水平角[左角为正,右角为负]直接回车结束输入=,i);stringstr=Console.ReadLine();if(str!=){导线转角集合.Add(DEG(double.Parse(str)));}else{break;}Console.Write(请输入第{0}条边长值=,i++);导线边长集合.Add(double.Parse(Console.ReadLine()));}while(true);//计算M到A的坐标方位角doublea0=方位角(Mx,My,Ax,Ay);//计算每个点的坐标doublex0=Ax;doubley0=Ay;for(intj=0;j导线转角集合.Count;j++){a0+=导线转角集合[j]+Math.PI;if(a02*Math.PI)a0-=2*Math.PI;x0=x0+导线边长集合[j]*Math.Cos(a0);y0=y0+导线边长集合[j]*Math.Sin(a0);Console.WriteLine(P{0}点的坐标是:{1},{2},j+2,x0,y0);}}//将ddd.
本文标题:常用测绘C#程序设计(源代码)
链接地址:https://www.777doc.com/doc-6306467 .html