测绘类C#程序代码_第1页
测绘类C#程序代码_第2页
测绘类C#程序代码_第3页
测绘类C#程序代码_第4页
测绘类C#程序代码_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

测绘类C#程序代码测绘类C#程序代码测绘类C#程序代码常用测量程序设计代码(1)用全站仪在A点观测了B点斜边和垂直角,求A到B得高差。(提示:,D--斜边,--垂直角,--仪器高,--反光镜高,--大气折光系数)usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespaceConsoleApplication1{classApplication{staticvoidMain(string{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{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[]arg{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(angle<0){angle+=Math、PI;}if(deltaY<0、0){angle+=Math、PI;}returnangle;}//计算距离publicstaticdouble距离(doublex1,doubley1,doublex2,doubley2){returnMath、Sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));}}}(4)在如图所示得支中导线,已知A点到M点得坐标方位角及每个左角,求每条边得坐标方位角。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(a0>2*Math、PI){a0-=2*Math、PI;}List<double>导线转角集合=newList<double>();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(a0>2*Math、PI){a0-=2*Math、PI;}elseif(a0<0、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());List<double>导线转角集合=newList<double>();List<double>导线边长集合=newList<double>();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(a0>2*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、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;}//计算方位角,返回弧度值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){angle+=Math、PI;}returnangle;}}}(6)在如图所示得单一附合水准路线中,已知A点和B点得高程及每段得长度和高差,求每个点得高程。usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespaceConsoleApplication1{classApplication{staticvoidMain(string[]a{Console、Write("请输入A点得高程=");doubleHa=double、Parse(Console、ReadLine());Console、Write("请输入B点得高程=");doubleHb=double、Parse(Console、ReadLine());List<double>路线段长度集合=newList<double>();List<double>路线段高差集合=newList<double>();inti=1;do{Console、Write("请输入第{0}段长度[公里为单位]<直接回车结束输入>=",i);stringstr=Console、ReadLine();if(str!=""){路线段长度集合、Add(double、Parse(str));}else{break;}Console、Write("请输入第{0}段高差=",i++);路线段高差集合、Add(double、Parse(Console、ReadLine()));}while(true);//计算水准路线闭合差doublew=0;double总长度=0;for(intj=0;j<路线段长度集合、Count;j++){w+=路线段高差集合[j];总长度+=路线段长度集合[j];}w=w-(Hb-Ha);//闭合差doublev=-w/总长度;//每公里改正数//计算每个点得高程doubleH=Ha;for(intj=0;j<路线段长度集合、Count;j++){H+=路线段高差集合[j]+v*路线段长度集合[j];Console、WriteLine("P{0}点得高程就就是:{1}",j+1,H);}Console、WriteLine("最后一点就就就是B点!");}}}(7)在如图所示得前方交会中,ABJ三点按逆时针方向排列,已知AB两点得坐标和两个交会角度,求J点得坐标。usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespaceConsoleApplication1{classApplication{staticvoidMain(string[]args){Console、Write("请输入A点得x坐标=");doubleAx=double、Parse(Console、ReadLine());Console、Write("请输入A点得y坐标=");doubleAy=double、Parse(Console、ReadLine());Console、Write("请输入B点得x坐标=");doubleBx=double、Parse(Console、ReadLine());Console、Write("请输入B点得y坐标=");doubleBy=double、Parse(Console、ReadLine());Console、Write("请输入α得角度值=");doubleα=DEG(double、Parse(Console、ReadLine()));Console、Write("请输入β得角度值=");doubleβ=DEG(double、Parse(Console、ReadLine()));//计算A到B得坐标方位角doublea0=方位角(Ax,Ay,Bx,By);//计算A到J得坐标方位角a0-=α;//计算A到B得边长doubles=距离(Ax,Ay,Bx,By);//计算A到J得边长s=s/Math、Sin(Math、PI-α-β)*Math、Sin(β);//计算J得坐标doubleJx=Ax+s*Math、Cos(a0);doubleJy=Ay+s*Math、Sin(a0);Console、WriteLine("J点得坐标={0},{1}",Jx,Jy);}//将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;}//计算方位角,返回弧度值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){angle+=Math、PI;}returnangle;}//计算距离publicstaticdouble距离(doublex1,doubley1,doublex2,doubley2){returnMath、Sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));}}}(8)在如图所示得单个多边形中,已知每个点得坐标,求多边形得面积。提示面积得计算公式为:usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespaceConsoleApplication1{classApplication{staticvoidMain(string[]a{List<double>多边形X坐标集=newList<double>();List<double>多边形Y坐标集=newList<double>();inti=1;do{Console、Write("请输入第{0}点得x坐标<直接回车就结束输入>=",i);stringstr=Console、ReadLine();if(str!=""){多边形X坐标集、Add(double、Parse(str));}else{break;}Console、Write("请输入第{0}点得y坐标=",i++);多边形Y坐标集、Add(double、Parse(Console、ReadLine()));}while(true);//计算面积doublearea=0;//点得个数intCount=多边形X坐标集、Count;for(intj=0;j<Count-1;j++){area+=多边形X坐标集[j]*多边形Y坐标集[j+1]-多边形X坐标集[j+1]*多边形Y坐标集[j];}//计算最后一点到起点得项area+=多边形X坐标集[Count-1]*多边形Y坐标集[0]-多边形X坐标集[0]*多边形Y坐标集[Count-1];Console、WriteLine("多边形得面积={0}",Math、Abs(area*0、5));}}}(9)在如图所示得仅有一个连接角得附合导线中,已知A点和B点得高程及每条边得斜边、垂直角、仪器高和反光镜高,求每个点得高程。(提示:,D--斜边,--垂直角,--仪器高,--反光镜高,--大气折光系数)usingSystem;usingSystem、Collections、Generic;usingSystem、Linq;usingSystem、Text;namespace导线{classProgram{staticvoidMain(s{Console、Write("请输入A点得高程=");doubleHA=double、Parse(Console、ReadLine());Console、Write("请输入B点得高程=");doubleHB=double、Parse(Console、ReadLine());List<double>高差集合=newList<double>();List<double>水平距离平方集合=newList<double>();inti=1;double高差和=0;double水平距离平方和=0;do{Console、Write("请输入{0}点到{1}点得斜距D<直接回车结束输入>=",i,i+1);stringstr=Console、ReadLine();if(str=="")break;doubleD=double、Parse(str);Console、Write("请输入{0}点到{1}点得垂直角=",i,i+1);doubleα=导线、DEG(double、Parse(Console、ReadLine()));//并化为弧度Console、Write("请输入{0}得仪器高=",i);double仪器高=double、Parse(Console、ReadLine());Console、Write("请输入{0}得反光镜高=",i+1);double反光镜高=double、Parse(Console、ReadLine());i++;double水平距离;doubleh=导线、高差(D,α,仪器高,反光镜高,out水平距离);水平距离平方集合、Add(水平距离*水平距离);高差集合、Add(h);水平距离平方和+=水平距离*水平距离;高差和+=h;}while(true);//计算高差闭合差double高差闭合差=HA+高差和-HB;//计算单位长度改正数,三角高程得权与距离得平方成反比double单位长度改正数=-高差闭合差/水平距离平方和;//计算每点高程doubleH=HA;for(intj=0;j<高差集合、Count;j++){H+=高差集合[j]+单位长度改正数*水平距离平方集合[j];Console、WriteLine("第{0}点得高程H={1}",j+2,H);}Console、WriteLine("最后一个点得高程应该与B点得高程相同!");}}class导线{//将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;}//高差计算,返回高差publicstaticdouble高差(double斜距,double垂直角,double仪器高,double反光镜高,outdouble水平距离){doubleh=斜距*Math、Sin(垂直角)+斜距*Math、Cos(垂直角)/6371000、0*斜距*Math、Cos(垂直角)*(1-0、13)+仪器高-反光镜高;水平距离=斜距*Math、Cos(垂直角);returnh;}}}(10)在如图所示得仅有一个连接角得附合导线中,已知M点、A点和B点得坐标,每个点得左角及每条边得水平距离,求每个点得坐标。usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespace导线{classProgram{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());Console、Write("请输入B点得X坐标=");doubleBX=double、Parse(Console、ReadLine());Console、Write("请输入B点得Y坐标=");doubleBY=double、Parse(Console、ReadLine());//计算M到A得方位角doubleα0=导线、方位角(MX,MY,AX,AY);List<double>坐标增量X集合=newList<double>();List<double>坐标增量Y集合=newList<double>();inti=1;double坐标增量X和=0;double坐标增量Y和=0;double坐标增量X绝对值和=0;double坐标增量Y绝对值和=0;double水平距离和=0;do{Console、Write("请输入{0}点到{1}点得水平距离S<直接回车结束输入>=",i,i+1);stringstr=Console、ReadLine();if(str=="")break;doubleS=double、Parse(str);Console、Write("请输入{0}点得水平角<左角为正,右角为负>=",i);doubleβ=导线、DEG(double、Parse(Console、ReadLine()));i++;//计算坐标增量doubledx,dy;α0=导线、坐标(0,0,β,S,α0,outdx,outdy);坐标增量X集合、Add(dx);坐标增量Y集合、Add(dy);坐标增量X和+=dx;;坐标增量Y和+=dy;;坐标增量X绝对值和+=Math、Abs(dx);坐标增量Y绝对值和+=Math、Abs(dy);水平距离和+=S;}while(true);//计算闭合差double闭合差X=AX+坐标增量X和-BX;double闭合差Y=AY+坐标增量Y和-BY;//计算单位长度改正数doubleX坐标单位长度改正数=-闭合差X/坐标增量X绝对值和;doubleY坐标单位长度改正数=-闭合差Y/坐标增量Y绝对值和;//计算导线相对精度intf=(int)(水平距离和/Math、Sqrt(闭合差X*闭合差X+闭合差Y*闭合差Y));Console、WriteLine("导线得相对精度为1/{0}",f);//计算每点坐标doubleX=AX;doubleY=AY;for(intj=0;j<坐标增量X集合、Count;j++){X+=坐标增量X集合[j]+X坐标单位长度改正数*Math、Abs(坐标增量X集合[j]);Y+=坐标增量Y集合[j]+Y坐标单位长度改正数*Math、Abs(坐标增量Y集合[j]);Console、WriteLine("第{0}点得X坐标={1},Y坐标={2}",j+2,X,Y);}Console、WriteLine("最后一个点得坐标应该与B点得坐标相同!");}}class导线{//将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;}//计算方位角,返回弧度值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){angle+=Math、PI;}returnangle;}//计算坐标,返回已知点到计算点得方位角publicstaticdouble坐标(doublex0,doubley0,double左角,double水平距离,double已知方位角,outdoublex,outdoubley){double方位角=已知方位角+左角+Math、PI;//将方位角调整到0到2π之间if(方位角>=Math、PI*2)方位角-=Math、PI*2;if(方位角<0、0)方位角+=Math、PI*2;x=x0+水平距离*Math、Cos(方位角);y=y0+水平距离*Math、Sin(方位角);return方位角;}}}(11)在如图所示得仅有一个连接角得附合导线中,已知M点、A点和B点得坐标,A点和B点得高程,每个点得左角及每条边得斜边、垂直角、仪器高和反光镜高,求每个点得坐标和高程。(提示:,D--斜边,--垂直角,--仪器高,--反光镜高,--大气折光系数)usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespace导线{classProgram{staticvoidMain(string[]a{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());Console、Write("请输入A点得高程=");doubleHA=double、Parse(Console、ReadLine());Console、Write("请输入B点得X坐标=");doubleBX=double、Parse(Console、ReadLine());Console、Write("请输入B点得Y坐标=");doubleBY=double、Parse(Console、ReadLine());Console、Write("请输入B点得高程=");doubleHB=double、Parse(Console、ReadLine());//计算M到A得方位角doubleα0=导线、方位角(MX,MY,AX,AY);List<double>坐标增量X集合=newList<double>();List<double>坐标增量Y集合=newList<double>();List<double>高差集合=newList<double>();List<double>水平距离平方集合=newList<double>();inti=1;double坐标增量X和=0;double坐标增量Y和=0;double坐标增量X绝对值和=0;double坐标增量Y绝对值和=0;double水平距离和=0;double高差和=0;double水平距离平方和=0;do{Console、Write("请输入{0}点到{1}点得斜距D<直接回车结束输入>=",i,i+1);stringstr=Console、ReadLine();if(str=="")break;doubleD=double、Parse(str);Console、Write("请输入{0}点得水平角<左角为正,右角为负>=",i);doubleβ=导线、DEG(double、Parse(Console、ReadLine()));Console、Write("请输入{0}点到{1}点得垂直角=",i,i+1);doubleα=导线、DEG(double、Parse(Console、ReadLine()));//并化为弧度Console、Write("请输入{0}得仪器高=",i);double仪器高=double、Parse(Console、ReadLine());Console、Write("请输入{0}得反光镜高=",i+1);double反光镜高=double、Parse(Console、ReadLine());i++;//计算高差double水平距离;doubleh=导线、高差(D,α,仪器高,反光镜高,out水平距离);水平距离平方集合、Add(水平距离*水平距离);高差集合、Add(h);水平距离平方和+=水平距离*水平距离;高差和+=h;//计算坐标增量doubledx,dy;α0=导线、坐标(0,0,β,水平距离,α0,outdx,outdy);坐标增量X集合、Add(dx);坐标增量Y集合、Add(dy);坐标增量X和+=dx;;坐标增量Y和+=dy;;坐标增量X绝对值和+=Math、Abs(dx);坐标增量Y绝对值和+=Math、Abs(dy);水平距离和+=水平距离;}while(true);//计算高差闭合差double高差闭合差=HA+高差和-HB;//计算单位长度改正数,三角高程得权与距离得平方成反比double单位长度改正数=-高差闭合差/水平距离平方和;//计算闭合差double闭合差X=AX+坐标增量X和-BX;double闭合差Y=AY+坐标增量Y和-BY;//计算单位长度改正数doubleX坐标单位长度改正数=-闭合差X/坐标增量X绝对值和;doubleY坐标单位长度改正数=-闭合差Y/坐标增量Y绝对值和;//计算导线相对精度intf=(int)(水平距离和/Math、Sqrt(闭合差X*闭合差X+闭合差Y*闭合差Y));Console、WriteLine("导线得相对精度为1/{0}",f);//计算每点坐标doubleX=AX;doubleY=AY;doubleH=HA;for(intj=0;j<坐标增量X集合、Count;j++){H+=高差集合[j]+单位长度改正数*水平距离平方集合[j];X+=坐标增量X集合[j]+X坐标单位长度改正数*Math、Abs(坐标增量X集合[j]);Y+=坐标增量Y集合[j]+Y坐标单位长度改正数*Math、Abs(坐标增量Y集合[j]);Console、WriteLine("第{0}点得X坐标={1},Y坐标={2},高程H={3}",j+2,X,Y,H);}Console、WriteLine("最后一个点得坐标和高程应该与B点得坐标和高程相同!");}}class导线{//将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;}//计算方位角,返回弧度值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){angle+=Math、PI;}returnangle;}//高差计算,返回高差publicstaticdouble高差(double斜距,double垂直角,double仪器高,double反光镜高,outdouble水平距离){doubleh=斜距*Math、Sin(垂直角)+斜距*Math、Cos(垂直角)/6371000、0*斜距*Math、Cos(垂直角)*(1-0、13)+仪器高-反光镜高;水平距离=斜距*Math、Cos(垂直角);returnh;}//计算坐标,返回已知点到计算点得方位角publicstaticdouble坐标(doublex0,doubley0,double左角,double水平距离,double已知方位角,outdoublex,outdoubley){double方位角=已知方位角+左角+Math、PI;//将方位角调整到0到2π之间if(方位角>=Math、PI*2)方位角-=Math、PI*2;if(方位角<0、0)方位角+=Math、PI*2;x=x0+水平距离*Math、Cos(方位角);y=y0+水平距离*Math、Sin(方位角);return方位角;}}}(12)在如图所示得具有两个连接角得附合导线中,已知M点、N点、A点和B点得坐标,A点和B点得高程,每个点得左角及每条边得斜边、垂直角、仪器高和反光镜高,请采用近似平差方法求每个点得坐标和高程。(提示:,D--斜边,--垂直角,--仪器高,--反光镜高,--大气折光系数)usingSystem;usingSystem、Collections、Generic;usingSystem、Text;namespace导线{classProgram{staticvoidMain(string[]arg{Console、Write("请输入M点得X坐标=");doubleMX=double、Parse(Console、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论