大地测量计算与课程设计实习报告_第1页
大地测量计算与课程设计实习报告_第2页
大地测量计算与课程设计实习报告_第3页
大地测量计算与课程设计实习报告_第4页
大地测量计算与课程设计实习报告_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

课程编号: 课程性质:必修大地测量计算与实习实习报告学院: 测绘学院 专业: 测绘工程 地点: 珞珈山 班级: 0xx 组号: 3 姓名: xx 学号: 20xxxx 教师: 丁士俊、刘宗泉、苏新洲 黄海兰、向东 等 2010年07月01日 至 2009年07月16日目录前言- 2 -第一部分:大地测量外业- 2 -实习目的与要求- 2 -实习内容- 3 -第二部分:大地测量编程- 3 -实习目的与要求:- 3 -实例:- 4 -一、实测斜距化算至高斯平面距离。- 4 -二、高斯投影正反算- 6 -三、大地主题正反算(高斯平均引数+白塞尔)- 7 -四、平面坐标转换4参数计算- 9 -第三部分:实习体会与收获- 31 -前言大地测量计算与实习,是07级测绘工程专业A,B,C,D,E专业方向的学生的集中教学实习。通过该集中教学实习,不但使我们巩固课堂上学到的理论知识,也使我们的实际动手能力、仪器操作能力得到较大的锻炼和提高。通过大地测量的编程作业,熟悉并巩固大地主题解算,高斯投影变换等应用,为今后的工作、研究、学习等提供扎实的基础。第一部分:大地测量外业实习目的与要求1) 巩固上课所学到的理论知识,并运用到实践中;2) 加强学生的实际动手能力、仪器操作能力,以及处理紧急情况的应变能力;3) 锻炼学生的团队意识,以及学生的组织能力,团队融洽力;4) 掌握精密水准测量的测量方法,熟练掌握数字水准仪的使用方法;5) 巩固水准记录和高差计算等工作。实习内容 根据学院安排,我加入测绘学院07级07班内第三实习大队。在组长张红娟的指挥下开始二等水准的外业测量。外业工作时间段,正值酷暑天气。而二等水准测量要求精度很高,因此,气温的影响是不能忽略的。为了在有限的作业时间内完成测量任务,我们在领到仪器后就开始了一系列的训练:扶尺、读数、测距等。这些练习在实际测量中为我们节约了不少时间。在正式开工前,我们还完成了测量的准备工作。包括:1) 莱卡数字水准仪的I角检验。I角检校采用方法AI1I2B。即在较平坦地区选择两个适当距离的两点A,B放置尺垫,而将仪器在两尺之间进行读数。根据规范,用于一、二等水准测量的仪器i角不得大雨15。而这次的检校结果完全符合。具体结果见附表一。2) 水准尺的零点差校正。零点差校正,我们选择在三区游泳池对面的篮球场上进行。早上8点,篮球场上没人,在其东侧的长楼梯处进行选点:地面、楼梯2阶、楼梯4阶各一个点。每点之间的高差均在20-30 cm间,且保持稳定。仪器则架设在距三点距离均相等的稳定地面上。测量中,每个尺均在三个点上进行读数,两尺读完后为一测回。共进行两测回。结果计算后,零点差满足要求。具体结果见附表二正面。3) 水准点之记。在测量前一天,进行了测量前的踩点。我们组分配的点为:B2,B4,B5。其中,B2位于本部幼儿园东侧,老年活动中心对面的马路边,处三岔路口。B4位于行政楼旁的三岔路中心,政管院门前。B5位于未名湖边围栏处,绝望坡下。具体地点见附表三。开工后,我们选择在上午7点至11点,下午3点至6点半进行水准观测,这样可有效避免夏日的酷暑对仪器观测精度的影响,同时在观测中对仪器进行遮阳。路线选择方面,我们选择了以B2为起点,顺路直下,经过梅园餐馆绕至三岔路坡顶,然后顺路至B4,再由行政楼,下绝望坡,到B5,再穿过梅园宿舍区,从梅园食堂下,顺路返回B2,形成闭合环。该路线中,绝大多数路段均有树荫遮蔽酷暑,而且通视良好,有利于测量。整个外业测量为期一周,在工作期间,组内每人均侧满100站,满足实习要求。且每个闭合环的往、返测精度均符合规范要求。因此,本次外业工作已经满足实习要求。内业计算中,组员每人计算了一个闭合环,计算的环精度满足要求,所测数据均无超限。内业计算的一系列数据见附表。第二部分:大地测量编程实习目的与要求:1) 熟悉大地主题的相关解算公式,熟悉高斯投影的相关内容。2) 熟练使用编程语言进行相关编程作业。实例:一、 实测斜距化算至高斯平面距离。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace 距离归化 public partial class Form1 : Form static double a, b, c, e1, e2; public Form1() InitializeComponent(); private void button1_Click(object sender, EventArgs e) double s = Convert.ToDouble(textBox3.Text); double h1 = Convert.ToDouble(textBox7.Text); double h2 = Convert.ToDouble(textBox8.Text); string str1 = textBox2.Text; string str2 = str1.Substring(0, 2); string str3 = str1.Substring(3, 2); double B1 = Convert.ToDouble(str2) + Convert.ToDouble(str3) / 60 + Convert.ToDouble(Convert.ToDouble(str1) - Convert.ToDouble(str2) - Convert.ToDouble(str3) / 100) / 3600; str1 = textBox1.Text; str2 = str1.Substring(0, 2); str3 = str1.Substring(3, 2); double L1 = Convert.ToDouble(str2) + Convert.ToDouble(str3) / 60 + Convert.ToDouble(Convert.ToDouble(str1) - Convert.ToDouble(str2) - Convert.ToDouble(str3) / 100) / 3600; str1 = textBox5.Text; str2 = str1.Substring(0, 2); str3 = str1.Substring(3, 2); double B2 = Convert.ToDouble(str2) + Convert.ToDouble(str3) / 60 + Convert.ToDouble(Convert.ToDouble(str1) - Convert.ToDouble(str2) - Convert.ToDouble(str3) / 100) / 3600; str1 = textBox4.Text; str2 = str1.Substring(0, 2); str3 = str1.Substring(3, 2); double L2 = Convert.ToDouble(str2) + Convert.ToDouble(str3) / 60 + Convert.ToDouble(Convert.ToDouble(str1) - Convert.ToDouble(str2) - Convert.ToDouble(str3) / 100) / 3600; double W1, W2, N1, N2, Y1, Y2, M, N, R, Ym; B1 = B1 / (180 / Math.PI); B2 = B2 / (180 / Math.PI); L1 = L1 / (180 / Math.PI); L2 = L2 / (180 / Math.PI); W1 = Math.Sqrt(1 - e1 * Math.Sin(B1) * Math.Sin(B1); N1 = a / W1; Y1 = (N1 + h1) * Math.Cos(B1) * Math.Sin(L1); W2 = Math.Sqrt(1 - e1 * Math.Sin(B2) * Math.Sin(B2); N2 = a / W2; Y2 = (N1 + h2) * Math.Cos(B2) * Math.Cos(L2); M = a * (1 - e1) * Math.Pow(1 - e1 * Math.Sin(B1 + B2) / 2) * Math.Sin(B1 + B2) / 2), -1.5); N = a * Math.Pow(1 - e1 * Math.Sin(B1 + B2) / 2) * Math.Sin(B1 + B2) / 2), -0.5); R = Math.Sqrt(M * N); Ym = (Y1 + Y2) / 2; double m = (1 + Ym * Ym / (2 * R * R) + (Y1 - Y2) * (Y1 - Y2) / (24 * R * R) + Math.Pow(Ym / R, 4) / 24) * s; textBox6.Text = m.ToString(); private void radioButton1_CheckedChanged(object sender, EventArgs e) a = 6378137.000000000; e1 = 0.006693421622966; b = a * Math.Sqrt(1 - e1); e2 = e1 / (1 - e1); c = a * Math.Sqrt(1 + e2); 二、 高斯投影正反算计算公式:1.当将克拉索夫斯基椭球带入计算式,可得到正算公式:x=6367558.4969B-a0-0.5+(a4+a6l2)l2l2NsinBcosBy=1+(a3+a5l2)l2lNcosB其中:l=L-L0 N=6399698.902-21562.267-108.973-0.612cos2Bcos2Bcos2B a0=32140.404-135.3302-0.7092-0.0040cos2Bcos2Bcos2B a4=0.25+0.00252cos2Bcos2B-0.04166 a6=(0.166cos2B-0.084)cos2B a3=0.3333333+0.001123cos2Bcos2B-0.16666667 a5=0.0083-0.1667-0.1968+0.0040cos2Bcos2Bcos2B2.反算公式为:B=Bf-1-b4-0.12Z2Z2Z2b2l=1-b3-b5Z2Z2Z2L=L0+l其中:Bf=+50221746+293622+2350+22cos2cos2cos210-10sincos=x6367558.4969Z=y/(NfcosBf)Nf=63995698.902-21562.267-108.973-0.612cos2Bfcos2Bfcos2Bfb2=0.5+0.003369cos2BfsinBfcosBfb3=0.333333-(0.166667-0.001123cos2Bf)cos2Bfb4=0.25+(0.16161+0.00562cos2Bf)cos2Bfb5=0.2-(0.16667-0.0088cos2Bf)cos2Bf三、 大地主题正反算(高斯平均引数+白塞尔)计算公式:高斯平均引数正算公式为:高斯平均引数反算公式为:白塞尔大地主题正算公式:中间量:W1=1-e2sin2B1 , sinu1=sinB11-e2W1, cosu1=cosB1W1辅助函数:sinA0=cosu1sinA1, cot1=cosu1cosA1sinu1sin21=2cot1cot21+1, cos21=cot21-1cot21+1球面长度:0=S-B+C cos21sin211A=0+B+5Ccos21+0sin2(1+0)A经差改正数:=+sin21+0-sin21sinA0终点大地坐标及大地方位角:sinu2=sinu1cos+cosu1cosA1sinB2=arctansinu21-e21-sin2u2=arctansinA1sincosu1cos-sinu1sincosA1L2=L1+-A2=arctancosu1sinA1cosu1coscosA1-sinu1sin白塞尔大地主题反算公式:辅助计算:W1=1-e2sin2B1, W2=1-e2sin2B2sinu1=sinB11-e2W1, sinu2=sinB21-e2W2cosu1=cosB1W1, cosu2=cosB2W2L=L2-L1a1=sinu1sinu2, a2=cosu1 cosu2b1=cosu1sinu2, b2=sinu1cosu2采用迭代法同时计算起点大地方位角、球面长度及经差 =l+第一次趋近,取=0:p=cosu2sin, q=b1- b2cosA1=arctanpqsin=psinA1+qcosA1, cos=a1+a2cos=arctansincossinA0=cosu1sinA1, x=2a1-cos2A0cos=-xsinsinA0将计算得到的 再带回计算经差,直到最后两次相同或小于给定的允许值。大地线长y=cos2A0-2x2cosS=A+(Bx+Cy)sin反方位角A2=arctan(cosu1sin b1cos-b2)四、 平面坐标转换4参数计算计算方法:采用最小二乘理论,对所给的5个点的新旧坐标计算得到的转换参数进行平差处理。平差方法采用间接平差。 以上三个程序我用C#语言编写,为了美观,使用了一个程序囊括了以上三个程序。下面附上我编写的代码,以及程序运行图。主程序入口:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace 程序合集 public partial class Form1 : Form public Form1() InitializeComponent(); private void button4_Click(object sender, EventArgs e) this.Close(); private void button1_Click(object sender, EventArgs e) 大地主题解算 a = new 大地主题解算(); a.Show(); private void button2_Click(object sender, EventArgs e) 高斯投影正反算 b = new 高斯投影正反算(); b.Show(); private void button3_Click(object sender, EventArgs e) 平面坐标转换 c = new 平面坐标转换(); c.Show(); 平面坐标转换参数计算:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace 程序合集 public partial class 平面坐标转换 : Form public 平面坐标转换() InitializeComponent(); / / 矩阵乘法 / / / / private double, MultiplyMatrix(double, firstMatrix, double, secondMatrix) double, resultMatrix = new doublefirstMatrix.GetLength(0), secondMatrix.GetLength(1); /判断相乘矩阵是否合法,即第一个矩阵的列要等于第二个矩阵的行 if (firstMatrix.GetLength(1) != secondMatrix.GetLength(0) return null; /求结果矩阵 for (int rowIndex = 0; rowIndex firstMatrix.GetLength(0); rowIndex+) for (int colIndex = 0; colIndex secondMatrix.GetLength(1); colIndex+) /初始化结果矩阵的元素 resultMatrixrowIndex, colIndex = 0; for (int i = 0; i firstMatrix.GetLength(1); i+) /求结果矩阵的元素值 resultMatrixrowIndex, colIndex += firstMatrixrowIndex, i * secondMatrixi, colIndex; return resultMatrix; / / 求逆矩阵 / / / private double, Athwart(double, dMatrix) /获取矩阵的行数 int Level = dMatrix.GetLength(1); double, dReverseMatrix = new doubleLevel, 2 * Level; /初始化矩阵Level(2*Level) for (int i = 0; i Level; i+) for (int j = 0; j 2 * Level; j+) if (j Level) dReverseMatrixi, j = dMatrixi, j; else if (j - Level = i) dReverseMatrixi, j = 1; else dReverseMatrixi, j = 0; for (int i = 0, j = 0; i Level & j Level; i+, j+) if (dReverseMatrixi, j = 0) if (i = Level - 1) return null; int m = i + 1; for (; dMatrixm, j = 0; m+) if (m = Level - 1) return null; if (m = Level) return null; else /把i行和m行相加 for (int n = j; n 2 * Level; n+) dReverseMatrixi, n += dReverseMatrixm, n; double temp = dReverseMatrixi, j; if (temp != 1) /把i行数据,变成以1开始的一行数据 for (int n = j; n i; s-) temp = dReverseMatrixs, j; for (int t = j; t = 0; i-) for (int j = i + 1; j Level; j+) if (dReverseMatrixi, j != 0) double tmp = dReverseMatrixi, j; for (int n = j; n 2 * Level; n+) dReverseMatrixi, n -= (tmp * dReverseMatrixj, n); /返回逆矩阵 double, dReturn = new doubleLevel, Level; for (int i = 0; i Level; i+) for (int j = 0; j Level; j+) dReturni, j = dReverseMatrixi, j + Level; return dReturn; / / 矩阵转置 / / / private double, zhuanzhi(double, Matrix) double, temp = new doubleMatrix.GetLength(1), Matrix.GetLength(0); for (int rowIndex = 0; rowIndex Matrix.GetLength(0); rowIndex+) for (int i = 0; i Matrix.GetLength(1); i+) tempi, rowIndex = MatrixrowIndex, i; return temp; / / 矩阵减法 / / / / / private double, SubMatrix(double, A1, double, A2) /判断矩阵的长短是否一致 int a1 = A1.GetLength(0);int a3=A1.GetLength(1); int a2 = A2.GetLength(0); if (a1 != a2) return null; /矩阵相减 double, B = new doublea1,a3; for (int i = 0; i a1; i+) for (int j = 0; j A1.GetLength(1); j+) Bi, j = A1i, j - A2i, j; return B; / / 矩阵对应行列式的值 / / / private double MatrixValue(double, MatrixList) int Level = MatrixList.GetLength(1); double, dMatrix = new doubleLevel, Level; for (int i = 0; i Level; i+) for (int j = 0; j Level; j+) dMatrixi, j = MatrixListi, j; int sign = 1; for (int i = 0, j = 0; i Level & j i,切dMatrixm, j!=0)进行交换 if (dMatrixi, j = 0) if (i = Level - 1) return 0; int m = i + 1; /获取一个dMatrixm, j不为为0的行 for (; dMatrixm, j = 0; m+) if (m = Level - 1) return 0; /判断是否达到矩阵的最大行,若是,则返回0 /把i行和m行调换 double temp; for (int n = j; n i; s-) tmp = dMatrixs, j; /j行后面的所有行 for (int t = j; t Level; t+) dMatrixs, t -= dMatrixi, t * (tmp / dMatrixi, j); double result = 1; for (int i = 0; i Level; i+) if (dMatrixi, i != 0) result *= dMatrixi, i; else return 0; return sign * result; private void button1_Click(object sender, EventArgs e) double, B = new double10, 61,2496680.3320,508207.1730,0,0,0,0,0,0,1,508207.1730,2496680.3320, 1,2502077.0830,516686.0420,0,0,0,0,0,0,1,516686.0420,2502077.0830, 1,2505568.5170,510747.0770,0,0,0,0,0,0,1,510747.0770,2505568.5170, 1,2517684.4710,491942.3170,0,0,0,0,0,0,1,491942.3170,2517684.4710, 1,2524192.3650,522975.4290,0,0,0,0,0,0,1,522975.4290,2524192.3650; double, l = new double10, 1 21931.9510 , 117563.2290 , 27183.0990 , 126133.0350 , 30775.4590 , 120254.5690 , 43210.8240 , 101659.4900 , 49187.7330 , 132799.2230 ; double x0 = 0, y0 = 0, k1 = 0, k2 = 0; double, x = new double6, 1 x0 , k1 , k2 , y0 , k1 , k2 ; double, Bt = zhuanzhi(B); double, Nbb = MultiplyMatrix(Bt, B); double, W = MultiplyMatrix(Bt, l); double, Nbb1 = Athwart(Nbb); x = MultiplyMatrix(Nbb1, W

温馨提示

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

评论

0/150

提交评论