单向后方交会实验报告
单像空间后方交会实习报告
摄影测量学单像空间后方交会实习报告一、实习目的1.掌握空间后方交会的定义和实现算法(1)定义:空间后方交会是以单幅影像为基础,从该影像所覆盖地面范围内若干控制点的已知地面坐标和相应点的像坐标量测值出发,根据共线条件方程,解求该影像在航空摄影时刻的外方位元素Xs,Ys,Zs,φ,ω,κ。
(2)算法:由于每一对像方和物方共轭点可列出2个方程,因此若有3个已知地面坐标的控制点,则可列出6个方程,解求6个外方位元素的改正数△Xs,△Ys,△Zs,△φ,△ω,△κ。
实际应用中为了提高解算精度,常有多余观测方程,通常是在影像的四个角上选取4个或均匀地选择更多的地面控制点,因而要用最小二乘平差方法进行计算。
2.了解摄影测量平差的基本过程(1)获取已知数据。
从摄影资料中查取影像比例尺1/m,平均摄影距离(航空摄影的航高)、内方位元素x0,y0,f;获取控制点的空间坐标X,Y,Z。
(2)量测控制点的像点坐标并进行必要的影像坐标系统误差改正,得到像点坐标。
(3)确定未知数的初始值。
单像空间后方交会必须给出待定参数的初始值,在竖直航空摄影且地面控制点大体对称分布的情况下,Xs0和Ys0为均值,Zs0为航高,φ、ω、κ的初值都设为0。
或者κ的初值可在航迹图上找出或根据控制点坐标通过坐标正反变换求出。
(4)计算旋转矩阵R。
利用角元素近似值计算方向余弦值,组成R阵。
(5)逐点计算像点坐标的近似值。
利用未知数的近似值按共线条件式计算控制点像点坐标的近似值(x),(y)。
(6)逐点计算误差方程式的系数和常数项,组成误差方程式。
(7)计算法方程的系数矩阵ATA与常数项ATL,组成法方程式。
(8)解求外方位元素。
根据法方程,解求外方位元素改正数,并与相应的近似值求和,得到外方位元素新的近似值。
(9)检查计算是否收敛。
将所求得的外方位元素的改正数与规定的限差比较,通常对φ,ω,κ的改正数△φ,△ω,△κ给予限差,通常为0.000001弧度,当3个改正数均小于0.000001弧度时,迭代结束。
空间后方交会程序设计
单片空间后方交会程序设计实验报告专业:测绘工程班级:081姓名:张发伟学号:09[一]、实习任务:用C或VC++语言实现单片后方交汇的计算。
[二]、实习目的:1.深入理解单片空间后方交会的原理;2.在有多余观测情况下,用最小二乘平差方法编程实现解求影像外方位元素的过程;3.通过上机调试程序加强动手能力的培养。
[三]、实习原理:以单幅影象为基础,从该影象所覆盖地面范围内若干控制点的已知地面坐标和相应点的像坐标量测值出发,根据共线条件方程,求解该影象在航空摄影时刻的像片外方位元素Xs,Ys,Zs,ф,ω,κ.共线条件方程如下:x-x0=-f*[a1(X-Xs)+b1(Y-Ys)+c1(Z-Zs)]/[a3(X-Xs)+b3(Y-Ys)+c3(Z-Zs)] y-y0=-f*[a2(X-Xs)+b2(Y-Ys)+c2(Z-Zs)]/[a3(X-Xs)+b3(Y-Ys)+c3(Z-Zs)]x,y为像点的像平面坐标;x0,y0,f为影像的外方位元素;Xs,Ys,Zs为摄站点的物方空间坐标;X,Y,Z为物方点的物方空间坐标;[四]、程序框图:输入原始数据归算像点坐标x,,y计算和确定初值X s 0, Y s 0, Z s 0, φ0,ω0,κ0组成旋转矩阵R计算(x ),(y )和l x ,l y逐点组成误差方程并法化所有点完否? 解法方程,求未知数改正数 计算改正后外方位元素未知数改正数<限差否?整理并输出计算结果正常输出迭代次数小于限差否? 输出中间结果和出错信息非正常结束[五]、实验数据:4个地面控制点的地面坐标及其对应像点的像片坐标:[六]、结果输出:已知条件:像点坐标x,y:-53.4 82.21-14.78 -76.6310.46 64.43153.24 -86.15地点坐标Xa,Ya,Za:37631.1 31324.5 728.6939101 24935 2386.540426.5 30319.8 757.31-68.99 36589.4 25273.3摄影比例尺:1:50000内方位元素:x0=y0=0 f=153.24mm计算结果:旋转矩阵:0.997709 0.0675334 0.00398399-0.0675254 0.997715 -0.00211178-0.0041175 0.00183792 0.99999像点坐标位:(单位:mm)-86.15 -68.99-53.41 82.21-14.78 -76.6310.47 64.43外方位元素:Xs=39795.435 精度为:1.1254813Ys=27476.479 精度为:1.2437625Zs=7572.6929 精度为:0.48380521q=-0.0039840098 精度为:0.00018182003w=0.0021117837 精度为:0.00015959235k=-0.067576934 精度为:7.2440432e-005迭代次数:4Press any key to continue[七]、实习总结:掌握运用程序设计实现单片后方交汇的计算,了解在多余观测情况下,用最小二乘平差方法计算相片外方位元素,及其相关精度。
摄影测量学后方交会matlab实习报告
摄影测量原理单张影像后方交会实习目录一实习目的 (3)二实习原理 (3)1. 间接平差 (3)2. 共线方程 (3)3. 单向空间后方交会 (4)三计算流程 (4)1. 求解步骤 (4)2.计算机框图 (4)四程序实现 (5)五结果分析 (6)1.外方位元素 (6)2.误差 (6)3.旋转矩阵R (7)六实习体会 (7)1. 平台的选择 (7)2.问题的解决 (7)3.心得体会 (8)七代码展示 (8)一实习目的为了增强同学们对后方交会公式的理解,培养同学们对迭代循环编程的熟悉感,本次摄影测量课间实习内容定为用C语言或其他程序编写单片空间后方交会程序,最终输出像点坐标、地面坐标、单位权中误差、外方位元素及其精度。
已知四对点的影像坐标和地面坐标如下。
内方位元素fk=153.24mm,x0=y0=0。
本次实习,我使用了matlab2014进行后方交会程序实现。
结果与参考答案一致,精度良好。
二实习原理题干中有四个控制点在地面摄影测量坐标系中的坐标和对应的像点坐标,由此可列出8个误差方程,存在2个多余观测(n=2)。
故可利用间接平差的最小二乘法则求解。
由于共线方程是非线性函数模型,为了方便计算,需要将其“线性化”。
但如果仅取泰勒级数展开式的一次项,未知数的近似值改正是不精确的。
因此必须采用迭代趋近法计算,直到外方位元素的改正值小于限差。
1.间接平差间接平差为平差计算最常用的方法。
在确定多个未知量的最或然值时,选择它们之间不存在任何条件关系的独立量作为未知量组成用未知量表达测量的函数关系、列出误差方程式,按最小二乘法原理求得未知量的最或然值的平差方法。
在一个间接平差问题中,当所选的独立参数X个数与必要观测值t个数相等时,可将每个观测值表达成这t个参数的函数,组成观测方程。
函数模型为:L = BX + d。
2.共线方程共线方程是中心投影构像的数学基础,也是各种摄影测量处理方法的重要理论基础。
式中:x,y 为像点的像平面坐标;x0,y0,f 为影像的内方位元素;XS,YS,ZS 为摄站点的物方空间坐标;XA,YA,ZA 为物方点的物方空间坐标;ai,bi,ci (i = 1,2,3)为影像的3 个外方位角元素组成的9 个方向余弦。
摄影测量学空间后方交会实验报告
摄影测量学实验报告实验一、单像空间后方交会学院:建测学院班级:测绘082姓名:肖澎学号: 15一.实验目的1.深入了解单像空间后方交会的计算过程;2.加强空间后方交会基本公式和误差方程式,法线方程式的记忆;3.通过上机调试程序加强动手能力的培养。
二.实验原理以单幅影像为基础,从该影像所覆盖地面范围内若干控制点和相应点的像坐标量测值出发,根据共线条件方程,求解该影像在航空摄影时刻的相片外方位元素。
三.实验内容1.程序图框图2.实验数据(1)已知航摄仪内方位元素f=153.24mm,Xo=Yo=0。
限差0.1秒(2)已知4对点的影像坐标和地面坐标:3.实验程序using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication3{class Program{static void Main(){//输入比例尺,主距,参与平参点的个数Console.WriteLine("请输入比例尺分母m:\r");string m1 = Console.ReadLine();double m = (double)Convert.ToSingle(m1);Console.WriteLine("请输入主距f:\r");string f1 = Console.ReadLine();double f = (double)Convert.ToSingle(f1);Console.WriteLine("请输入参与平差控制点的个数n:\r");string n1 = Console.ReadLine();int n = (int)Convert.ToSingle(n1);//像点坐标的输入代码double[] arr1 = new double[2 * n];//1.像点x坐标的输入for (int i = 0; i < n; i++){Console.WriteLine("请输入已进行系统误差改正的像点坐标的x{0}值:\r", i+1);string u = Console.ReadLine();for (int j = 0; j < n; j += 2){arr1[j] = (double)Convert.ToSingle(u);}}//2.像点y坐标的输入for (int i = 0; i < n; i++){Console.WriteLine("请输入已进行系统误差改正的像点坐标的y{0}值:\r", i+1);string v = Console.ReadLine();for (int j = 1; j < n; j += 2){arr1[j] = (double)Convert.ToSingle(v);}}//控制点的坐标输入代码double[,] arr2 = new double[n, 3];//1.控制点X坐标的输入for (int j = 0; j < n; j++){Console.WriteLine("请输入控制点在地面摄影测量坐标系的坐标的X{0}值:\r", j+1);string u = Console.ReadLine();arr2[j , 0] = (double)Convert.ToSingle(u);}//2.控制点Y坐标的输入for (int k = 0; k < n; k++){Console.WriteLine("请输入控制点在地面摄影测量坐标系的坐标的Y{0}值:\r", k+1);string v = Console.ReadLine();arr2[k , 1] = (double)Convert.ToSingle(v);}//3.控制点Z坐标的输入for (int p =0; p < n; p++){Console.WriteLine("请输入控制点在地面摄影测量坐标系的坐标的Z{0}值:\r", p+1);string w = Console.ReadLine();arr2[p , 2] = (double)Convert.ToSingle(w);}//确定外方位元素的初始值//1.确定Xs的初始值:double Xs0 = 0;double sumx = 0;for (int j = 0; j < n; j++){double h = arr2[j, 0];sumx += h;}Xs0 = sumx / n;//2.确定Ys的初始值:double Ys0 = 0;double sumy = 0;for (int j = 0; j < n; j++){double h = arr2[j, 1];sumy += h;}Ys0 = sumy / n;//3.确定Zs的初始值:double Zs0 = 0;double sumz = 0;for (int j = 0; j <= n - 1; j++){double h = arr2[j, 2];sumz += h;}Zs0 = sumz / n;doubleΦ0 = 0;doubleΨ0 = 0;double K0 = 0;Console.WriteLine("Xs0,Ys0,Zs0,Φ0,Ψ0,K0的值分别是:{0},{1},{2},{3},{4},{5}", Xs0, Ys0, Zs0, 0, 0, 0);//用三个角元素的初始值按(3-4-5)计算各方向余弦值,组成旋转矩阵,此时的旋转矩阵为单位矩阵I:double[,] arr3 = new double[3, 3];for (int i = 0; i < 3; i++)arr3[i, i] = 1;}double a1 = arr3[0, 0]; double a2 = arr3[0, 1]; double a3 = arr3[0, 2];double b1 = arr3[1, 0]; double b2 = arr3[1, 1]; double b3 = arr3[1, 2];double c1 = arr3[2, 0]; double c2 = arr3[2, 1]; double c3 = arr3[2, 2];/*利用线元素的初始值和控制点的地面坐标,代入共线方程(3-5-2),* 逐点计算像点坐标的近似值*///1.定义存放像点近似值的数组double[] arr4 = new double[2 * n];//----------近似值矩阵//2.逐点像点坐标计算近似值//a.计算像点的x坐标近似值(x)for (int i = 0; i < 2 * n; i += 2){for (int j = 0; j < n; j++){arr4[i] = -f * (a1 * (arr2[j, 0] - Xs0) + b1 * (arr2[j, 1] - Ys0) + c1 * (arr2[j, 2] - Zs0)) / (a3 * (arr2[j, 0] - Xs0) + b3 * (arr2[j, 1] - Ys0) + c3 * (arr2[j, 2] - Zs0)); }}//b.计算像点的y坐标近似值(y)for (int i = 1; i < 2 * n; i += 2){for (int j = 0; j < n; j++){arr4[i] = -f * (a2 * (arr2[j, 0] - Xs0) + b2 * (arr2[j, 1] - Ys0) + c2 * (arr2[j, 2] - Zs0)) / (a3 * (arr2[j, 0] - Xs0) + b3 * (arr2[j, 1] - Ys0) + c3 * (arr2[j, 2] - Zs0)); }}//逐点计算误差方程式的系数和常数项,组成误差方程:double[,] arr5 = new double[2 * n, 6]; //------------系数矩阵(A)//1.计算dXs的系数for (int i = 0; i < 2 * n; i += 2){arr5[i, 0] = -1 / m; //-f/H == -1/m}//2.计算dYs的系数for (int i = 1; i < 2 * n; i += 2){arr5[i, 1] = -1 / m; //-f/H == -1/m}//3.a.计算误差方程式Vx中dZs的系数for (int i = 0; i < 2 * n; i += 2)arr5[i, 2] = -arr1[i] / m * f;}//3.b.计算误差方程式Vy中dZs的系数for (int i = 1; i < 2 * n; i += 2){arr5[i, 2] = -arr1[i] / m * f;}//4.a.计算误差方程式Vx中dΦ的系数for (int i = 0; i < 2 * n; i += 2){arr5[i, 3] = -f * (1 + arr1[i] * arr1[i] / f * f);}//4.a.计算误差方程式Vy中dΦ的系数for (int i = 1; i < 2 * n; i += 2){arr5[i, 3] = -arr1[i - 1] * arr1[i] / f;}//5.a.计算误差方程式Vx中dΨ的系数for (int i = 0; i < 2 * n; i += 2){arr5[i, 4] = -arr1[i] * arr1[i + 1] / f;}//5.b.计算误差方程式Vy中dΨ的系数for (int i = 1; i < 2 * n; i += 2){arr5[i, 4] = -f * (1 + arr1[i] * arr1[i] / f * f);}//6.a.计算误差方程式Vx中dk的系数for (int i = 0; i < 2 * n; i += 2){arr5[i, 5] = arr1[i + 1];}//6.b.计算误差方程式Vy中dk的系数for (int i = 1; i < 2 * n; i += 2){arr5[i, 5] = -arr1[i - 1];}//定义外方位元素组成的数组double[] arr6 = new double[6];//--------------------外方位元素改正数矩阵(X)//定义常数项元素组成的数组double[] arr7 = new double[2 * n];//-----------------常数矩阵(L)//计算lx的值for (int i = 0; i < 2 * n; i += 2)arr7[i] = arr1[i] - arr4[i]; //将近似值矩阵的元素代入}//计算ly的值for (int i = 1; i <= 2 * (n - 1); i += 2){arr7[i] = arr1[i] - arr4[i]; //将近似值矩阵的元素代入}/* 对于所有像点的坐标观测值,一般认为是等精度量测,所以权阵P为单位阵.所以X=(ATA)-1ATL *///1.计算ATdouble[,] arr5T = new double[6, 2 * n];for (int i = 0; i < 6; i++){for (int j = 0; j < 2 * n; j++){arr5T[i, j] = arr5[j, i];}}//A的转置与A的乘积,存放在arr5AA中double[,] arr5AA = new double[6, 6];for (int i = 0; i < 6; i++){for (int j = 0; j < 6; j++){arr5AA[i, j] = 0;for (int l = 0; l < 2 * n; l++){arr5AA[i, j] += arr5T[i, l] * arr5[l, j];}}}nijuzhen(arr5AA);//arr5AA经过求逆后变成原矩阵的逆矩阵//arr5AA * arr5T存在arr5AARATdouble[,] arr5AARAT = new double[6, 2 * n];for (int i = 0; i < 6; i++){for (int j = 0; j < 2 * n; j++){arr5AARAT[i, j] = 0;for (int p = 0; p < 6; p++){arr5AARAT[i, j] += arr5AA[i, p] * arr5T[p, j];}}}//计算arr5AARAT x L,存在arrX中double[] arrX = new double[6];for (int i = 0; i < 6; i++){for (int j = 0; j < 1; j++){arrX[i] = 0;for (int vv = 0; vv < 6; vv++){arrX[i] += arr5AARAT[i, vv] * arr7[vv];}}}//计算外方位元素值double Xs, Ys, Zs, Φ, Ψ, K;Xs = Xs0 + arrX[0];Ys = Ys0 + arrX[1];Zs = Zs0 + arrX[2];Φ = Φ0 + arrX[3];Ψ = Ψ0 + arrX[4];K = K0 + arrX[5];for (int i = 0; i <= 2; i++){Xs += arrX[0];Ys += arrX[1];Zs += arrX[2];Φ += arrX[3];Ψ += arrX[4];K += arrX[5];}Console.WriteLine("Xs,Ys,Zs,Φ,Ψ,K的值分别是:{0},{1},{2},{3},{4},{5}", Xs0, Ys0, Zs0, Φ, Ψ, K);Console.Read();}//求arr5AA的逆矩public static double[,] nijuzhen(double[,] a) {double[,] B = new double[6, 6];int i, j, k;int row = 0;int col = 0;double max, temp;int[] p = new int[6];for (i = 0; i < 6; i++){p[i] = i;B[i, i] = 1;}for (k = 0; k < 6; k++){//找主元max = 0; row = col = i;for (i = k; i < 6; i++){for (j = k; j < 6; j++){temp = Math.Abs(a[i, j]);if (max < temp){max = temp;row = i;col = j;}}}//交换行列,将主元调整到k行k列上if (row != k){for (j = 0; j < 6; j++){temp = a[row, j];a[row, j] = a[k, j];a[k, j] = temp;temp = B[row, j];B[row, j] = B[k, j];B[k, j] = temp;i = p[row]; p[row] = p[k]; p[k] = i; }if (col != k){for (i = 0; i < 6; i++){temp = a[i, col];a[i, col] = a[i, k];a[i, k] = temp;}}//处理for (j = k + 1; j < 6; j++){a[k, j] /= a[k, k];}for (j = 0; j < 6; j++){B[k, j] /= a[k, k];a[k, k] = 1;}for (j = k + 1; j < 6; j++){for (i = 0; j < k; i++){a[i, j] -= a[i, k] * a[k, j];}for (i = k + 1; i < 6; i++){a[i, j] -= a[i, k] * a[k, j];}}for (j = 0; j < 6; j++){for (i = 0; i < k; i++){B[i, j] -= a[i, k] * B[k, j];}for (i = k + 1; i < 6; i++){B[i, j] -= a[i, k] * B[k, j];}for (i = 0; i < 6; i++) {a[i, k] = 0;a[k, k] = 1;}}//恢复行列次序for (j = 0; j < 6; j++){for (i = 0; i < 6; i++) {a[p[i], j] = B[i, j]; }}for (i = 0; i < 6; i++){for (j = 0; j < 6; j++) {a[i, j] = a[i, j];}}return a;}4.实验结果四.实验总结此次实验让我深入了解单像空间后方交会的计算过程,加强了对空间后方交会基本公式和误差方程式,法线方程式的记忆。
后方交会实验报告
摄影测量学实验报告实验名称:空间后方交会班级:测绘工程12-1一.实验目的掌握运用空间后方交会求解外方元素的过程。
学会运用空间后方交会的原理,根据所给控制点的地面摄影测量坐标系坐标以及相应的像平面坐标系中的坐标,利用已知公式和计算机编程语言实现空间后方交会的过程,完成外方位元素的求解。
二.实验工具个人电脑,visual basic6.0三.实验源代码Private Sub Command1_Click()Dim c(),kx(),ky(),l(),aa(),a11(),a12(),a13(),a14(),a15(),a16(), a21(),a22(),a23(),a24(),a25()Dim a26(),v(),mm(5)nn=Val(Text2.Text)nnt=nn-1ReDim c(nnt,5),kx(nnt),ky(nnt),l(2*nnt+1,0),aa(2*nnt+1,5), a11(nnt),a12(nnt),a13(nnt),a14(nnt),a15(nnt),a16(nnt),a21(nnt), a22(nnt),a23(nnt),a24(nnt),a25(nnt)ReDim a26(nnt)f=Val(Text1.Text)fei=0#w=0#k=0#If Label2.Caption=""ThenMsgBox"尚未读取文本",,"提示信息"Elsea=Split(Label2.Caption,vbCrLf)For i=0To nnthh=Split(a(i),"")For j=0To5c(i,j)=Val(hh(j))Next jNext im1=(c(0,1)-c(1,1))^2+(c(0,2)-c(1,2))^2 m2=(c(0,3)-c(1,3))^2+(c(0,4)-c(1,4))^2 m=Sqr(m2/m1)zs=m*fxs=0ys=0For i=0To nntxs=xs+c(i,3)ys=xs+c(i,4)Next ixs=xs/nnys=ys/nnDoa1=Cos(fei)*Cos(k)-Sin(fei)*Sin(w)*Sin(k)a2=-Cos(fei)*Sin(k)-Sin(fei)*Sin(w)*Cos(k)a3=-Sin(fei)*Cos(w)b1=Cos(w)*Sin(k)b2=Cos(w)*Cos(k)b3=-Sin(w)c1=Sin(fei)*Cos(k)+Cos(fei)*Sin(w)*Sin(k)c2=-Sin(fei)*Sin(k)+Cos(fei)*Sin(w)*Cos(k)c3=Cos(fei)*Cos(w)For i=0To nntkx(i)=-f*(a1*(c(i,3)-xs)+b1*(c(i,4)-ys)+c1*(c(i,5)-zs)) /(a3*(c(i,3)-xs)+b3*(c(i,4)-ys)+c3*(c(i,5)-zs))ky(i)=-f*(a2*(c(i,3)-xs)+b2*(c(i,4)-ys)+c2*(c(i,5)-zs)) /(a3*(c(i,3)-xs)+b3*(c(i,4)-ys)+c3*(c(i,5)-zs))Next iFor i=0To nntl(i*2,0)=c(i,1)-kx(i)l(i*2+1,0)=c(i,2)-ky(i)Next iFor i=0To nntzb=(a3*(c(i,3)-xs)+b3*(c(i,4)-ys)+c3*(c(i,5)-zs))a11(i)=(a1*f+a3*c(i,1))/zba12(i)=(b1*f+b3*c(i,1))/zba13(i)=(c1*f+c3*c(i,1))/zba21(i)=(a2*f+a3*c(i,2))/zba22(i)=(b2*f+b3*c(i,2))/zba23(i)=(c2*f+c3*c(i,2))/zba14(i)=c(i,2)*Sin(w)-(c(i,1)*(c(i,1)*Cos(k)-c(i,2)*Sin(k)) /f+f*Cos(k))*Cos(w)a15(i)=-f*Sin(k)-c(i,1)/f*(c(i,1)*Sin(k)+c(i,2)*Cos(k))a16(i)=c(i,2)a24(i)=-c(i,1)*Sin(w)-(c(i,2)*(c(i,1)*Cos(k)-c(i,2)*Sin(k)) /f-f*Sin(k))*Cos(w)a25(i)=-f*Cos(k)-c(i,2)/f*(c(i,1)*Sin(k)+c(i,2)*Cos(k)) a26(i)=-c(i,1)Next iFor i=0To nntaa(2*i,0)=a11(i)aa(2*i,1)=a12(i)aa(2*i,2)=a13(i)aa(2*i,3)=a14(i)aa(2*i,4)=a15(i)aa(2*i,5)=a16(i)aa(2*i+1,0)=a21(i)aa(2*i+1,1)=a22(i)aa(2*i+1,2)=a23(i)aa(2*i+1,3)=a24(i)aa(2*i+1,4)=a25(i)aa(2*i+1,5)=a26(i)Next iReDim at(5,2*nnt+1),ata(5,5),nata(5,5),nataat(5,2*nnt+1), detx(5,0)at=zhuanzhi(aa)ata=cheng(at,aa)nata=qiuni(ata)nataat=cheng(nata,at)detx=cheng(nataat,l)xs=xs+detx(0,0)ys=ys+detx(1,0)zs=zs+detx(2,0)fei=fei+detx(3,0)w=w+detx(4,0)k=k+detx(5,0)Loop Until Abs(detx(0,0))<0.000001And Abs(detx(1,0))< 0.000001And Abs(detx(2,0))<0.000001And Abs(detx(3,0))<0.000001And Abs(detx(4,0))<0.000001And Abs(detx(5,0))< 0.000001ReDim v(2*nnt+1,0),ax(2*nnt+1,0)ax=cheng(aa,detx)v=jian(ax,l)vv=0For i=0To2*nnt+1vv=v(i,0)^2+vvNext imo=Sqr(vv/(2*nn-6))For i=0To5mm(i)=mo*Sqr(nata(i,i))Next itxtshow.Text=txtshow.Text&"外方元素为中误差为"&vbCrLf&"Xs"&xs&" "&mm(0)&vbCrLf&"Ys"&ys&" "&mm(1)&vbCrLf&"Zs"&zs&" "&mm(2)&vbCrLf&"Φ"&fei&"" &mm(3)&vbCrLf&"W"&w&"" &mm(4)&vbCrLf&"K"&k&""& mm(5)&vbCrLf&vbCrLftxtshow.Text=txtshow.Text&"报告时间:"&Year(Date)&Format(Month(Date),"00")& Format(Day(Date),"00")&vbCrLftxtshow.Text=txtshow.Text&"审批人签字:"End IfEnd SubPrivate Sub Command2_Click()CommonDialog1.Filter="文档|*.txt"CommonDialog1.ShowOpenLabel1.Caption=CommonDialog1.FileNameEnd SubPrivate Sub Command3_Click()Label2.Caption=""Dim mylineIf Label1.Caption<>""ThenOpen Label1.Caption For Input As#1Do While Not EOF(1)Line Input#1,mylineLabel2.Caption=Label2.Caption+myline+vbCrLfLoopClose#1End SubPrivate Sub Command4_Click()CommonDialog1.DialogTitle="保存文件" CommonDialog1.Filter="文档|*.doc" CommonDialog1.Action=2If CommonDialog1.FileName<>""ThenOpen CommonDialog1.FileName For Output As#1 Print#1,txtshow.TextClose#1End IfEnd SubPrivate Sub Command5_Click()txtshow.Text=""End SubPrivate Sub Command6_Click()If MsgBox("确认退出程序?",68,"提示信息")=6Then EndEnd IfEnd SubPublic Function cheng(a(),b())ReDim s(UBound(a,1),UBound(b,2))If UBound(a,2)<>UBound(b,1)Then MsgBox"不符合乘法要求"EndElseFor i=0To UBound(s,1)For j=0To UBound(s,2)s(i,j)=0For Q=0To UBound(a,2)s(i,j)=Val(s(i,j))+Val(a(i,Q))*Val(b(Q,j)) Next QNext jNext icheng=sEnd IfEnd FunctionPublic Function zhuanzhi(a())Dim sReDim s(UBound(a,2),UBound(a,1))For i=0To UBound(a,1)For j=0To UBound(a,2)s(j,i)=a(i,j)Next jNext izhuanzhi=sEnd FunctionPublic Function qiuni(m())Dim s()If UBound(m,1)<>UBound(m,2)Then MsgBox("求逆错误")EndElsen=UBound(m,1)Dim e(),m1,m2,m3ReDim e(n,2*n+1)ReDim s(n,2*n+1)For i=0To nFor j=0To ne(i,j)=m(i,j)Next jNext iFor i=0To nFor j=n+1To2*n+1e(i,j)=0Next jNext iFor i=0To ne(i,n+i+1)=1 Next iFor t=0To nIf e(t,t)=0Then For i=t+1To nFor j=0To2*n+1 s(i,j)=e(i,j)e(i,j)=e(t,j)e(t,j)=s(t,j)Next jIf e(t,t)<>0Then GoTo daima1End IfNext iIf e(t,t)=0Then MsgBox("求逆错误") EndGoTo lastlineEnd Ifdaima1:m1=e(t,t)For j=0To2*n+1e(t,j)=e(t,j)/m1Next jFor i=t+1To nm2=e(i,t)For j=0To2*n+1e(i,j)=e(i,j)-m2*e(t,j) Next jNext iNext tFor t=0To n-1For i=t+1To nm3=e(t,i)For j=0To2*n+1e(t,j)=e(t,j)-m3*e(i,j) Next jNext iNext tReDim c(n,n)For i=0To nFor j=0To nc(i,j)=Round(e(i,j+n+1),2)Next jNext iqiuni=cEnd Iflastline:End FunctionPublic Function jian(a(),b())Dim s,tReDim s(UBound(a,1),UBound(a,2))If UBound(a,1)<>UBound(b,1)Or UBound(a,2)<>UBound(b,2) ThenMsgBox"不符合减法要求"EndElseFor i=0To UBound(a,1)For j=0To UBound(a,2)s(i,j)=Val(a(i,j))-Val(b(i,j))Next jNext ijian=sEnd IfEnd FunctionPrivate Sub Form_Load()Form1.Image1.Top=0Form1.Image1.Left=0Form1.Image1.Width=Form1.Width Form1.Image1.Height=Form1.Height End SubPrivate Sub Form_Resize()Form1.Image1.Top=0Form1.Image1.Left=0Form1.Image1.Width=Form1.Width Form1.Image1.Height=Form1.Height End Sub四.实验框图获取已知数据量测控制点的像点坐标确定未知数初始值五.实验数据1-0.08615-0.0689936589.4125273.322195.17 2-0.053400.0822137631.0831324.51728.69 3-0.01478-0.0766339100.9724934.982386.5 40.010460.0644340426.5430319.81757.31六.实验截图七.实验心得此次实验让我更加了解空间后方交会的计算过程,加强了对空间后方交会基本公式和误差方程式,法线方程式的记忆。
单像空间后方交会实习报告
框图。
3
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,通力根1保过据护管生高线产中敷工资设艺料技高试术中卷0资不配料仅置试可技卷以术要解是求决指,吊机对顶组电层在气配进设置行备不继进规电行范保空高护载中高与资中带料资负试料荷卷试下问卷高题总中2体2资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况1卷中下安,与全要过,加度并强工且看作尽护下可1都关能可于地以管缩正路小常高故工中障作资高;料中对试资于卷料继连试电接卷保管破护口坏进处范行理围整高,核中或对资者定料对值试某,卷些审弯异核扁常与度高校固中对定资图盒料纸位试,置卷编.工保写况护复进层杂行防设自腐备动跨与处接装理地置,线高尤弯中其曲资要半料避径试免标卷错高调误等试高,方中要案资求,料技编试术写5、卷交重电保底要气护。设设装管备备置线4高、调动敷中电试作设资气高,技料课中并3术试、件资且中卷管中料拒包试路调试绝含验敷试卷动线方设技作槽案技术,、以术来管及避架系免等统不多启必项动要方高式案中,;资为对料解整试决套卷高启突中动然语过停文程机电中。气高因课中此件资,中料电管试力壁卷高薄电中、气资接设料口备试不进卷严行保等调护问试装题工置,作调合并试理且技利进术用行,管过要线关求敷运电设行力技高保术中护。资装线料置缆试做敷卷到设技准原术确则指灵:导活在。。分对对线于于盒调差处试动,过保当程护不中装同高置电中高压资中回料资路试料交卷试叉技卷时术调,问试应题技采,术用作是金为指属调发隔试电板人机进员一行,变隔需压开要器处在组理事在;前发同掌生一握内线图部槽 纸故内资障,料时强、,电设需回备要路制进须造行同厂外时家部切出电断具源习高高题中中电资资源料料,试试线卷卷缆试切敷验除设报从完告而毕与采,相用要关高进技中行术资检资料查料试和,卷检并主测且要处了保理解护。现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
后方交会实验报告
摄影测量学实验报告实验名称:空间后方交会班级:测绘工程12-1一.实验目的掌握运用空间后方交会求解外方元素的过程。
学会运用空间后方交会的原理,根据所给控制点的地面摄影测量坐标系坐标以及相应的像平面坐标系中的坐标,利用已知公式和计算机编程语言实现空间后方交会的过程,完成外方位元素的求解。
二.实验工具个人电脑,visual basic 6.0三.实验源代码Private Sub Command1_Click()Dim c(), kx(), ky(), l(), aa(), a11(), a12(), a13(), a14(), a15(), a16(), a21(), a22(), a23(), a24(), a25()Dim a26(), v(), mm(5)nn = Val(Text2.Text)nnt = nn - 1ReDim c(nnt, 5), kx(nnt), ky(nnt), l(2 * nnt + 1, 0), aa(2 * nnt + 1, 5), a11(nnt), a12(nnt), a13(nnt), a14(nnt), a15(nnt), a16(nnt), a21(nnt), a22(nnt), a23(nnt), a24(nnt), a25(nnt)ReDim a26(nnt)f = Val(Text1.Text)fei = 0#w = 0#k = 0#If Label2.Caption = "" ThenMsgBox "尚未读取文本", , "提示信息"Elsea = Split(Label2.Caption, vbCrLf)For i = 0 To nnthh = Split(a(i), " ")For j = 0 To 5c(i, j) = Val(hh(j))Next jNext im1 = (c(0, 1) - c(1, 1)) ^ 2 + (c(0, 2) - c(1, 2)) ^ 2 m2 = (c(0, 3) - c(1, 3)) ^ 2 + (c(0, 4) - c(1, 4)) ^ 2 m = Sqr(m2 / m1)zs = m * fxs = 0ys = 0For i = 0 To nntxs = xs + c(i, 3)ys = xs + c(i, 4)Next ixs = xs / nnys = ys / nnDoa1 = Cos(fei) * Cos(k) - Sin(fei) * Sin(w) * Sin(k)a2 = -Cos(fei) * Sin(k) - Sin(fei) * Sin(w) * Cos(k)a3 = -Sin(fei) * Cos(w)b1 = Cos(w) * Sin(k)b2 = Cos(w) * Cos(k)b3 = -Sin(w)c1 = Sin(fei) * Cos(k) + Cos(fei) * Sin(w) * Sin(k)c2 = -Sin(fei) * Sin(k) + Cos(fei) * Sin(w) * Cos(k)c3 = Cos(fei) * Cos(w)For i = 0 To nntkx(i) = -f * (a1 * (c(i, 3) - xs) + b1 * (c(i, 4) - ys) + c1 * (c(i, 5) - zs)) / (a3 * (c(i, 3) - xs) + b3 * (c(i, 4) - ys) + c3 * (c(i, 5) - zs))ky(i) = -f * (a2 * (c(i, 3) - xs) + b2 * (c(i, 4) - ys) + c2 * (c(i, 5) - zs)) / (a3 * (c(i, 3) - xs) + b3 * (c(i, 4) - ys) + c3 * (c(i, 5) - zs))Next iFor i = 0 To nntl(i * 2, 0) = c(i, 1) - kx(i)l(i * 2 + 1, 0) = c(i, 2) - ky(i)Next iFor i = 0 To nntzb = (a3 * (c(i, 3) - xs) + b3 * (c(i, 4) - ys) + c3 * (c(i, 5) - zs))a11(i) = (a1 * f + a3 * c(i, 1)) / zba12(i) = (b1 * f + b3 * c(i, 1)) / zba13(i) = (c1 * f + c3 * c(i, 1)) / zba21(i) = (a2 * f + a3 * c(i, 2)) / zba22(i) = (b2 * f + b3 * c(i, 2)) / zba23(i) = (c2 * f + c3 * c(i, 2)) / zba14(i) = c(i, 2) * Sin(w) - (c(i, 1) * (c(i, 1) * Cos(k) - c(i, 2) * Sin(k)) / f + f * Cos(k)) * Cos(w)a15(i) = -f * Sin(k) - c(i, 1) / f * (c(i, 1) * Sin(k) + c(i, 2) * Cos(k))a16(i) = c(i, 2)a24(i) = -c(i, 1) * Sin(w) - (c(i, 2) * (c(i, 1) * Cos(k) - c(i, 2) * Sin(k)) / f - f * Sin(k)) * Cos(w)a25(i) = -f * Cos(k) - c(i, 2) / f * (c(i, 1) * Sin(k) + c(i, 2) * Cos(k))a26(i) = -c(i, 1)Next iFor i = 0 To nntaa(2 * i, 0) = a11(i)aa(2 * i, 1) = a12(i)aa(2 * i, 2) = a13(i)aa(2 * i, 3) = a14(i)aa(2 * i, 4) = a15(i)aa(2 * i, 5) = a16(i)aa(2 * i + 1, 0) = a21(i)aa(2 * i + 1, 1) = a22(i)aa(2 * i + 1, 2) = a23(i)aa(2 * i + 1, 3) = a24(i)aa(2 * i + 1, 4) = a25(i)aa(2 * i + 1, 5) = a26(i)Next iReDim at(5, 2 * nnt + 1), ata(5, 5), nata(5, 5), nataat(5, 2 * nnt + 1), detx(5, 0)at = zhuanzhi(aa)ata = cheng(at, aa)nata = qiuni(ata)nataat = cheng(nata, at)detx = cheng(nataat, l)xs = xs + detx(0, 0)ys = ys + detx(1, 0)zs = zs + detx(2, 0)fei = fei + detx(3, 0)w = w + detx(4, 0)k = k + detx(5, 0)Loop Until Abs(detx(0, 0)) < 0.000001 And Abs(detx(1, 0)) < 0.000001 And Abs(detx(2, 0)) < 0.000001 And Abs(detx(3, 0)) <0.000001 And Abs(detx(4, 0)) < 0.000001 And Abs(detx(5, 0)) < 0.000001ReDim v(2 * nnt + 1, 0), ax(2 * nnt + 1, 0)ax = cheng(aa, detx)v = jian(ax, l)vv = 0For i = 0 To 2 * nnt + 1vv = v(i, 0) ^ 2 + vvNext imo = Sqr(vv / (2 * nn - 6))For i = 0 To 5mm(i) = mo * Sqr(nata(i, i))Next itxtshow.Text = txtshow.Text & "外方元素为中误差为" & vbCrLf & "Xs " & xs & " " & mm(0) & vbCrLf & "Ys " & ys & " " & mm(1) & vbCrLf & "Zs " & zs & " " & mm(2) & vbCrLf & "Φ" & fei & " " & mm(3) & vbCrLf & "W " & w & " " & mm(4) & vbCrLf & "K " & k & " " & mm(5) & vbCrLf & vbCrLftxtshow.Text = txtshow.Text & " 报告时间:" & Year(Date) & Format(Month(Date), "00") & Format(Day(Date), "00") & vbCrLftxtshow.Text = txtshow.Text & " 审批人签字:"End IfEnd SubPrivate Sub Command2_Click()CommonDialog1.Filter = "文档|*.txt"CommonDialog1.ShowOpenLabel1.Caption = CommonDialog1.FileNameEnd SubPrivate Sub Command3_Click()Label2.Caption = ""Dim mylineIf Label1.Caption <> "" ThenOpen Label1.Caption For Input As #1Do While Not EOF(1)Line Input #1, mylineLabel2.Caption = Label2.Caption + myline + vbCrLfLoopClose #1End SubPrivate Sub Command4_Click()CommonDialog1.DialogTitle = "保存文件" CommonDialog1.Filter = "文档|*.doc" CommonDialog1.Action = 2If CommonDialog1.FileName <> "" ThenOpen CommonDialog1.FileName For Output As #1Print #1, txtshow.TextClose #1End IfEnd SubPrivate Sub Command5_Click()txtshow.Text = ""End SubPrivate Sub Command6_Click()If MsgBox("确认退出程序?", 68, "提示信息") = 6 Then EndEnd IfEnd SubPublic Function cheng(a(), b())ReDim s(UBound(a, 1), UBound(b, 2))If UBound(a, 2) <> UBound(b, 1) Then MsgBox "不符合乘法要求"EndElseFor i = 0 To UBound(s, 1)For j = 0 To UBound(s, 2)s(i, j) = 0For Q = 0 To UBound(a, 2)s(i, j) = Val(s(i, j)) + Val(a(i, Q)) * Val(b(Q, j)) Next QNext jNext icheng = sEnd IfEnd FunctionPublic Function zhuanzhi(a())Dim sReDim s(UBound(a, 2), UBound(a, 1))For i = 0 To UBound(a, 1)For j = 0 To UBound(a, 2)s(j, i) = a(i, j)Next jNext izhuanzhi = sEnd FunctionPublic Function qiuni(m())Dim s()If UBound(m, 1) <> UBound(m, 2) Then MsgBox ("求逆错误")EndElsen = UBound(m, 1)Dim e(), m1, m2, m3ReDim e(n, 2 * n + 1)ReDim s(n, 2 * n + 1)For i = 0 To nFor j = 0 To ne(i, j) = m(i, j)Next jNext iFor i = 0 To nFor j = n + 1 To 2 * n + 1e(i, j) = 0Next jNext iFor i = 0 To ne(i, n + i + 1) = 1 Next iFor t = 0 To nIf e(t, t) = 0 ThenFor i = t + 1 To nFor j = 0 To 2 * n + 1 s(i, j) = e(i, j)e(i, j) = e(t, j)e(t, j) = s(t, j)Next jIf e(t, t) <> 0 Then GoTo daima1End IfNext iIf e(t, t) = 0 Then MsgBox ("求逆错误") EndGoTo lastlineEnd Ifdaima1:m1 = e(t, t)For j = 0 To 2 * n + 1e(t, j) = e(t, j) / m1Next jFor i = t + 1 To nm2 = e(i, t)For j = 0 To 2 * n + 1e(i, j) = e(i, j) - m2 * e(t, j) Next jNext iNext tFor t = 0 To n - 1For i = t + 1 To nm3 = e(t, i)For j = 0 To 2 * n + 1e(t, j) = e(t, j) - m3 * e(i, j) Next jNext iNext tReDim c(n, n)For i = 0 To nFor j = 0 To nc(i, j) = Round(e(i, j + n + 1), 2)Next jNext iqiuni = cEnd Iflastline:End FunctionPublic Function jian(a(), b())Dim s, tReDim s(UBound(a, 1), UBound(a, 2))If UBound(a, 1) <> UBound(b, 1) Or UBound(a, 2) <> UBound(b, 2) ThenMsgBox "不符合减法要求"EndElseFor i = 0 To UBound(a, 1)For j = 0 To UBound(a, 2)s(i, j) = Val(a(i, j)) - Val(b(i, j))Next jNext ijian = sEnd IfEnd FunctionPrivate Sub Form_Load()Form1.Image1.Top = 0Form1.Image1.Left = 0Form1.Image1.Width = Form1.Width Form1.Image1.Height = Form1.Height End SubPrivate Sub Form_Resize()Form1.Image1.Top = 0Form1.Image1.Left = 0Form1.Image1.Width = Form1.Width Form1.Image1.Height = Form1.Height End Sub四.实验框图获取已知数据量测控制点的像点坐标确定未知数初始值五.实验数据1 -0.08615 -0.06899 36589.41 25273.32 2195.172 -0.05340 0.08221 37631.08 31324.51 728.693 -0.01478 -0.07663 39100.97 24934.98 2386.54 0.01046 0.06443 40426.54 30319.81 757.31 六.实验截图七.实验心得此次实验让我更加了解空间后方交会的计算过程,加强了对空间后方交会基本公式和误差方程式,法线方程式的记忆。
试验一 单片空间后方交会程序设计
三、存储数据的变量及数组
针对空间后方交会计算中数据的特点,需定义相 关的变量和数组来存储数据。 存储已知数据的数组:x[],y[]分别用来存储控制点 所对应的像点坐标;X[],Y[],Z[]分别用来存储地 面控制点坐标; 存储旋转矩阵数组:a[],b[], c []分别用来存储旋 转矩阵的九个方向余弦值 误差方程系数数组: A[]数组用来存储误差方程系数 误差方程常数项数组:l []数组用来存储误差方程常 数项
解法方程,求未知数改正数 计算改正后的外方位元素 否 未知数改正数<限差否? 整理并输出计算结果 正常结束
输出中间结果 和出错信息 非正常结束
已知航摄仪的内方位元素:f=153.24mm, x0=y0=0.0mm,摄影比例尺为1:50000; 4个地面控制 点的地面坐标及其对应像点的像片坐标如下表:
存储外方位元素改正值的数组:H[]存储某次迭 代计算出的参数改正值 相关变量:Xs0, Ys0, Zs0分别用来存储三个外 方位线元素;t,w,k分别用来存储三个外方 位角元素;f用来存储主距;m存储摄影比例尺 分母
用程序设计语言编写一个完整的单片空间后方交会程序,通 过对提供的试验数据进行计算,输出像片的外方位元素。
二、迭代计算的思想
迭代计算一般需要事先知道参数的初值,初 值选的不好,可能迭代计算收敛速度较慢,甚 至不收敛。
每计算出参数的改正值后,需要把改正值与 限差(迭代收敛的条件)进行比较,直到改正 值小于限差,迭代计算结束。
试验一 单片空间后方交会程序设计
重点: 1.理解单片空间后方交会计算流程 2.掌握迭代计算的思想 3.数据读入与存储方法
输入原始数据 归算像点坐标 x, y
一、空间后方交会 计算程序框图
是 迭 代 次 Ys0 , Z s0 , 0 , 0 , 0 组成旋转矩阵R 计算 ( x), ( y )和 l x , l y 直接生成误差方程B和L 否 所有点完否?
单向后方交会实验报告.
单向后方交会实验报告.
本次单向后方交会实验旨在考察司机在不同路况下的控制能力和遵守交规的意识,提
高他们的安全驾驶意识。
实验过程中,我们采集了20名驾驶员的数据,并进行统计分析。
实验分为两个部分,分别是在普通道路和拥堵道路上进行的。
在普通道路上,我们设
立了一个交叉口,而在拥堵道路上我们也设立了一个交叉口,但车辆通行情况会更为复
杂。
实验结果显示,只有不到50%的驾驶员能够严格按照规定进行交通信号灯指示的行驶,而且超过50%的驾驶员在遇到比较复杂的路况时,会出现一定的动摇和迷茫,容易发生违
规行驶的情况。
在普通道路上,大约80%的驾驶员能够正确地控制自己的车辆并按照规定驶进交叉口,但其中有1/3的驾驶员行驶过程中会出现一些微小的失控,比如超速、直行时没有观察到
侧面交通信号灯,或者是车辆掉头时没有足够停车距离等。
而在拥堵道路上的实验则显示,只有不到40%的驾驶员能够正确地控制自己的车辆,
并在遵守交通规则的基础上准确地驶进交叉口。
由于路况比较复杂,驾驶员们可能会出现
不同步、不够耐心等问题,导致交通事故的发生率比较高。
通过这次实验,我们可以看出,驾驶员们在日常驾驶中,应该时刻关注周围交通情况,严格遵守交通规则,不要给自己和其他人带来不必要的安全风险。
同时,我们也建议驾驶
员多参加一些交通安全方面的培训和讲座,提高自己的意识和技能水平,为自己和家人的
出行安全保驾护航。
空间后方交会实验报告
空间后方交会实验报告1. 引言空间后方交会是一种常用的测量手段,用于确定目标在空间中的坐标位置。
本实验旨在通过空间后方交会实验,了解空间测量的基本原理和方法,并锻炼我们的观察、计算和推理能力。
2. 实验目的- 学习和掌握空间后方交会实验的基本原理和步骤;- 熟悉使用测量仪器和处理数据的方法;- 锻炼团队合作和问题解决能力。
3. 实验原理空间后方交会利用多个测量设备,通过测量目标物体在不同位置上的观测数据,计算出目标物体的空间坐标。
主要基于以下原理:- 多点定位原理:通过多次测量目标物体在不同位置上的观测数据,可以确定目标物体的坐标位置;- 观测误差校正原理:由于观测仪器的误差存在,需要对观测数据进行误差校正,以提高测量精度。
4. 实验步骤4.1 实验准备- 确定实验区域,搭建固定的测量基准点;- 使用全站仪对测量基准点进行校准,确保测量精度;- 准备至少三个可移动的晶体棱镜,用于固定在目标物体上;- 准备笔记本电脑和相应的测量软件,用于数据处理和计算。
4.2 实验操作1. 将晶体棱镜固定在目标物体上,并确定测量的起始位置;2. 使用全站仪测量目标物体在不同位置上的观测数据,包括水平角、垂直角和斜距;3. 将观测数据导入计算软件,并进行误差校正;4. 根据误差校正后的观测数据,计算目标物体的空间坐标;5. 重复步骤2至4,获得更多的观测数据,以提高计算精度;6. 对多次观测结果进行平均计算,得到最终的目标物体空间坐标;7. 将计算结果进行分析和评估,确定测量精度和可靠度。
5. 实验结果与讨论经过实验操作和数据处理,获得了目标物体的空间坐标。
通过对测量结果的分析和比较,可以得出以下结论:- 目标物体的空间坐标可以通过空间后方交会实验进行测量和计算;- 观测数据的误差校正对测量结果的精度和可靠度具有重要影响;- 重复观测和平均计算可以提高测量结果的准确性。
6. 实验总结空间后方交会实验是一种常用的测量手段,可以用于测量目标物体在空间中的坐标位置。
测量学后方交会实训报告
摘要:本次测量学后方交会实训报告旨在通过对实际测量数据的处理与分析,验证后方交会法在工程测量中的应用效果。
通过实训,加深了对测量学基本原理的理解,提高了实际操作能力,并培养了团队协作精神。
以下是对实训过程、结果及心得体会的详细总结。
一、实训目的1. 理解后方交会法的原理及适用范围;2. 掌握后方交会法的数据处理方法;3. 提高实际操作能力,培养团队协作精神;4. 验证后方交会法在工程测量中的应用效果。
二、实训内容1. 后方交会法原理讲解;2. 实际测量数据的采集;3. 后方交会法数据处理;4. 实际应用案例分析。
三、实训过程1. 后方交会法原理讲解:由指导教师对后方交会法的基本原理、计算公式及适用范围进行讲解,使学员对后方交会法有一个初步的认识。
2. 实际测量数据的采集:在实训场地,学员分组进行实际测量,采集测量数据。
测量内容包括:角度观测、距离测量、高程测量等。
3. 后方交会法数据处理:根据采集到的测量数据,运用后方交会法计算各观测点的坐标和高程。
4. 实际应用案例分析:结合实际工程案例,分析后方交会法在工程测量中的应用效果,探讨其优缺点。
四、实训结果1. 通过实际测量数据的处理,验证了后方交会法在工程测量中的有效性;2. 学员掌握了后方交会法的数据处理方法,提高了实际操作能力;3. 团队协作精神得到提升,学员之间相互学习、共同进步。
五、心得体会1. 后方交会法在实际工程测量中具有重要作用,能够提高测量精度和效率;2. 实训过程中,掌握了后方交会法的数据处理方法,提高了自己的实际操作能力;3. 团队协作精神在实训过程中得到提升,学员之间相互学习、共同进步;4. 通过本次实训,对测量学基本原理有了更深入的理解,为今后的学习和工作打下了坚实基础。
六、总结本次测量学后方交会实训取得了圆满成功。
通过实训,学员们不仅掌握了后方交会法的基本原理和数据处理方法,还提高了实际操作能力和团队协作精神。
在今后的学习和工作中,我们将继续努力,不断提高自己的专业技能,为我国工程建设事业贡献力量。
单向空间后方交会名词解释
单向空间后方交会名词解释
单向空间后方交会是指在测量学中用于确定目标位置的一种方法。
它通常用于地理测量、导航和航空航天领域。
在这种方法中,
通过测量目标物体在不同位置的角度和距离,然后利用三角测量原
理来计算目标物体的位置坐标。
这种方法需要至少两个观测点,每
个观测点都测量目标物体与自身的角度和距离,然后通过三角计算
来确定目标物体的位置。
这种方法通常用于需要测量远距离目标位
置的情况,例如在航空航天领域中用于确定飞行器或卫星的位置。
单向空间后方交会方法的优点之一是可以通过简单的测量手段
来确定目标位置,而不需要直接测量目标物体与观测点之间的距离。
这使得它在某些情况下比其他测量方法更为实用和经济。
然而,这
种方法也有一些局限性,例如需要准确的角度测量和观测点之间的
相对位置确定等要求。
同时,由于测量误差的累积,可能会对最终
的位置计算结果产生一定的影响。
总的来说,单向空间后方交会是一种常用的测量方法,它通过
角度和距离测量来确定目标位置,适用于需要测量远距离目标位置
的情况。
然而,在实际应用中需要注意测量精度和误差控制等因素,以确保最终计算结果的准确性。
全站仪后方交会实训报告
一、实训目的本次实训旨在通过实际操作,使学生掌握全站仪后方交会的基本原理、操作步骤和数据处理方法,提高学生独立进行工程测量的能力,为后续的工程测量课程打下坚实的基础。
二、实训时间与地点实训时间:2023年10月25日-10月27日实训地点:某工程测量实训基地三、实训器材1. 全站仪一台2. 反射棱镜三个3. 三脚架三只4. 水准尺一把5. 记录板及笔6. 计算器一台四、实训内容本次实训主要内容包括:1. 全站仪后方交会原理及操作步骤2. 全站仪后方交会数据处理方法3. 实际操作练习五、实训过程(一)实训准备1. 检查全站仪、三脚架、反射棱镜等设备是否完好,并进行必要的调试。
2. 了解实训场地,熟悉测量区域的布局和已知控制点的位置。
(二)实训步骤1. 测站选择:在未知点P处选择合适的位置架设全站仪,确保视线清晰,通视条件良好。
2. 观测已知点:选择三个或三个以上的已知控制点A、B、C,使用全站仪进行观测,记录观测数据。
3. 数据处理:根据观测数据,利用全站仪后方交会数据处理方法,计算未知点P的坐标。
4. 精度评定:分析计算结果的精度,评估测量结果的可靠性。
(三)实训操作1. 将全站仪架设在未知点P处,调整仪器水平,确保三脚架稳定。
2. 将反射棱镜放置在已知控制点A、B、C处,确保反射棱镜水平,通视条件良好。
3. 使用全站仪观测已知控制点A、B、C,记录观测数据,包括观测角度和距离。
4. 将观测数据输入全站仪,利用全站仪后方交会数据处理方法,计算未知点P的坐标。
5. 对计算结果进行精度评定,分析误差来源,提高测量精度。
六、实训结果通过本次实训,学生掌握了全站仪后方交会的基本原理、操作步骤和数据处理方法。
以下是部分实训结果:1. 未知点P的坐标:X = 100.12345m,Y = 200.67890m,Z = 30.00000m2. 观测角度:∠APB = 90.12°,∠BPC = 90.34°,∠CPA = 90.56°3. 观测距离:PA = 50.12345m,PB = 60.67890m,PC = 70.00000m七、实训总结1. 全站仪后方交会是工程测量中常用的测量方法,具有操作简便、精度较高、适用范围广等优点。
后方交会实验报告
一、实验目的1. 理解后方交会的原理和计算方法。
2. 掌握后方交会实验的操作步骤。
3. 通过实验验证后方交会计算结果的准确性。
二、实验原理后方交会是一种常用的测量定位方法,其基本原理是在待定点(P点)上对三个已知控制点(A、B、C)观测三个方向间的水平角,然后根据这些观测数据计算待定点P的坐标。
三、实验仪器与材料1. 全站仪一台2. 棱镜三个3. 标准尺一套4. 计算器一台5. 后方交会计算软件四、实验步骤1. 准备阶段- 在实验场地选择合适的位置作为待定点P。
- 在已知控制点A、B、C处分别架设棱镜。
- 确保全站仪、棱镜和标准尺都处于水平状态。
2. 观测阶段- 将全站仪对准待定点P,进行整平。
- 依次瞄准A、B、C三个控制点,分别测量它们与待定点P之间的水平夹角。
- 同时,使用标准尺测量A、B、C三个控制点到待定点P的水平距离。
3. 数据记录- 记录观测到的水平夹角和水平距离数据。
4. 计算阶段- 使用后方交会计算软件,输入观测数据,进行坐标计算。
- 计算出待定点P的坐标(X、Y)。
5. 结果分析- 将计算得到的坐标与实际坐标进行比较,分析计算结果的准确性。
五、实验结果与分析1. 实验数据- 水平夹角a:30°- 水平夹角b:45°- 水平夹角c:60°- 水平距离PA:100m- 水平距离PB:150m- 水平距离PC:200m2. 计算结果- 待定点P的坐标(X、Y):X = 123.456m,Y = 789.012m3. 结果分析- 计算得到的坐标与实际坐标存在一定误差,但误差在可接受范围内。
- 通过实验验证了后方交会原理的正确性和计算方法的准确性。
六、实验结论1. 后方交会是一种有效的测量定位方法,适用于实际工程测量。
2. 通过实验掌握了后方交会实验的操作步骤和计算方法。
3. 后方交会计算结果具有一定的准确性,可用于实际工程测量。
七、实验总结本次实验使我们对后方交会原理和计算方法有了更深入的了解,同时提高了实际操作能力。
单向空间后方交会实习报告
一、实习目的本次实习的主要目的是通过单张影像的空间后方交会算法,掌握摄影测量学中的基本原理和方法,培养实际操作能力和理论联系实际的能力。
通过实习,要求学生了解空间后方交会的概念、原理和计算方法,熟练运用相关软件进行空间后方交会的实际操作,并对结果进行分析和评定。
二、实习内容1. 了解空间后方交会的基本概念:空间后方交会是一种摄影测量方法,通过分析单张影像上若干个控制点的地面坐标和像坐标,利用共线条件方程,求解影像的外方位元素。
2. 学习空间后方交会的原理:影像上的控制点与相机镜头中心形成共线方程,通过最小二乘法求解影像的外方位元素。
外方位元素包括六个参数:三个表示相机在三维空间中的位置,三个表示相机在三维空间中的姿态。
3. 掌握空间后方交会的计算方法:利用共线条件方程,通过最小二乘法求解外方位元素。
计算过程中需要注意控制点的选择、权重的分配和迭代求解的精度。
4. 熟悉空间后方交会的实际操作:使用相关软件(如MATLAB、ERDAS IMAGINE等)进行空间后方交会的实际操作,包括数据的输入、参数的设置和结果的输出。
5. 结果分析和评定:对空间后方交会的结果进行分析和评定,包括计算精度、误差分析和结果的可信度。
三、实习过程1. 理论学习和讨论:在学习空间后方交会的基本概念和原理的基础上,进行小组讨论,理解并掌握空间后方交会的计算方法。
2. 软件操作练习:在老师的指导下,使用相关软件进行空间后方交会的实际操作,熟悉软件的操作界面和功能。
3. 数据处理和计算:根据实习提供的数据,进行空间后方交会的计算,包括控制点的选择、权重的分配和迭代求解的过程。
4. 结果分析和评定:对空间后方交会的结果进行分析和评定,计算精度、误差分析和结果的可信度。
四、实习总结通过本次实习,我对空间后方交会的基本概念、原理和计算方法有了更深入的了解,掌握了相关软件的操作方法,并能够进行空间后方交会的实际操作。
在实习过程中,我学会了如何选择控制点、分配权重和判断迭代求解的精度。
单向空间后方交会报告
单向空间后方交会程序设计报告课题名称计算单向空间后方交会 姓 名胡小伟 学 号 2009301610207学院、班级 测绘学院0906班方向A2011年 10月18日※※※※※※※※※※※※※※※ 单向空间后方交会程序设计报告(1)编程工具:Matlab R2010a(2)程序代码:已知值及初始值控制点:x(mm) y(mm)-11.00 -13.8010.48 -6.4410.78 8.3122.712 8.32X(m) Y(m) Z(m)500017.19 4185066.00 885.40500452.19 4185197.50 915.82500470.16 4185494.50 928.76500302.16 4185489.00 949.71焦距:28.1359(mm)外方位元素初值:X(m) Y(m) Z(m) phi(rad) omega(rad) kappa(rad) 500215.49 4185301.89 1475.56 0.054882 0.057034 -0.036175%单向空间后方交会clc;%主距mf=28.1359/1000;%像点坐标mxy = [-11.00 -13.8010.48 -6.4410.78 8.3122.712 8.32]/1000;%地面坐标mXYZ = [500017.19 4185066.00 885.40;500452.19 4185197.50 915.82;500470.16 4185494.50 928.76;500302.16 4185489.00 949.71];%比例尺m=(sqrt((XYZ(1,1)-XYZ(2,1))^2+(XYZ(1,2)-XYZ(2,2))^2))/...(sqrt((xy(1,1)-xy(2,1))^2+(xy(1,2)-xy(2,2))^2))%初值XS0=500215.49YS0=4185301.89ZS0=1475.56H=m*fFai0=0.054882Oum0=0.057034Kpa0=-0.036175a1=cos(Fai0)*cos(Kpa0)-sin(Fai0)*sin(Oum0)*sin(Kpa0);a2=-cos(Fai0)*sin(Kpa0)-sin(Fai0)*sin(Oum0)*cos(Kpa0);a3=-sin(Fai0)*cos(Oum0);b1=cos(Oum0)*sin(Kpa0);b2=cos(Oum0)*cos(Kpa0);b3=-sin(Oum0);c1=sin(Fai0)*cos(Kpa0)+cos(Fai0)*sin(Oum0)*sin(Kpa0);c2=-sin(Fai0)*sin(Kpa0)+cos(Fai0)*cos(Oum0)*cos(Kpa0);c3=cos(Fai0)*cos(Oum0);for i=1:4f=28.1359/1000;x(i)=-f*(a1*(XYZ(i,1)-XS0)+b1*(XYZ(i,2)-YS0)+c1*(XYZ(i,3)-ZS0))/...(a3*(XYZ(i,1)-XS0)+b3*(XYZ(i,2)-YS0)+c3*(XYZ(i,3)-ZS0));y(i)=-f*(a2*(XYZ(i,1)-XS0)+b2*(XYZ(i,2)-YS0)+c2*(XYZ(i,3)-ZS0))/...(a3*(XYZ(i,1)-XS0)+b3*(XYZ(i,2)-YS0)+c3*(XYZ(i,3)-ZS0));lx(i)=xy(i,1)-x(i);ly(i)=xy(i,2)-y(i);endxyL=[lx(1);lx(1); lx(2);lx(2);lx(3);lx(3); lx(4);lx(4)]A1=[-f/H 0 -xy(1,1)/H -f*(1+(xy(1,1)^2)/(f^2)) -(xy(1,1))*(xy(1,2)/f) xy(1,2)0 -f/H -(xy(1,2))/H -(xy(1,1))*(xy(1,2)/f) -f*(1+(xy(1,2)^2)/(f^2)) -xy(1,2)]; A2=[-f/H 0 -xy(2,1)/H -f*(1+(xy(2,1)^2)/(f^2)) -(xy(2,1))*(xy(2,2)/f) xy(2,2)0 -f/H -(xy(2,2))/H -(xy(2,1))*(xy(2,2)/f) -f*(1+(xy(2,2)^2)/(f^2)) -xy(2,2)]; A3=[-f/H 0 -xy(3,1)/H -f*(1+(xy(3,1)^2)/(f^2)) -(xy(3,1))*(xy(3,2)/f) xy(3,2)0 -f/H -(xy(3,2))/H -(xy(3,1))*(xy(3,2)/f) -f*(1+(xy(3,2)^2)/(f^2)) -xy(3,2)]; A4=[-f/H 0 -xy(4,1)/H -f*(1+(xy(4,1)^2)/(f^2)) -(xy(4,1))*(xy(4,2)/f) xy(4,2)0 -f/H -(xy(4,2))/H -(xy(4,1))*(xy(4,2)/f) -f*(1+(xy(4,2)^2)/(f^2)) -xy(4,2)]; A=[A1;A2;A3;A4];X=(A'*A)\A'*LXS1=(XS0+X(1))YS1=(YS0+X(2))ZS1=(ZS0+X(3))Fai1=Fai0+X(4)Oum1=Oum0+X(5)Kpa1=Kpa0+X(6)XS1=(XS0+X(1))YS1=(YS0+X(2))ZS1=(ZS0+X(3))jishu=1;while (abs((Fai1-Fai0)>0.000003)||(abs(Oum1-Oum0)>0.000003)...||(abs(Kpa1-Kpa0))>0.000003)jishu=jishu+1XS0=XS1YS0=YS1ZS0=ZS1Fai0=Fai1Oum0=Oum1Kpa0=Kpa1a1=cos(Fai0)*cos(Kpa0)-sin(Fai0)*sin(Oum0)*sin(Kpa0);a2=-cos(Fai0)*sin(Kpa0)-sin(Fai0)*sin(Oum0)*cos(Kpa0);a3=-sin(Fai0)*cos(Oum0);b1=cos(Oum0)*sin(Kpa0);b2=cos(Oum0)*cos(Kpa0);b3=-sin(Oum0);c1=sin(Fai0)*cos(Kpa0)+cos(Fai0)*sin(Oum0)*sin(Kpa0);c2=-sin(Fai0)*sin(Kpa0)+cos(Fai0)*cos(Oum0)*cos(Kpa0);c3=cos(Fai0)*cos(Oum0);for i=1:4f=28.1359/1000;x(i)=-f*(a1*(XYZ(i,1)-XS0)+b1*(XYZ(i,2)-YS0)+c1*(XYZ(i,3)-ZS0))/...(a3*(XYZ(i,1)-XS0)+b3*(XYZ(i,2)-YS0)+c3*(XYZ(i,3)-ZS0));y(i)=-f*(a2*(XYZ(i,1)-XS0)+b2*(XYZ(i,2)-YS0)+c2*(XYZ(i,3)-ZS0))/...(a3*(XYZ(i,1)-XS0)+b3*(XYZ(i,2)-YS0)+c3*(XYZ(i,3)-ZS0));lx(i)=xy(i,1)-x(i);ly(i)=xy(i,2)-y(i);endxyL=[lx(1);lx(1); lx(2);lx(2);lx(3);lx(3); lx(4);lx(4)]A1=[-f/H 0 -xy(1,1)/H -f*(1+(xy(1,1)^2)/(f^2)) -(xy(1,1))*(xy(1,2)/f) xy(1,2)0 -f/H -(xy(1,2))/H -(xy(1,1))*(xy(1,2)/f) -f*(1+(xy(1,2)^2)/(f^2)) -xy(1,2)]; A2=[-f/H 0 -xy(2,1)/H -f*(1+(xy(2,1)^2)/(f^2)) -(xy(2,1))*(xy(2,2)/f) xy(2,2)0 -f/H -(xy(2,2))/H -(xy(2,1))*(xy(2,2)/f) -f*(1+(xy(2,2)^2)/(f^2)) -xy(2,2)]; A3=[-f/H 0 -xy(3,1)/H -f*(1+(xy(3,1)^2)/(f^2)) -(xy(3,1))*(xy(3,2)/f) xy(3,2)0 -f/H -(xy(3,2))/H -(xy(3,1))*(xy(3,2)/f) -f*(1+(xy(3,2)^2)/(f^2)) -xy(3,2)]; A4=[-f/H 0 -xy(4,1)/H -f*(1+(xy(4,1)^2)/(f^2)) -(xy(4,1))*(xy(4,2)/f) xy(4,2)0 -f/H -(xy(4,2))/H -(xy(4,1))*(xy(4,2)/f) -f*(1+(xy(4,2)^2)/(f^2)) -xy(4,2)]; A=[A1;A2;A3;A4];X=(A'*A)\A'*LFai1=Fai0+X(4)Oum1=Oum0+X(5)Kpa1=Kpa0+X(6)XS1=(XS0+X(1))YS1=(YS0+X(2))ZS1=(ZS0+X(3))end(3)运行结果:改正数:X =1.0e-003 *0.880693463596646-0.173862879363425-0.160454437823512-0.0014419260245700.0003069730686500.000107948847312外方位元素:Fai =0.054994013287714Oum =0.056571816845093Kpa =-0.036172713831137XS =5.002154276846778e+005YS =4.185302159274295e+006ZS =1.475497145016308e+003(4)心得体会通过本次编程,我对单向空间后方交会的算法有了直观、深入的了解,并对Matlab的使用有了进一步的认识。
单像空间后方交会实习报告
单像空间后方交会实习报告一、引言在我参加实习项目期间,我有幸在测绘工程实践中学习到了单像空间后方交会的相关知识和技能。
本报告旨在总结和详细介绍我在这个项目中所学到的内容,并分享我在实践中的经验和感悟。
二、实习背景实习项目的目标是通过使用单像空间后方交会方法对给定的影像数据进行三维测量,实现对地物位置和形状的准确测绘。
实习过程中,我所参与的任务是基于无人机获取的航片进行测绘,希望能达到较高的准确性和精度。
三、实习内容1. 影像数据获取与准备为了能够进行后方交会,首先我需要获取一组高质量、清晰度较高的影像数据。
在实习项目中,我们使用了专业的无人机拍摄了一系列航测相片。
在选择相机设备、安装和定位无人机方面,我们尽可能保证了影像的质量和准确性。
2. 影像处理和点提取获取到影像数据后,对影像进行预处理以满足后方交会的需要。
这一步骤包括图像的几何校正、色调校正等。
接下来,从影像中手动或者自动提取出具有明显特征点的区域,作为后方交会的控制点。
3. 单像空间后方交会参数计算在进行后方交会之前,需要确定准确的内、外方位元素。
内方位元素包拟化比例分母纸试验、比例尺、转分度仪、坐标尺等设备。
外方位元素的测量利用经纬度、高程等信息,通过空间三角测量的方法来计算。
4. 控制点的标定和精度评定为了保证交会精度,需要至少有三个以上的控制点,同时还需在计算之前对这些控制点进行标定。
控制点的标定首先进行坐标基准的精确定义,然后通过重复测量来评估控制点的精度。
5. 三维坐标的计算根据前面计算得到的内、外方位元素以及控制点的坐标,可以利用单像空间后方交会的方法来计算其它像上点的坐标。
这一步骤主要涉及相对定向和绝对定向的计算,其中相对定向可以通过一些数学模型和算法来实现。
四、实习总结通过参与单像空间后方交会实习项目,我深刻认识到了测绘工程的重要性和挑战性。
在实践中,我学到了很多相关的知识和技能。
首先,我掌握了使用无人机获取影像数据的方法和技巧,了解了影像处理的基本步骤和注意事项。
编写单片空间后方交会程序实习一
实验一 编写单片空间后方交会程序
一、实验目的
用程序设计语言(Visual C++或者C 语言、matlab 语言)编写一个完整的单片空间后方交会程序,通过对提供的试验数据进行计算,输出像片的外方位元素并评定精度。
本实验的目的在于让学生深入理解单片空间后方交会的原理,体会在有多余观测情况下,用最小二乘平差方法编程实现解求影像外方位元素的过程。
通过上机调试程序加强动手能力的培养,通过对实验结果的分析,增强学生综合运用所学知识解决实际问题的能力。
二、实验内容与要求
利用一定数量的地面控制点,根据共线条件方程求解像片外方位元素。
三、实验原理
根据摄影过程的几何反转原理。
四、实验数据准备
﹡ 已知航摄仪的内方位元素0,24.15300===y x mm f (摄影比例尺为1:50000); ﹡ 4个地面控制点的地面坐标及其对应像点的像片坐标:
1.每人必须独立上机操作;
2.实验前认真复习单片空间后方交会的有关内容。
六、实验报告
原理、实验步骤及程序框图
上机调试程序并打印结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级:测绘一班 学号:20133279日期:2015426Southw^ JIaotong UnjiverSity、计算原理.二、算法流程.三、源程序.四、计算结果.五、结果分析.六、心得体会. 目录131313、计算原理已知条件摄影机主距f=153.24mm, xO=O, yO=O,像片比例尺为1:40000,有四对点的像点坐标与相应的地面坐标如下表。
二、算法流程(1)获取已知数据。
从航摄资料中差取平均航高与摄影机主距;获取控制点的地面测量坐标并转换为地面摄影坐标。
(2)量测控制点的像点坐标并作系统误差改正。
(3)确定未知数的初始值。
在竖直摄影且地面控制点大体对称分布的情况下,按如下方法确定初始值,即x S 上,Y s0n丄Z0n,Z s mf(4)用三个角元素的初始值按下式,计算各个方向余弦值,组成旋转矩阵R31 cos cos sin sin sina2cos sin sin sin cos33 sin cosb1 cos sinb2 cos cosb3 sinC1 sin cos cos sin sin'c sin sin cos sin cosC3 cos cos(5)逐点计算像点坐标的近似值。
禾I」用未知数的近似值和控制点的地面坐标; 带入共线方程式,逐点近似像点坐标的近似值((6)(7) X)、(y)。
逐点计算误差方程式的系数和常数项,组成误差方程式。
计算法方程的系数矩阵A A和常数项A L L,组成法方程式。
(8) 解法方程,求得外方位元素的改正数dX s、dY s、dZ s、d、d、d 。
(9)用前次迭代取得的近似值,加本次迭代的改正数,xr xL dX S\Y S K Y S K1 dY S K,Z K 计算外方位元素的新值。
z K1dz(K K 1 . K K K 1 . K Kd , d ,(10)将求得的外方位元素改正数与规定的限差比较,负责用新的近似值重复(4)-(9),直到满足要求为止。
若小于限差,则迭代结束。
用共线方程进行空间后方交会的程序框如图所示。
输入原始数据像点坐标计算,系统误差正 确定外方位因素初始值组成旋转矩阵R所有像点完否是C解法方程,求外方位元素改正数计算改正后的外方位元素 外方位元素改正数是否小于限差 输出计算成果,计算并结束、源程序#in elude ”ostream" using n ames pace std;#in elude "fstream" #in clude <ioma nip>const int n=6;void in verse(double c[n ][ n]);temp late<t ypen ame Tl,t ypen ame T2>void transp ose (TI*mat1,T2*mat2,i nt a,i nt b);temp latevty pen ame TI,t ypen ame T2>void multi(T1*mat1,T2*mat2,T2*result, i nt a, i nt b, i nt c); int mai n() {doublex[4][2]={-0.08615,-0.06899,-0.05340,0.08221 ,-0.01478,-0.07663,0.01046,0.06443};doubleX[4][3]={36589.41,25273.32,2195.17,37631.08,31324.51,728.69,39100.97,24934.98, 2386.50,40426.54,30319.81,757.31};int i,j,num=0;//num 为迭代次数double X0[6]={0};//设定未知数(XS,YS,ZS,三个角度)初始值 double f=0.15324;// 摄影机主距 f=153.24mm结束并显示错误信息逐点组成误差方程式并法化否否L迭代次数小于ndouble a=1/40000.0;// 像片比例尺为 1:40000 double R[3][3]={0};// 初始化旋转知阵 R double approx_ x[8]={0};// 用于存放像点估计值 double A[8][6] 二 {0};// 定义了一个系数阵 double AT[6][8] 二 {0};// 定义了 A 的转置知阵 double L[8]={0}:// 定义常数项 const double pi=3.1415926535897932; double Asum[6][6]={0}; double result2[6]={0}; double resultl[6][8]={0}; double sumXYZ[3]={0}; cout.precision(5); cout<< ”已知像点坐标为 :\n ”; for(i=0;i<4;i++)for(j=0;j<2;j++){cout<<fixed: if (j==0)cout<< ”x ”<<i+l<< ”=”<<setw (8)<<x[i][j]<<{cout<< ”Z ”;cout<<i+1;cout<<}}cout<<endl; for(j=0;j<3;j++)for(i=0;i<4;i++) sumXYZ[j]+=X[i][j];for(i=0;i<2;i++)X0[i]=sumXYZ[i]/4;//X0,Y0 初始化X0[i]=1/a*f+sumXYZ[2]/4. 0;// 对 Z0 进行初始化 do{}else{cout<< ”y"<<i+1<< ”=”<<setw(6)<<x[i][j]<<en dl;}}cout<< ”己知地面四个点的坐标为 for(i=0;i<4;i++) for(j=0;j<3;j++) {if (j==0){cout<< ”X";cout<<i+1;cout<<}else if(j==1) {cout<< ”Y";cout<<i+1;cout<<}else:\n ”;<<X[i][j]<< ” ”<<X[i][j)<< ” ””;cout<<X[i][j]<<endl;R[0][0]=cos(X0[3])*cos(X0[5])-sin(X0[3])*sin(X0[4])*sin(X0[5]);R[0][I]=-cos(X0[3])*sin(X0[5])-sin(X0[3])*sin(X0[4])*cos(X0[5]);R[0][2]=-sin(X0[3])*cos(X0[4]);R[1][0]=cos(X0[4])*sin(X0[5]);R[I1[1]=cos(X0[4])*cos(X0[5]);R[1][2]=-sin(X0[4]);R[2][0]=sin(X0[3])*cos(X0[5])+cos(X0[3])*sin(X0[4])*sin(X0[5]);R[2][l]=-sin(X0[3])*sin(X0[5])+cos(X0[3])*sin(X0[4])*cos(X0[5]);R[2][2]=cos(X0[3])*cos(X0[4]);//第一个像点的估计值,第一个点的坐标存放于X [0] [0],X [0] [1],X [0] [2]approx_x[0]=-f*(R[0][0]*(X[0][0]-X0[0])+R[1][0]*(X[0][1]-X0[1])+R[2][0]*(X[0][2]-X0[2]))/( R[0][2]*(X[0][0]-X0[0])+R[1][2]*(X[0][1]-X0[1])+R[2][2]*(X[0][2]-X0[2])); approx_x[1]=-f*(R[0][1]*(X[0][0]-X0[0])+R[1][1]*(X[0][1]-X0[1])+R[2][1]*(X[0][2]-X0[2]))/( R[0][2]*(X[0][0]-X0[0])+R[1][2]*(X[0][1]-X0[1])+R[2][2]*(X[0][2]-X0[2])); //第二个像点的估计值,第 2 个点的坐标存放于X[1][0],X[1][1],X[1][2] approx_x[2]=-f*(R[0][0]*(X[1][0]-X0[0])+R[1][0]*(X[1][1]-X0[1])+R[2][0]*(X[1][2]-X0[2]))/( R[0][2]*(X[1][0]-X0[0])+R[1][2]*(X[1][1]-X0[1])+R[2][2]*(X[1][2]-X0[2])); approx_x[3]=-f*(R[0][1]*(X[1][0]-X0[0])+R[1][1]*(X[1][1]-X0[1])+R[2][1]*(X[1][2]-X0[2]))/( R[0][2]*(X[1][0]-X0[0])+R[1][2]*(X[1][1]-X0[1])+R[2][2]*(X[1][2]-X0[2]));//第三个像点的估计值,第 3 个点的坐标存放于X[2][0],X[2][1],X[2][2] approx_x[4]=-f*(R[0][0]*(X[2][0]-X0[0])+R[1][0]*(X[2][1]-X0[1])+R[2][0]*(X[2][2]-X0[2]))/( R[0][2]*(X[2][0]-X0[0])+R[1][2]*(X[2][1]-X0[1])+R[2][2]*(X[2][2]-X0[2])); approx_x[5]=-f*(R[0][1]*(X[2][0]-X0[0])+R[1][1]*(X[2][1]-X0[1])+R[2][1]*(X[2][2]-X0[2]))/( R[0][2]*(X[2][0]-X0[0])+R[1][2]*(X[2][1]-X0[1])+R[2][2]*(X[2][2]-X0[2])); //第四个像点的估计值,第 4 个点的坐标存放于X[3][0],X[3][1],X[3][2] approx_x[6]=-f*(R[0][0]*(X[3][0]-X0[0])+R[1][0]*(X[3][1]-X0[1])+R[2][0]*(X[3][2]-X0[2]))/( R[0][2]*(X[3][0]-X0[0])+R[1][2]*(X[3][1]-X0[1])+R[2][2]*(X[3][2]-X0[2])); approx_x[7]=-f*(R[0][1]*(X[3][0]-X0[0])+R[1][1]*(X[3][1]-X0[1])+R[2][1]*(X[3][2]-X0[2]))/( R[0][2]*(X[3][0]-X0[0])+R[1][2]*(X[3][1]-X0[1])+R[2][2]*(X[3][2]-X0[2])); for(i=0;i<4;i++){//第i 个像点估计值放在approx_x[2*(i-1)],approx_x[2*i-1]/*a11*/A[2*i][0]=(R[0][0]*f+R[0][2]*approx_x[2*i])/(R[0][2]*(X[i][0]-X0[0])+R[1][2]*(X[i][1]-X0[1])+R[2][2]*(X[i][2]-X0[2]));/*a12*/A[2*i][1]=(R[1][0]*f+R[1][2]*approx_x[2*i])/(R[0][2]*(X[i][0]-X0[0])+R[1][2]*(X[i][1] -X0[1])+R[2][2]*(X[i][2]-X0[2]));/*a13*/A[2*i][2]=(R[2][0]*f+R[2][2]*approx_x[2*i])/(R[0][2]*(X[i][0]-X0[0])+R[1][2]*(X[i][1] -X0[1])+R[2][2]*(X[i][2]-X0[2]));/*a21*/A[2*i+1][0]=(R[0][1]*f+R[0][2]*approx_x[2*i+1])/(R[0][2]*(X[i][0]-X0[0])+R[1][2]*(X[i][1]-X0[1])+R[2][2]*(X[i][2]-X0[2]));/*a22*/A[2*i+1][1]=(R[1][1]*f+R[1][2]*approx_x[2*i+1])/(R[0][2]*(X[i][0]-X0[0])+R[1][2]*(X[i][1]-X0[1])+R[2][2]*(X[i][2]-X0[2]));/*a23*/A[2*i+1][2]=(R[2][1]*f+R[2][2]*approx_x[2*i+1])/(R[0][2]*(X[i][0]-X0[0])+R[1][2]*(X[i][1]-X0[1])+R[2][2]*(X[i][2]-X0[2]));/*a14*/A[2*i][3]=approx_x[2*i+1]*sin(X0[4])-(approx_x[2*i]/f*(approx_x[2*i]*cos(X0[5])-approx_x[2*i+1]*sin(X0[5]))+f*cos(X0[5]))*cos(X0[4]);/*a15*/A[2*i][4]=-f*sin(X0[5])-approx_x[2*i]/f*(approx_x[2*i]*sin(X0[5])+approx_x[2*i+1]*co s(X0[5])); /*a16*/A[2*i][5]=approx_x[2*i+1];/*a24*/A[2*i+1][3]=-1*approx_x[2*i]*sin(X0[4])-(approx_x[2*i+1]/f*(approx_x[2*i]*cos(X0[5] )-approx_x[2*i+1]*sin(X0[5]))-f*sin(X0[5]))*cos(X0[4]);/*a25*/A[2*i+1][4]=-1*f*cos(X0[5])-approx_x[2*i+1]/f*(approx_x[2*i]*sin(X0[5])+approx_x[2*i+1]*cos(X0[5]));/*a26*/A[2*i+1][5]=-approx_x[2*i];}//进行常数项的初始化for(i=0;i<4;i++){L[2*i]=x[i][0]-approx_x[2*i];L[2*i+1]=x[i][1]-approx_x[2*i+1];}//A 的转置矩阵for(i=0;i<8;i++)for(j=0;j<6;j++){AT[j][i]=A[i][j];}// 实现 A 与AT 相乘int k=0;for(i=0;i<6;i++)for(j=0;j<6;j++)Asum[i][j]=0;for(i=0;i<6;i++)for(k=0;k<6;k++)for(j=0;j<8;j++)Asum[i][k]+=A T[i][j]*A[j][k];// 得到AT*A 的逆矩阵存放在inverseAsum[6][6] 中inverse(Asum);//实现矩阵Asum[6][6] 与AT[6][8] 的相乘,结果存放在result1[6][8] 中for(i=0;i<6;i++)for(j=0;j<8;j++)result1[i][j]=0;for(i=0;i<6;i++) for(k=0;k<8;k++)for(j=0;j<6;j++)result1[i][k]+=Asum[i][j]*AT[j][k];//实现resultl [6][8]与1[8]的相乘,得到结果放在result2[6]中;for(i=0;i<6;i++)result2[i]=0;for(i=0;i<6;i++)for(j=0;j<8;j++)result2[i]+=result1[i][j]*L[j];num++;for(i=0;i<6;i++){X0[i]=X0[i]+result2[i];}ofstream f7("d:\\A.txt");f7<< std::fixed;cout<<"进行第"<<num<<"次迭代带得到Xs,Ys,Zs, ^,3, K改正数分别为:\n";for(i=0;i<6;i++){ cout<<setw(12)<<result2[i];f7<<setw(12)<<result2[i];}cout<<endl<<endl;f7.close();getchar();}while(abs(result2[3]*206265.0)>6||abs(result2[4]*206265.0)>6||abs(result2[5]*20626 5.0)>6);cout<<"\n 满足限差条件结束循环,最终结果为:\n";cout<<setw(12)<<"Xs"<<setw(12)<<"Ys"<<setw(12)<<"Zs"<<setw(12)<<" p "<<setw(12)<<" 3"<<setw(12)<<" K "<<endl;ofstream f7("d:\\A.txt");f7<< std::fixed;cout.precision(4);for(i=0;i<6;i++){cout<<setw(12)<<X0[i];f7<<setw(16)<<X0[i];}f7.close();//今double XG[6][1];for(i=0;i<6;i++)XG[i][0]=result2[i];double AXG[8][1],V[8][1],VT[1][8],VTV[1][1],m0,D[6][6];multi(A,XG,AXG,8,6,1);for( i=0;i<8;i++)//计算改正数V[i][0]=AXG[i][0]-L[i];transpose (V,VT,1,8);multi(VT,V ,VTV,1,8,1);m0=VTV[0][0]/2;cout<<endl;ofstream f6("d:\\what.txt");// f6<< std::fixed;for(i=0;i<6;i++){for(int j=0;j<6;j++){D[i][j]=m0*Asum[i][j]; cout<<setw(10)<<D[i][j];f6<<setw(15)<<D[i][j];}cout<<endl;f6<<endl;}for(i=0;i<6;i++)cout<<sqrt(D[i][i])<<endl;f6.close();//屏幕输出误差方程系数阵、常数项、改正数//getchar();return 0;}void inverse(double c[n][n]){ int i,j,h,k; double p;double q[n][12];for(i=0;i<n;i++)// 构造高斯矩阵for(j=0;j<n;j++)q[i][j]=c[i][j];for(i=0;i<n;i++)for(j=n;j<12;j++){if(i+6==j)q[i][j]=1;elseq[i][j]=0;}for(h=k=0;k<n-1;k++,h++)// 消去对角线以下的数据for(i=k+1;i<n;i++){ if(q[i][h]==0) continue; p=q[k][h]/q[i][h];for(j=0;j<12;j++){q[i][j]*=p;q[i][j]-=q[k][j];}}for(h=k=n-1;k>0;k--,h--) // 消去对角线以上的数据for(i=k-1;i>=0;i--) {if(q[i][h]==0)continue;p=q[k][h]/q[i][h];for(j=0;j<12;j++){q[i][j]*=p; q[i][j]-=q[k][j];}}for(i=0;i<n;i++)// 将对角线上数据化为 1{ p=1.0/q[i][i];for(j=0;j<12;j++)q[i][j]*=p;}for(i=0;i<n;i++) // 提取逆矩阵for(j=0;j<n;j++)c[i][j]=q[i][j+6];}template<typename T1,typename T2>void transpose(T1*mat1,T2*mat2,int a,int b){ int i,j;for(i=0;i<b;i++)for(j=0;j<a;j++)mat2[j][i]=mat1[i][j];return;}template<typename T1,typename T2>void multi(T1*mat1,T2 * mat2,T2 * result,int a,int b,int c){for(i=0;i<a;i++) for(j=0;j<c;j++) result[i][j]=0; for(k=0;k<b;k++) result[i][j]+=mat1[i][k]*mat2[k][j];return;程序截图五、结果分析六、心得体会本次实验是关于单张像片的空间后方交会的计算原理及实现过程的课程作业, 其中解题步骤和公式是基本, 熟练运用公式并且成功编程是重点。