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

下载本文档

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

文档简介

1、 常用测量程序设计代码(1)用全站仪在A点观测了B点斜边和垂直角,求A到B的高差。(提示:,D-斜边,-垂直角,-仪器高,-反光镜高,-大气折光系数)using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1classApplication staticvoidMain(string args) Console.Write("请输入斜边=");double D = double.Parse(Console.ReadLine();Console.Wr

2、ite("请输入垂直角ddd.mmss=");double a = DEG(double.Parse(Console.ReadLine();Console.Write("请输入仪器高=");double i = double.Parse(Console.ReadLine();Console.Write("请输入反光镜高=");double v = double.Parse(Console.ReadLine();double h = D * Math.Sin(a) + (1 - 0.13) * D / 6371000.0 * D / 6

3、371000.0 * Math.Cos(a) * Math.Cos(a) / 2.0 + i - v;Console.WriteLine("高差为0",h); /将ddd.mmss转为弧度staticpublicdouble DEG(double ang) int fuhao = (int)(ang / Math.Abs(ang); ang = Math.Abs(ang);int d = (int)ang;int m = (int)(ang * 100) - d * 100;double s = ang * 10000 - m * 100 - d * 10000;retur

4、n (d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI; (2)如图所示,已知A点的坐标及A点到B点的边长及方位角,计算B点的坐标。using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1classApplication staticvoidMain(string args) Console.Write("请输入A点的X坐标=");double XA = double.Parse(Cons

5、ole.ReadLine();Console.Write("请输入A点的Y坐标=");double YA = double.Parse(Console.ReadLine();Console.Write("请输入A到B的方位角ddd.mmss=");double a = DEG(double.Parse(Console.ReadLine();Console.Write("请输入A到B的水平距离=");double S = double.Parse(Console.ReadLine();double XB = XA + S*Math.Co

6、s(a);double YB = YA + S*Math.Sin(a);Console.WriteLine("B点的坐标(0,1)",XB,YB); /将ddd.mmss转为弧度staticpublicdouble DEG(double ang) int fuhao = (int)(ang / Math.Abs(ang); ang = Math.Abs(ang);int d = (int)ang;int m = (int)(ang * 100) - d * 100;double s = ang * 10000 - m * 100 - d * 10000;return (d

7、+ m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI; (3)如图所示,已知A点和B点的坐标,计算A点到的边长及方位角。using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1classApplication staticvoidMain(string args) Console.Write("请输入A点的X坐标=");double XA = double.Parse(Console.ReadLi

8、ne();Console.Write("请输入A点的Y坐标=");double YA = double.Parse(Console.ReadLine();Console.Write("请输入B点的X坐标=");double XB = double.Parse(Console.ReadLine();Console.Write("请输入B点的Y坐标=");double YB = double.Parse(Console.ReadLine();double S = 距离(XA, YA, XB, YB);double a = 方位角(XA,

9、YA, XB, YB);Console.WriteLine("AB间的距离=0,从A到B的方位角=1",S,DMS(a); /将弧度转为ddd.mmssstaticpublicdouble DMS(double ang) ang += 1.0E-15;/加上一个小量,以保证进位int fuhao = (int)(ang / Math.Abs(ang); ang = Math.Abs(ang) * 180.0 / Math.PI;int d = (int)ang; ang = (ang - d) * 60.0;int m = (int)ang;double s = (ang

10、- m) * 60.0;return (d + m / 100.0 + s / 10000.0) * fuhao; /计算方位角,返回弧度值publicstaticdouble 方位角(double x1, double y1, double x2, double y2) double deltaX = x2 - x1;double deltaY = y2 - y1;double angle = Math.PI * 0.5;if (Math.Abs(deltaX) > 0.000000001) angle = Math.Atan2(deltaY, deltaX); if (angle &

11、lt; 0) angle += Math.PI; if (deltaY < 0.0) angle += Math.PI; return angle; /计算距离publicstaticdouble 距离(double x1, double y1, double x2, double y2) returnMath.Sqrt(x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1); (4)在如图所示的支中导线,已知A点到M点的坐标方位角及每个左角,求每条边的坐标方位角。using System;using System.Collections.Generic

12、;using System.Text;namespace ConsoleApplication1classApplication staticvoidMain(string args) Console.Write("请输入A点到M点的坐标方位角=");/将A点到M点的坐标方位角换算为M点到A点的坐标方位角,以便利用公式double a0 = DEG(double.Parse(Console.ReadLine() +180.0);if (a0 > 2 * Math.PI) a0 -= 2 * Math.PI; List<double> 导线转角集合 = ne

13、wList<double>();int i = 1;do Console.Write("请输入第0个转角的水平角左角为正,右角为负<直接回车结束输入>=",i+);string str = Console.ReadLine();if (str != "") 导线转角集合.Add(DEG(double.Parse(str); else break; while (true); i = 1;foreach (double a in 导线转角集合) a0 += a + Math.PI;if (a0 > 2 * Math.PI) a

14、0 -= 2 * Math.PI; elseif (a0 < 0.0) a0 += 2 * Math.PI; Console.WriteLine("第0条边的方位角为1",i+,DMS(a0); /将弧度转为ddd.mmssstaticpublicdouble DMS(double ang) ang += 1.0E-15;/加上一个小量,以保证进位int fuhao = (int)(ang / Math.Abs(ang); ang = Math.Abs(ang) * 180.0 / Math.PI;int d = (int)ang; ang = (ang - d) *

15、 60.0;int m = (int)ang;double s = (ang - m) * 60.0;return (d + m / 100.0 + s / 10000.0) * fuhao; /将ddd.mmss转为弧度staticpublicdouble DEG(double ang) int fuhao = (int)(ang / Math.Abs(ang); ang = Math.Abs(ang);int d = (int)ang;int m = (int)(ang * 100) - d * 100;double s = ang * 10000 - m * 100 - d * 1000

16、0;return (d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI; (5)在如图所示的支中导线,已知A点和M点的坐标及每个左角和每条边长,求每个点的坐标。using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1classApplication staticvoidMain(string args) Console.Write("请输入M点的x坐标=");double Mx = doub

17、le.Parse(Console.ReadLine();Console.Write("请输入M点的y坐标=");double My = double.Parse(Console.ReadLine();Console.Write("请输入A点的x坐标=");double Ax = double.Parse(Console.ReadLine();Console.Write("请输入A点的y坐标=");double Ay = double.Parse(Console.ReadLine();List<double> 导线转角集合

18、= newList<double>();List<double> 导线边长集合 = newList<double>();int i = 1;do Console.Write("请输入第0个转角的水平角左角为正,右角为负<直接回车结束输入>=",i);string str = Console.ReadLine();if (str != "") 导线转角集合.Add(DEG(double.Parse(str); else break; Console.Write("请输入第0条边长值=",

19、i+); 导线边长集合.Add( double.Parse(Console.ReadLine(); while (true);/计算M到A的坐标方位角double a0 = 方位角(Mx, My, Ax, Ay);/计算每个点的坐标double x0 = Ax;double y0 = Ay;for (int j = 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 + 导

20、线边长集合j * Math.Sin(a0);Console.WriteLine("P0点的坐标是:1,2",j+2,x0,y0); /将ddd.mmss转为弧度staticpublicdouble DEG(double ang) int fuhao = (int)(ang / Math.Abs(ang); ang = Math.Abs(ang);int d = (int)ang;int m = (int)(ang * 100) - d * 100;double s = ang * 10000 - m * 100 - d * 10000;return (d + m / 60.

21、0 + s / 3600.0) * fuhao) / 180.0 * Math.PI; /计算方位角,返回弧度值publicstaticdouble 方位角(double x1, double y1, double x2, double y2) double deltaX = x2 - x1;double deltaY = y2 - y1;double angle = Math.PI * 0.5;if (Math.Abs(deltaX) > 0.000000001) angle = Math.Atan2(deltaY, deltaX); if (angle < 0) angle +

22、= Math.PI; if (deltaY < 0.0) angle += Math.PI; return angle; (6)在如图所示的单一附合水准路线中,已知A点和B点的高程及每段的长度和高差,求每个点的高程。using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1classApplication staticvoidMain(string args) Console.Write("请输入A点的高程=");double Ha = do

23、uble.Parse(Console.ReadLine();Console.Write("请输入B点的高程=");double Hb = double.Parse(Console.ReadLine();List<double> 路线段长度集合 = newList<double>();List<double> 路线段高差集合 =newList<double>();int i = 1;do Console.Write("请输入第0段长度公里为单位<直接回车结束输入>=",i);string str

24、= Console.ReadLine();if (str != "") 路线段长度集合.Add(double.Parse(str); else break; Console.Write("请输入第0段高差=", i+); 路线段高差集合.Add(double.Parse(Console.ReadLine(); while (true);/计算水准路线闭合差double w = 0;double 总长度 = 0;for (int j = 0; j < 路线段长度集合.Count; j+) w += 路线段高差集合j; 总长度 += 路线段长度集合j;

25、 w = w - (Hb - Ha); /闭合差double v = -w / 总长度; /每公里改正数/计算每个点的高程double H = Ha;for (int j = 0; j < 路线段长度集合.Count; j+) H += 路线段高差集合j + v * 路线段长度集合j;Console.WriteLine("P0点的高程是:1",j+1,H); Console.WriteLine("最后一点就是B点!"); (7)在如图所示的前方交会中,ABJ三点按逆时针方向排列,已知AB两点的坐标和两个交会角度,求J点的坐标。using Syste

26、m;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1classApplication staticvoidMain(string args) Console.Write("请输入A点的x坐标=");double Ax = double.Parse(Console.ReadLine();Console.Write("请输入A点的y坐标=");doubleAy = double.Parse(Console.ReadLine();Console.Wr

27、ite("请输入B点的x坐标=");double Bx = double.Parse(Console.ReadLine();Console.Write("请输入B点的y坐标=");double By = double.Parse(Console.ReadLine();Console.Write("请输入的角度值=");double = DEG(double.Parse(Console.ReadLine();Console.Write("请输入的角度值=");double = DEG(double.Parse(Con

28、sole.ReadLine();/计算A到B的坐标方位角double a0 = 方位角(Ax, Ay, Bx, By);/计算A到J的坐标方位角 a0 -= ;/计算A到B的边长double s = 距离(Ax, Ay, Bx, By);/计算A到J的边长 s = s / Math.Sin(Math.PI - - ) * Math.Sin();/计算J的坐标double Jx = Ax + s * Math.Cos(a0);double Jy = Ay + s * Math.Sin(a0);Console.WriteLine("J点的坐标=0,1",Jx,Jy); /将dd

29、d.mmss转为弧度staticpublicdouble DEG(double ang) int fuhao = (int)(ang / Math.Abs(ang); ang = Math.Abs(ang);int d = (int)ang;int m = (int)(ang * 100) - d * 100;double s = ang * 10000 - m * 100 - d * 10000;return (d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI; /计算方位角,返回弧度值publicstaticdouble 方位角(d

30、ouble x1, double y1, double x2, double y2) double deltaX = x2 - x1;double deltaY = y2 - y1;double angle = 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; return angle; /计算距离publicstati

31、cdouble 距离(double x1, double y1, double x2, double y2) returnMath.Sqrt(x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1); (8)在如图所示的单个多边形中,已知每个点的坐标,求多边形的面积。提示面积的计算公式为:using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1classApplication staticvoidMain(string args) L

32、ist<double> 多边形X坐标集 = newList<double>();List<double> 多边形Y坐标集 = newList<double>();int i = 1;do Console.Write("请输入第0点的x坐标<直接回车就结束输入>=",i);string str = Console.ReadLine();if (str != "") 多边形X坐标集.Add(double.Parse(str); else break; Console.Write("请输入第

33、0点的y坐标=",i+); 多边形Y坐标集.Add( double.Parse(Console.ReadLine(); while (true);/计算面积double area = 0;/点的个数int Count = 多边形X坐标集.Count;for (int j = 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

34、- 1;Console.WriteLine("多边形的面积=0",Math.Abs(area * 0.5); (9)在如图所示的仅有一个连接角的附合导线中,已知A点和B点的高程及每条边的斜边、垂直角、仪器高和反光镜高,求每个点的高程。(提示:,D-斜边,-垂直角,-仪器高,-反光镜高,-大气折光系数)using System;usingSystem.Collections.Generic;using System.Linq;using System.Text;namespace导线classProgram staticvoidMain(string args) Consol

35、e.Write("请输入A点的高程=");double HA = double.Parse(Console.ReadLine();Console.Write("请输入B点的高程=");double HB = double.Parse(Console.ReadLine();List<double> 高差集合 = newList<double>();List<double> 水平距离平方集合 = newList<double>();int i = 1;double高差和 = 0;double水平距离平方和 =

36、0;do Console.Write("请输入0点到1点的斜距D<直接回车结束输入>=",i,i+1);string str = Console.ReadLine();if (str = "") break;double D = double.Parse(str);Console.Write("请输入0点到1点的垂直角=", i, i + 1);double = 导线.DEG(double.Parse(Console.ReadLine();/并化为弧度Console.Write("请输入0的仪器高=",

37、 i);double仪器高 = double.Parse(Console.ReadLine();Console.Write("请输入0的反光镜高=", i+1);double反光镜高 = double.Parse(Console.ReadLine(); i+;double水平距离;double h = 导线.高差(D, , 仪器高, 反光镜高, out水平距离);水平距离平方集合.Add(水平距离 * 水平距离);高差集合.Add(h);水平距离平方和 += 水平距离 * 水平距离;高差和 += h; while (true);/计算高差闭合差double高差闭合差 = H

38、A + 高差和 - HB;/计算单位长度改正数,三角高程的权与距离的平方成反比double单位长度改正数 = -高差闭合差 / 水平距离平方和;/计算每点高程double H = HA;for (int j = 0; j < 高差集合.Count; j+) H += 高差集合j + 单位长度改正数 * 水平距离平方集合j;Console.WriteLine("第0点的高程H=1",j+2,H); Console.WriteLine("最后一个点的高程应该与B点的高程相同!"); class导线 /将ddd.mmss转为弧度staticpublicd

39、ouble DEG(double ang) int fuhao = (int)(ang / Math.Abs(ang); ang = Math.Abs(ang);int d = (int)ang;int m = (int)(ang * 100) - d * 100;double s = ang * 10000 - m * 100 - d * 10000;return (d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI; /高差计算,返回高差publicstaticdouble高差(double斜距,double垂直角,double仪器高

40、,double反光镜高,outdouble水平距离) double h = 斜距 * Math.Sin(垂直角) + 斜距 * Math.Cos(垂直角) / 6371000.0 * 斜距 * Math.Cos(垂直角) * (1 - 0.13) + 仪器高 - 反光镜高;水平距离 = 斜距*Math.Cos(垂直角);return h; (10)在如图所示的仅有一个连接角的附合导线中,已知M点、A点和B点的坐标,每个点的左角及每条边的水平距离,求每个点的坐标。using System;using System.Collections.Generic;using System.Text;nam

41、espace导线classProgram staticvoidMain(string args) Console.Write("请输入M点的X坐标=");double MX = double.Parse(Console.ReadLine();Console.Write("请输入M点的Y坐标=");double MY = double.Parse(Console.ReadLine();Console.Write("请输入A点的X坐标=");double AX = double.Parse(Console.ReadLine();Conso

42、le.Write("请输入A点的Y坐标=");double AY = double.Parse(Console.ReadLine();Console.Write("请输入B点的X坐标=");double BX = double.Parse(Console.ReadLine();Console.Write("请输入B点的Y坐标=");double BY = double.Parse(Console.ReadLine();/计算M到A的方位角double0 = 导线.方位角(MX, MY, AX, AY);List<double&g

43、t; 坐标增量X集合 = newList<double>();List<double> 坐标增量Y集合 = newList<double>();int i = 1;double坐标增量X和 = 0;double坐标增量Y和 = 0;double坐标增量X绝对值和 = 0;double坐标增量Y绝对值和 = 0;double水平距离和 = 0;do Console.Write("请输入0点到1点的水平距离S<直接回车结束输入>=",i,i+1);string str = Console.ReadLine();if (str =

44、"") break;double S = double.Parse(str);Console.Write("请输入0点的水平角<左角为正,右角为负>=", i);double = 导线.DEG(double.Parse(Console.ReadLine(); i+;/计算坐标增量double dx, dy;0 = 导线.坐标(0, 0, , S, 0, out dx, out dy);坐标增量X集合.Add(dx);坐标增量Y集合.Add(dy);坐标增量X和 += dx; ;坐标增量Y和 += dy; ;坐标增量X绝对值和 += Math.

45、Abs(dx);坐标增量Y绝对值和 += Math.Abs(dy);水平距离和 += S; while (true);/计算闭合差double闭合差X = AX + 坐标增量X和 - BX;double闭合差Y = AY + 坐标增量Y和 - BY;/计算单位长度改正数double X坐标单位长度改正数 = -闭合差X / 坐标增量X绝对值和;double Y坐标单位长度改正数 = -闭合差Y / 坐标增量Y绝对值和;/计算导线相对精度int f = (int)(水平距离和 / Math.Sqrt(闭合差X * 闭合差X + 闭合差Y * 闭合差Y);Console.WriteLine(&qu

46、ot;导线的相对精度为1/0",f);/计算每点坐标double X = AX;double Y = AY;for (int j = 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点的坐标相同!&qu

47、ot;); class导线 /将ddd.mmss转为弧度staticpublicdouble DEG(double ang) int fuhao = (int)(ang / Math.Abs(ang); ang = Math.Abs(ang);int d = (int)ang;int m = (int)(ang * 100) - d * 100;double s = ang * 10000 - m * 100 - d * 10000;return (d + m / 60.0 + s / 3600.0) * fuhao) / 180.0 * Math.PI; /计算方位角,返回弧度值public

48、staticdouble方位角(double x1, double y1, double x2, double y2) double deltaX = x2 - x1;double deltaY = y2 - y1;double angle = 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; return angle;

49、 /计算坐标,返回已知点到计算点的方位角publicstaticdouble坐标(double x0, double y0, double左角, double水平距离,double已知方位角,outdouble x,outdouble y) double方位角 = 已知方位角 + 左角 + Math.PI; /将方位角调整到0到2之间if (方位角 >= Math.PI * 2) 方位角 -= Math.PI * 2;if (方位角 < 0.0) 方位角 += Math.PI * 2; x = x0 + 水平距离 * Math.Cos(方位角); y = y0 + 水平距离 * M

50、ath.Sin(方位角);return方位角; (11)在如图所示的仅有一个连接角的附合导线中,已知M点、A点和B点的坐标,A点和B点的高程,每个点的左角及每条边的斜边、垂直角、仪器高和反光镜高,求每个点的坐标和高程。(提示:,D-斜边,-垂直角,-仪器高,-反光镜高,-大气折光系数)using System;using System.Collections.Generic;using System.Text;namespace导线classProgram staticvoidMain(string args) Console.Write("请输入M点的X坐标=");double MX = double.Parse(Console.ReadLine();Console.Write("请输入M点的Y坐标=");double MY = double.Parse(Console.ReadLine();Console.Write("请输入A点的X坐标=");double AX = double.Pars

温馨提示

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

评论

0/150

提交评论