作业4--空间后方交会.

上传人:我** 文档编号:115404845 上传时间:2019-11-13 格式:DOC 页数:17 大小:177KB
返回 下载 相关 举报
作业4--空间后方交会._第1页
第1页 / 共17页
作业4--空间后方交会._第2页
第2页 / 共17页
作业4--空间后方交会._第3页
第3页 / 共17页
作业4--空间后方交会._第4页
第4页 / 共17页
作业4--空间后方交会._第5页
第5页 / 共17页
点击查看更多>>
资源描述

《作业4--空间后方交会.》由会员分享,可在线阅读,更多相关《作业4--空间后方交会.(17页珍藏版)》请在金锄头文库上搜索。

1、摄影测量作业报告之空间后方交会陈闻亚 20080729作业报告空间后方交会专 业: 测绘工程 班 级: 2008级(1)班 姓 名: 陈闻亚 指导教师: 陈强 2010 年 4 月 16 日1 作业任务 -32 作业思想 -33 作业条件及数据-34 作业过程 -35 源程序 - 46 计算结果 - 177心得体会与建议- 171 作业任务计算近似垂直摄影情况下后方交会解。即利用摄影测量空间后方交会的方法,获取相片的6个外方位元素。限差为0.1。2作业思想利用摄影测量空间后方交会的方法求解。该方法的基本思想是利用至少三个一直地面控制点的坐标A(XA,YA,ZA)、B(XB,YB,ZB)C(XC

2、,YC,ZC),与其影像上对应的三个像点的影像坐标a(xa,ya)、b(xb,yb)、c(xc,yc),根据共线方程,反求该相片的外方位元素XS、YS、ZS、。3作业条件及数据已知摄影机主距f=153.24mm,四对点的像点坐标与相应的地面坐标列入下表:表1点号像点坐标地面坐标x(mm)y(mm)X(m)Y(m)Z(m)1-86.15-68.9936589.4125273.322195.172-53.40-82.2137631.0831324.51.728.69314.7876.6339100.9724934.982386.50410.4664.4340426.5430319.81757.31

3、4作业过程 41 获取已知数据 相片比例尺1/m=1:10000,内方位元素f=153.24mm,x0,y0;获取控制点的地面测量坐标Xt、Yt、Zt。42 量测控制点的像点坐标: 本次作业中为已知。见表1。43 确定未知数的初始值: 在近似垂直摄影情况下,胶原素的初始值为0,即0 = 0 = 0=0;线元素中,ZS0=H=mf=1532.4m,XS0、YS0的取值可用四个控制点坐标的平均值,即:XS0= =38437.00YS0= =89106.6244 计算旋转矩阵R: 利用胶原素的近似值计算方向余弦值,组成R阵。45 逐点计算像点坐标的近似值: 利用未知数的近似值按共线方程式计算控制点像

4、点坐标的近似值(x)(y)。46 组成误差方程: 逐点计算误差方程式的系数和常数项。47 组成法方程式: 计算法方程的系数矩阵ATA与常数项ATL。48 求解外方位元素: 根据法方程,由式X=(AtA)-1 ATL解求外方位元素改正数,并与相应的近似值求和,得到外方位元素新的近似值。49 求解外方位元素: 将求得的外方位元素的改正数与规定的限差(0.1)比较,小于限差则计算终止,否则用新的近似值重复第4.4至4.8步骤的计算,知道满足要求为止。5 源程序#include #include #include const double PRECISION=1e-5;typedef double D

5、OUBLE5;int InputData(int &Num, DOUBLE *&Data,double &m,double &f);int Resection(const int &Num,const DOUBLE *&Data,const double &m,const double &f);int InverseMatrix(double *matrix,const int &row);int main(int argc, char* argv)DOUBLE *Data=NULL;int Num;double f(0),m(0);if(InputData(Num,Data,m,f) if

6、(Data!=NULL) delete Data; return 1;if(Resection(Num,Data,m,f) if (Data!=NULL) delete Data; return 1;if (Data!=NULL) delete Data;printf(解算完毕.n);do printf(计算结果保存于结果.txt文件中n 请选择操作(输入P打开结果数据,R打开原始数据,其它退出程序):); fflush(stdin); /刷新输入流 char order=getchar(); if (P=order | p=order) system(结果.txt); else if (R=

7、order | r=order) system(data.txt); else break; system(cls);while(1);system(PAUSE);return 0;/*函数名:InputData *函数介绍:从文件(data.txt)中读取数据,*文件格式如下: *点数 m(未知写作0)* 内方位元素(f x0 y0)*编号 x y X Y Z*实例:4 0153.24 0 01 -86.15 -68.99 36589.41 25273.32 2195.172 -53.40 82.21 37631.08 31324.51 728.693 -14.78 -76.63 39100

8、.97 24934.98 2386.504 10.46 64.43 40426.54 30319.81 757.31*参数:(in/out)Num(点数),*(in/out)Data(存放数据),m,f,x0,y0*返回值:int ,0成功,1文件打开失败,2控制点个*数不足,3文件格式错误*/int InputData(int &Num, DOUBLE *&Data,double &m,double &f)double x0,y0;FILE *fp_input;if (!(fp_input=fopen(data.txt,r) return 1;fscanf(fp_input,%d%lf,&N

9、um,&m);if (Num4) return 2;fscanf(fp_input,%lf%lf%lf,&f,&x0,&y0);f/=1000;if (m0 | f0) return 3;Data=new DOUBLENum;double *temp= new doubleNum-1;double scale=0;int i;for (i=0;iNum;i+) /读取数据,忽略编号 if(fscanf(fp_input,%*d%lf%lf%lf%lf%lf, &Datai0,&Datai1,&Datai2, &Datai3,&Datai4)!=5) return 3; /单位换算成m Data

10、i0/=1000.0; Datai1/=1000.0;/如果m未知则归算其值if (0=m) for (i=0;iNum-1;i+) tempi=(Datai2-Datai+12)/(Datai0-Datai+10)+ (Datai3-Datai+13)/(Datai1-Datai+11); scale+=tempi/2.0; m=scale/(Num-1);fclose(fp_input);delete temp;return 0;/*函数名:MatrixMul *函数介绍:求两个矩阵的积,*参数:Jz1(第一个矩阵),row(第一个矩阵行数),*Jz2(第二个矩阵),row(第二个矩阵列数),com(第一个*矩阵列数),(out)JgJz(存放结果矩阵)*返回值:void*/void MatrixMul(double *Jz1,const int &row,double *Jz2, const int &line,const int &com,double *JgJz)for (int i=0;irow;i+) for (int j=0;jline;j+) double temp=0; for (int k=0;kcom;k+) temp+=*(Jz1+i*com+k)*(*(Jz2+k*line+j); *

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号