立体像对的前方交会B11090509
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告
(2013/2014学年第一学期)
题目:立体像对的前方交会
专业测绘工程
学生姓名卞鸿磊
班级学号B********
指导教师杨立君
指导单位地理与生物信息学院
日期2013年12月29日
立体像对的前方交会
一、内容与要求
(1) 以读文本文件的形式读取立体像对的外方位元素值;
(2) 以读取文本文件的形式读取同名像点坐标;
(3) 计算投影系数,像空间辅助坐标系坐标及地面摄影测量坐标系坐标;
(4) 首先自己设计好界面和算法,解算中间参数及成果应通过窗口或对话框进行显示;
(5) 界面友好,可操作性强,输入信息符合专业规范;
(6) 必须完成所要求的各基本功能;
(7) 程序设计语言可根据个人情况进行选择,建议使用IDL交互式程序设计语言。
二、基本原理
立体像对与所摄影地面存在着一定几何关系,这种关系可以用数学表达式来描述,若在S1,S2两个摄站点对地面摄影,获取一个立体像对,任一地面点A 在该像对的左右相片上的构象为a1,a2。现已知这两张相片的内外方位元素,设想将该相片按内外方位元素值置于摄影时的位置,显然同名射线S1a1与S2a2必然交于地面点A。这种由立体像对中两张像片的内,外方位元素和像点坐标来确定相应地面点的地面坐标的方法,称为空间前方交会。
空间前方交会基本关系式:
要确定像点与其对应的地面点的数学表达式,要设定D-XYZ地面摄影测量坐标系,S1-U1V1W1及S2-U2V2W2分别为左右相片的相空间辅助坐标系,且两个像空间辅助坐标系的三个轴系分别与D-XYZ三轴平行。
设地面点A在D-XYZ坐标系中的坐标为(X,Y,Z),地面点A在S1-U1V1W1及S2-U2V2W2中的坐标分别为(U1,V1,W1)及(U2,V2.W2),A点相应像点a1,a2的像空间坐标为(x1,y1,-f),(x2,y2,-f),像点的像空间辅助坐标为(u1,v1,w1),(u2,v2,w2),则有:
⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡f y x R w v u f y x R w v u 222122,111111(1-1)
式中的R1,R2为由已知的外方位角元素计算的左右像片的旋转矩阵,右摄影站点S2,在S1-U1V1W1中的坐标,即摄影基线B 的三个分量Bu ,Bv ,Bw ,可由外方位元素计算:
Bu=Xs2-Xs1
Bv=Ys2-Ys1;(1-2)
Bw=Zs2-Zs1
因左右像空间辅助坐标系及D-XYZ 相互平行,且设站点,像点,地面三点共线,由此可得出:
22
222222221111111111N w W v V u U a S A S N w W v V u U a S A S ========(1-3) 式中的N1,N2分别称为左右像点的投影系数。U1,V1,W1为地面点A 在S1-U1V1W1中的坐标;U2,V2,W2为地面点A 在S2-U2V2W2中的坐标,
⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1222222,1111111W v u N W V U w v u N W V U (1-4) 最后得出计算地面点坐标公式:
X=Xs1+U1=Xs2+U2
Y=Ys1+V1=Ys2+V2;(1-5)
Z=Zs1+W1=Zs2+W2
一般地,在计算地面点Y 坐标时,应取值,即
Y=0.5[(Ys1+N1v1)+(Ys2+N2v2)]
由此可得求投影系数的计算式为:
122121212212
21w u w u Bwu Buw N w u w u Bwu Buw N --=--=
;(1-6)
上述公式即为立体像对前方交会基本公式。
三、程序设计思路
该流程图的思路:
先读取数据,然后根据C#的要求对数据进行格式转换然后赋给事先定义的变量,将其在界面上指定的文本框中显示出来。紧接着根据立体像对的一些公式,一步步计算所需的参数,然后分别计算投影系数,N1,N2,相空间辅助坐标u1,v1,w1,u2,v2,w2,最后求解地面点坐标X,Y,Z。最终并将其显示在界面中。
该算法中:
textBox14.Text = Zs1.ToString("0.00000");用于将数据转换为字符型放进文本框中,且以保留6位有效数字的形式存储;f = double.Parse(sr.ReadLine());将从文件中读取的字符型数据转换为double型赋给我事先定义的变量;C# 中调用余弦函数以Math.Cos();形式调用。
四、源程序代码
//读取文件,并显示到文本框
double x1, x2, y1, y2, f;
double o1, o2, p1, p2, q1, q2;
double Xs1, Xs2, Ys1, Ys2, Zs1, Zs2;
StreamReader sr = new StreamReader(@"D:bhl1.txt", System.Text.Encoding.Default);
Xs1 = double .Parse( sr.ReadLine());
Ys1 = double.Parse(sr.ReadLine());
Zs1 = double.Parse(sr.ReadLine());
o1 = double.Parse(sr.ReadLine());
p1 = double.Parse(sr.ReadLine());
q1 = double.Parse(sr.ReadLine());
x1 = double.Parse(sr.ReadLine());
y1 = double.Parse(sr.ReadLine());
f = double.Parse(sr.ReadLine());
Xs2 = double.Parse(sr.ReadLine());
Ys2 = double.Parse(sr.ReadLine());
Zs2 = double.Parse(sr.ReadLine());