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

下载本文档

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

文档简介

-.z.常用测量程序设计代码〔1〕用全站仪在A点观测了B点斜边和垂直角,求A到B的高差。〔提示:,D--斜边,--垂直角,--仪器高,--反光镜高,--大气折光系数〕usingSystem;usingSystem.Collections.Generic;usingSystem.Te*t;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.Te*t;namespaceConsoleApplication1{classApplication{staticvoidMain(string[]args){Console.Write("请输入A点的*坐标=");double*A=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());double*B=*A+S*Math.Cos(a);doubleYB=YA+S*Math.Sin(a);Console.WriteLine("B点的坐标〔{0},{1}〕",*B,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.Te*t;namespaceConsoleApplication1{classApplication{staticvoidMain(string[]args){Console.Write("请输入A点的*坐标=");double*A=double.Parse(Console.ReadLine());Console.Write("请输入A点的Y坐标=");doubleYA=double.Parse(Console.ReadLine());Console.Write("请输入B点的*坐标=");double*B=double.Parse(Console.ReadLine());Console.Write("请输入B点的Y坐标=");doubleYB=double.Parse(Console.ReadLine());doubleS=距离(*A,YA,*B,YB);doublea=方位角(*A,YA,*B,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方位角(double*1,doubley1,double*2,doubley2){doubledelta*=*2-*1;doubledeltaY=y2-y1;doubleangle=Math.PI*0.5;if(Math.Abs(delta*)>0.000000001){angle=Math.Atan2(deltaY,delta*);}if(angle<0){angle+=Math.PI;}if(deltaY<0.0){angle+=Math.PI;}returnangle;}//计算距离publicstaticdouble距离(double*1,doubley1,double*2,doubley2){returnMath.Sqrt((*2-*1)*(*2-*1)+(y2-y1)*(y2-y1));}}}〔4〕在如下图的支中导线,A点到M点的坐标方位角及每个左角,求每条边的坐标方位角。usingSystem;usingSystem.Collections.Generic;usingSystem.Te*t;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.Te*t;namespaceConsoleApplication1{classApplication{staticvoidMain(string[]args){Console.Write("请输入M点的*坐标=");doubleM*=double.Parse(Console.ReadLine());Console.Write("请输入M点的y坐标=");doubleMy=double.Parse(Console.ReadLine());Console.Write("请输入A点的*坐标=");doubleA*=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=方位角(M*,My,A*,Ay);//计算每个点的坐标double*0=A*;doubley0=Ay;for(intj=0;j<导线转角集合.Count;j++){a0+=导线转角集合[j]+Math.PI;if(a0>2*Math.PI)a0-=2*Math.PI;*0=*0+导线边长集合[j]*Math.Cos(a0);y0=y0+导线边长集合[j]*Math.Sin(a0);Console.WriteLine("P{0}点的坐标是:{1},{2}",j+2,*0,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方位角(double*1,doubley1,double*2,doubley2){doubledelta*=*2-*1;doubledeltaY=y2-y1;doubleangle=Math.PI*0.5;if(Math.Abs(delta*)>0.000000001){angle=Math.Atan2(deltaY,delta*);}if(angle<0){angle+=Math.PI;}if(deltaY<0.0){angle+=Math.PI;}returnangle;}}}〔6〕在如下图的单一附合水准路线中,A点和B点的高程及每段的长度和高差,求每个点的高程。usingSystem;usingSystem.Collections.Generic;usingSystem.Te*t;namespaceConsoleApplication1{classApplication{staticvoidMain(string[]args){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.Te*t;namespaceConsoleApplication1{classApplication{staticvoidMain(string[]args){Console.Write("请输入A点的*坐标=");doubleA*=double.Parse(Console.ReadLine());Console.Write("请输入A点的y坐标=");doubleAy=double.Parse(Console.ReadLine());Console.Write("请输入B点的*坐标=");doubleB*=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=方位角(A*,Ay,B*,By);//计算A到J的坐标方位角a0-=α;//计算A到B的边长doubles=距离(A*,Ay,B*,By);//计算A到J的边长s=s/Math.Sin(Math.PI-α-β)*Math.Sin(β);//计算J的坐标doubleJ*=A*+s*Math.Cos(a0);doubleJy=Ay+s*Math.Sin(a0);Console.WriteLine("J点的坐标={0},{1}",J*,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方位角(double*1,doubley1,double*2,doubley2){doubledelta*=*2-*1;doubledeltaY=y2-y1;doubleangle=Math.PI*0.5;if(Math.Abs(delta*)>0.000000001){angle=Math.Atan2(deltaY,delta*);}if(angle<0){angle+=Math.PI;}if(deltaY<0.0){angle+=Math.PI;}returnangle;}//计算距离publicstaticdouble距离(double*1,doubley1,double*2,doubley2){returnMath.Sqrt((*2-*1)*(*2-*1)+(y2-y1)*(y2-y1));}}}〔8〕在如下图的单个多边形中,每个点的坐标,求多边形的面积。提示面积的计算公式为:usingSystem;usingSystem.Collections.Generic;usingSystem.Te*t;namespaceConsoleApplication1{classApplication{staticvoidMain(string[]args){List<double>多边形*坐标集=newList<double>();List<double>多边形Y坐标集=newList<double>();inti=1;do{Console.Write("请输入第{0}点的*坐标<直接回车就完毕输入>=",i);stringstr=Console.ReadLine();if(str!=""){多边形*坐标集.Add(double.Parse(str));}else{break;}Console.Write("请输入第{0}点的y坐标=",i++);多边形Y坐标集.Add(double.Parse(Console.ReadLine()));}while(true);//计算面积doublearea=0;//点的个数intCount=多边形*坐标集.Count;for(intj=0;j<Count-1;j++){area+=多边形*坐标集[j]*多边形Y坐标集[j+1]-多边形*坐标集[j+1]*多边形Y坐标集[j];}//计算最后一点到起点的项area+=多边形*坐标集[Count-1]*多边形Y坐标集[0]-多边形*坐标集[0]*多边形Y坐标集[Count-1];Console.WriteLine("多边形的面积={0}",Math.Abs(area*0.5));}}}〔9〕在如下图的仅有一个连接角的附合导线中,A点和B点的高程及每条边的斜边、垂直角、仪器高和反光镜高,求每个点的高程。〔提示:,D--斜边,--垂直角,--仪器高,--反光镜高,--大气折光系数〕usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Te*t;namespace导线{classProgram{staticvoidMain(string[]args){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.Te*t;namespace导线{classProgram{staticvoidMain(string[]args){Console.Write("请输入M点的*坐标=");doubleM*=double.Parse(Console.ReadLine());Console.Write("请输入M点的Y坐标=");doubleMY=double.Parse(Console.ReadLine());Console.Write("请输入A点的*坐标=");doubleA*=double.Parse(Console.ReadLine());Console.Write("请输入A点的Y坐标=");doubleAY=double.Parse(Console.ReadLine());Console.Write("请输入B点的*坐标=");doubleB*=double.Parse(Console.ReadLine());Console.Write("请输入B点的Y坐标=");doubleBY=double.Parse(Console.ReadLine());//计算M到A的方位角doubleα0=导线.方位角(M*,MY,A*,AY);List<double>坐标增量*集合=newList<double>();List<double>坐标增量Y集合=newList<double>();inti=1;double坐标增量*和=0;double坐标增量Y和=0;double坐标增量*绝对值和=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++;//计算坐标增量doubled*,dy;α0=导线.坐标(0,0,β,S,α0,outd*,outdy);坐标增量*集合.Add(d*);坐标增量Y集合.Add(dy);坐标增量*和+=d*;;坐标增量Y和+=dy;;坐标增量*绝对值和+=Math.Abs(d*);坐标增量Y绝对值和+=Math.Abs(dy);水平距离和+=S;}while(true);//计算闭合差double闭合差*=A*+坐标增量*和-B*;double闭合差Y=AY+坐标增量Y和-BY;//计算单位长度改正数double*坐标单位长度改正数=-闭合差*/坐标增量*绝对值和;doubleY坐标单位长度改正数=-闭合差Y/坐标增量Y绝对值和;//计算导线相对精度intf=(int)(水平距离和/Math.Sqrt(闭合差**闭合差*+闭合差Y*闭合差Y));Console.WriteLine("导线的相对精度为1/{0}",f);//计算每点坐标double*=A*;doubleY=AY;for(intj=0;j<坐标增量*集合.Count;j++){*+=坐标增量*集合[j]+*坐标单位长度改正数*Math.Abs(坐标增量*集合[j]);Y+=坐标增量Y集合[j]+Y坐标单位长度改正数*Math.Abs(坐标增量Y集合[j]);Console.WriteLine("第{0}点的*坐标={1},Y坐标={2}",j+2,*,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方位角(double*1,doubley1,double*2,doubley2){doubledelta*=*2-*1;doubledeltaY=y2-y1;doubleangle=Math.PI*0.5;if(Math.Abs(delta*)>0.000000001){angle=Math.Atan2(deltaY,delta*);}if(angle<0){angle+=Math.PI;}if(deltaY<0.0){angle+=Math.PI;}returnangle;}//计算坐标,返回点到计算点的方位角publicstaticdouble坐标(double*0,doubley0,double左角,double水平距离,double方位角,outdouble*,outdoubley){double方位角=方位角+左角+Math.PI;//将方位角调整到0到2π之间if(方位角>=Math.PI*2)方位角-=Math.PI*2;if(方位角<0.0)方位角+=Math.PI*2;*=*0+水平距离*Math.Cos(方位角);y=y0+水平距离*Math.Sin(方位角);return方位角;}}}〔11〕在如下图的仅有一个连接角的附合导线中,M点、A点和B点的坐标,A点和B点的高程,每个点的左角及每条边的斜边、垂直角、仪器高和反光镜高,求每个点的坐标和高程。〔提示:,D--斜边,--垂直角,--仪器高,--反光镜高,--大气折光系数〕usingSystem;usingSystem.Collections.Generic;usingSystem.Te*t;namespace导线{classProgram{staticvoidMain(string[]args){Console.Write("请输入M点的*坐标=");doubleM*=double.Parse(Console.ReadLine());Console.Write("请输入M点的Y坐标=");doubleMY=double.Parse(Console.ReadLine());Console.Write("请输入A点的*坐标=");doubleA*=double.Parse(Console.ReadLine());Console.Write("请输入A点的Y坐标=");doubleAY=double.Parse(Console.ReadLine());Console.Write("请输入A点的高程=");doubleHA=double.Parse(Console.ReadLine());Console.Write("请输入B点的*坐标=");doubleB*=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=导线.方位角(M*,MY,A*,AY);List<double>坐标增量*集合=newList<double>();List<double>坐标增量Y集合=newList<double/r

温馨提示

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

评论

0/150

提交评论