立体像对的前方交会B11090509

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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());

相关文档
最新文档