常用测绘C#程序设计(源代码)_第1页
常用测绘C#程序设计(源代码)_第2页
常用测绘C#程序设计(源代码)_第3页
常用测绘C#程序设计(源代码)_第4页
常用测绘C#程序设计(源代码)_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

常用测量程序设计(1)用全站仪在A点观测了B点斜边和垂直角,求A到B的高差。(提示:,D-斜边,-垂直角,-仪器高,-反光镜高,-大气折光系数)using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1 class Application static void Main(string args) Console.Write(请输入斜边=); double D = double.Parse(Console.ReadLine(); Console.Write(请输入垂直角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 / .0 * D / .0 * Math.Cos(a) * Math.Cos(a) / 2.0 + i - v; Console.WriteLine(高差为0,h); /将ddd.mmss转为弧度 static public double 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; (2)如图所示,已知A点的坐标及A点到B点的边长及方位角,计算B点的坐标。using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1 class Application static void Main(string args) Console.Write(请输入A点的X坐标=); double XA = double.Parse(Console.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.Cos(a); double YB = YA + S*Math.Sin(a); Console.WriteLine(B点的坐标(0,1),XB,YB); /将ddd.mmss转为弧度 static public double 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; (3)如图所示,已知A点和B点的坐标,计算A点到的边长及方位角。using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1 class Application static void Main(string args) Console.Write(请输入A点的X坐标=); double XA = double.Parse(Console.ReadLine(); 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, YA, XB, YB); Console.WriteLine(AB间的距离=0,从A到B的方位角=1,S,DMS(a); /将弧度转为ddd.mmss static public double 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 - m) * 60.0; return (d + m / 100.0 + s / 10000.0) * fuhao; /计算方位角,返回弧度值 public static double 方位角(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.) angle = Math.Atan2(deltaY, deltaX); if (angle 0) angle += Math.PI; if (deltaY 2 * Math.PI) a0 -= 2 * Math.PI; List 导线转角集合 = new List(); 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) a0 -= 2 * Math.PI; else if (a0 0.0) a0 += 2 * Math.PI; Console.WriteLine(第0条边的方位角为1,i+,DMS(a0); /将弧度转为ddd.mmss static public double 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 - m) * 60.0; return (d + m / 100.0 + s / 10000.0) * fuhao; /将ddd.mmss转为弧度 static public double 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; (5)在如图所示的支中导线,已知A点和M点的坐标及每个左角和每条边长,求每个点的坐标。using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1 class Application static void Main(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(); Console.Write(请输入A点的y坐标=); double Ay = double.Parse(Console.ReadLine(); List 导线转角集合 = new List(); List 导线边长集合 = new List(); int i = 1; do Console.Write(请输入第0个转角的水平角左角为正,右角为负=,i); string str = Console.ReadLine(); if (str != ) 导线转角集合.Add(DEG(double.Parse(str); else break; Console.Write(请输入第0条边长值=, 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 2 * Math.PI) a0 -= 2 * Math.PI; x0 = x0 + 导线边长集合j * Math.Cos(a0); y0 = y0 + 导线边长集合j * Math.Sin(a0); Console.WriteLine(P0点的坐标是:1,2,j+2,x0,y0); /将ddd.mmss转为弧度 static public double 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 static double 方位角(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.) angle = Math.Atan2(deltaY, deltaX); if (angle 0) angle += Math.PI; if (deltaY 0.0) angle += Math.PI; return angle; (6)在如图所示的单一附合水准路线中,已知A点和B点的高程及每段的长度和高差,求每个点的高程。using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1 class Application static void Main(string args) Console.Write(请输入A点的高程=); double Ha = double.Parse(Console.ReadLine(); Console.Write(请输入B点的高程=); double Hb = double.Parse(Console.ReadLine(); List 路线段长度集合 = new List(); List 路线段高差集合 = new List(); int i = 1; do Console.Write(请输入第0段长度公里为单位=,i); string str = 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; w = w - (Hb - Ha); /闭合差 double v = -w / 总长度; /每公里改正数 /计算每个点的高程 double H = Ha; for (int j = 0; j 0.) angle = Math.Atan2(deltaY, deltaX); if (angle 0) angle += Math.PI; if (deltaY 0.0) angle += Math.PI; return angle; /计算距离 public static double 距离(double x1, double y1, double x2, double y2) return Math.Sqrt(x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1); (8)在如图所示的单个多边形中,已知每个点的坐标,求多边形的面积。提示面积的计算公式为:using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1 class Application static void Main(string args) List 多边形X坐标集 = new List(); List 多边形Y坐标集 = new List(); int i = 1; do Console.Write(请输入第0点的x坐标=,i); string str = Console.ReadLine(); if (str != ) 多边形X坐标集.Add(double.Parse(str); else break; Console.Write(请输入第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 - 1; Console.WriteLine(多边形的面积=0,Math.Abs(area * 0.5); (9)在如图所示的仅有一个连接角的附合导线中,已知A点和B点的高程及每条边的斜边、垂直角、仪器高和反光镜高,求每个点的高程。(提示:,D-斜边,-垂直角,-仪器高,-反光镜高,-大气折光系数)using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 导线 class Program static void Main(string args) Console.Write(请输入A点的高程=); double HA = double.Parse(Console.ReadLine(); Console.Write(请输入B点的高程=); double HB = double.Parse(Console.ReadLine(); List 高差集合 = new List(); List 水平距离平方集合 = new List(); int i = 1; double 高差和 = 0; double 水平距离平方和 = 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的仪器高=, 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 高差闭合差 = HA + 高差和 - 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转为弧度 static public double 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 static double 高差(double 斜距,double 垂直角,double 仪器高,double 反光镜高,out double 水平距离) double h = 斜距 * Math.Sin(垂直角) + 斜距 * Math.Cos(垂直角) / .0 * 斜距 * Math.Cos(垂直角) * (1 - 0.13) + 仪器高 - 反光镜高; 水平距离 = 斜距*Math.Cos(垂直角); return h; (10)在如图所示的仅有一个连接角的附合导线中,已知M点、A点和B点的坐标,每个点的左角及每条边的水平距离,求每个点的坐标。using System;using System.Collections.Generic;using System.Text;namespace 导线 class Program static void Main(string args) Console.Write(请输入M点的X坐标=); double MX = double.Parse(Con

温馨提示

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

评论

0/150

提交评论