测绘程序课程设计报告书Word文档格式.docx
- 文档编号:16974015
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:18
- 大小:923.78KB
测绘程序课程设计报告书Word文档格式.docx
《测绘程序课程设计报告书Word文档格式.docx》由会员分享,可在线阅读,更多相关《测绘程序课程设计报告书Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
2天;
整理资料、编写课程设计报告:
上交资料、总结:
1天。
二、课程设计主要内容
(一)
测绘程序设计技术课程设计的主要目的是通过具体问题分析、程序设计的过程锻炼学生分析问题、掌握实际数据处理计算软件分析、设计与编写的基本技术和方法。
其主要内容如下:
1.熟练掌握VisualC++编程环境的使用,了解其特点与程序开发过程,掌软件调试、测试的技术方法。
2.分析测绘程序设计技术课程中相关软件的结构和模块功能,掌握结构化程序设计方法和技术,掌握测绘数据处理问题的基本特点。
3.开发相关程序功能模块,独立完成相关问题概念结构分析、程序结构设计、模块设计、代码编写、调试、测试等工作。
(二)
按要求完成以下程序设计:
1.高斯正反算程序
2.空间直角坐标(XYZ)与大地地理坐标(BLH)转换程序
3.空间直角坐标系转换程序
✧高斯正反算程序
a)高斯投影正算问题是利用大地地理坐标系坐标(B,L)来计算其对应的高斯平面直角坐标系坐标(x,y)的理论和方法,输入数据为(
),
为中央精度,高斯坐标为(
),高斯投影正算时经纬度用弧度表示,设椭球长半轴为
扁率分母为
短半轴为
定义
定义经差
设
,得到高斯正算公式
(1)
计算子午线收敛角的公式为
(2)
注意:
为使y坐标大于0,通常对y坐标值加500公里;
若满足3度或6度分带,在y坐标前加代号(代号最后一位在百万位)。
高斯投影反算问题
高斯投影反算问题是利用高斯平面直角坐标系坐标(x,y)来求其对应的大地地理坐标系坐标(B,L)的理论和方法,输入数据为(x,y,L0),注意:
通常高斯平面坐标y含有500公里加常数,如果符合3度或6度分带还含有带号信息,计算前应减去这些数据,其公式如下:
式中:
Bf—底点纬度,可由下式迭代计算
计算时,Bf初始值设为
。
Mf,Nf,ηf与tf,都是Bf的函数
1.2高斯投影反算
高斯投影反算问题是利用高斯平面直角坐标系坐标(x,y)来求其对应的大地地理坐标系坐标(B,L)的理论和方法,其公式如下:
(2)
Bf—底点纬度
Mf,Nf,ηf都是Bf的函数
✧空间直角坐标(XYZ)与大地地理坐标(BLH)转换程序
我们知道,地球表面可用一个椭球面表示。
设空间直角坐标系为OXYZ,当椭球的中心与空间直角坐标系原点重合,空间坐标系Z轴与地球旋转重合(北极方向为正),X轴正向经度为零时,就可以确定空间直角坐标系与大地地理坐标系的数学关系。
式中N为卯酉圈曲率半径,
;
e为椭球偏心率,
(a,b为椭球长半轴和短半轴)。
由
(2)式可以得到空间直角坐标到大地地理坐标的迭代计算公式
使用(3)式进行迭代计算的关键是纬度B的计算。
迭代计算的初始值可以设为
在迭代计算中,可以选择以下条件作为迭代结束条件
✧空间直角坐标系转换程序
设两空间直角坐标系分别为OXYZ和O’X’Y’Z’,坐标系原点不一致,存在三个平移参数,坐标轴不平行,存在三个角度旋转参数,且两坐标系尺度基准不同,还有一个尺度因子参数,显然,我们可以构造一个包含以上七个参数的模型来表示任意两个空间直角坐标系统间的关系。
(1)
这样,只要知道三个点的两个坐标系的坐标就可以确定
(1)式中的七个参数(△X,△Y,△Z,m,εx,εy,εz),从而确定两个坐标系的转换关系模型,在具体应用中,使用该模型实现两个坐标系统的坐标转换。
该问题的核心在于根据
(1)式列出计算七参数的数学模型:
由于测量中包含误差,故由
(1)式可以得到关于每个公共点的七参数的误差方程
这样列出所有公共点的误差方程,则可以构成V=AX-LP
形式的误差方程组,定义P为单位阵,则可以利用间接平差模型直接计算七个参数,然后根据七个参数使用
(1)式进行坐标转换。
三、课程设计具体内容(含技术报告和问题及解决方法)
高斯正反算包括两部分内容:
高斯正算和高斯反算。
简单的说就是大地地理坐标系坐标(B,L)与其对应的高斯平面直角坐标系坐标(x,y)之间的转换。
若已知大地地理坐标系坐标(B,L)解求对应的高斯平面直角坐标系坐标(x,y)称为高斯正算;
反之,则为高斯反算。
正反算的公式在上面已全部给出,这里不再赘述。
除了正反算的推导公式以外,该程序还应注意以下问题:
1、参考椭球的选择
2、正反算选择
3、角度弧度转换
4、反算底点纬度的迭代运算
参考椭球的选择,一般我们选用以下三种:
其中,a为椭球长半轴,bm为扁率分母。
(或《测绘程序设计技术基础》P33~P34)里面的d_h(doubleangle)和h_d(doubleangle)程式。
高斯正算中,要将输入的B、L角度值先转换弧度值再运算;
高斯反算中,在输入的X、Y将B、L算出后,直接将弧度转换为角度从屏幕输出结果就可以了。
起先对角度弧度转化,本来想缩短计算量,想用iPI=π/180直接去转化的,但一想该方法精度不高(一般只转化了度,分和秒没有转化),在老师的建议下还是用了课本上的h_d及d_h的函数转化。
在运用过程中海遇到了考虑问题不全面的问题。
如高斯正算过程中,对输入的B、L值运算前就应转化,这点毋庸置疑,但对L0的值也应转化。
由于先前遗忘了这一点,故使得X、Y值算出不符合实际。
这一点也是老师发现的。
对于底点纬度的迭代运算,借用公式:
用while循环可求得。
具体循环体如下:
doubleBf0=x/a0;
doubleob;
while(fabs(ob)>
1e-10)
{Bf=(x-b0*sin(2*Bf0)-c0*sin(4*Bf0)-d0*sin(6*Bf0)-e0*sin(8*Bf0)-e0*sin(10*Bf0))/a0;
ob=Bf-Bf0;
Bf0=Bf;
}
由计算结果可以看出,高斯正反算互推结果一致!
原理同高斯正反算相同。
整体程序较高斯正反算容易。
程式公式课本及前面均有说明,这里也就不再赘述。
包括两部分内容:
从空间直角坐标转换到大地地理坐标及从大地地理坐标转换到空间直角坐标。
程序编写过程需要注意一下问题:
2、转换类型选择
4、TanB的迭代解算
对于参考椭球的选择和转换类型的选择,思路还是和高斯正反算一样,只需要swith语句就可实现。
形式和高斯正反算完全一致。
以下为选择参考椭球的函数:
intchoose_ellipsoid()
{
intstyle;
do{
cout<
<
"
请选择参考椭球类型:
\n1.WGS1984参考椭球;
\n2.西安1980参考椭球;
\n3.北京1954参考椭球;
\n4.退出\n"
<
endl;
cin>
>
style;
switch(style)
{
case1:
a=6378137;
bm=298.2572235635;
break;
case2:
a=6378140;
bm=298.257;
case3:
a=6378245;
bm=298.3;
case4:
return0;
default:
错误:
非法类型选择!
请重新选择"
style=0;
}
}while(style==0);
角度弧度转换在高斯正反算里面已有详细介绍,这里不再说明。
至于tanB的迭代解算,具体实行如下:
t0=Z*(1+ee)/sqrt(X*X+Y*Y);
doubleot;
while(fabs(ot)>
0.000000000000001)
{t1=(Z+a*ee*t0/sqrt(1+(1-ee)*t0*t0))/sqrt(X*X+Y*Y);
ot=atan(t1)-atan(t0);
t0=t1;
B=atan(t1);
该问题的核心在于根据上式列出计算七参数的数学模型:
由于测量中包含误差,故可以得到关于每个公共点的七参数的误差方程
形式的误差方程组,定义P为单位阵,则可以利用间接平差模型直接计算七个参数,然后根据七个参数进行坐标转换。
该程序较于之前二者思路较为明朗。
而且程序涉及的矩阵、矩阵相乘、转置、ATPA求解、ATPL求解、矩阵求逆等可以直接借鉴老师的Cadj0911.cpp。
故,程序只需按需调用就可以。
四、心得体会
心静,而修远!
说来也怪,这个学期考试安排一点也不合理,一个礼拜考5门,忙!
接下来2个礼拜考2门选修课,闲!
而本次课程设计是在所有的考试都已经结束后,所以开始的时候确实有些心不在焉。
大抵是因为考试都结束的原因吧。
再者,对于自己的选题:
高斯正反算心里面有些底,所以,开始的时候没有多少紧张。
之后,一直整天对着电脑了,白天机房,晚上寝室。
没日没夜的电脑。
不过倒也休闲。
说说正题,编写程序,虽然心里有底,但开始的时候真不知道从哪裡下手。
这高斯正反算为何物自己清楚,但要我编出个程序还真有點难度啊。
开始编写以后自己做了一个下午,效果太不明显了,就与几个做同一题目的讨论了一下,还好讨论后收获不小,终于明白了这些东西不是听的明白就行的,真正的掌握必须是听得懂,做得对,而我离把他们全部做对还有一段距离,幸好那时时间还是比较充足的,晚上就抽空把老师的课件看了几遍,有的时候就边看边写。
经过两天的努力终于马马虎虎的把初步的程序给写出来了。
心里多了些舒坦。
调试!
一调试,错误竟有53处之多,真叫人心寒呀,问题这么多,想想真惭愧,都学了大半个学期了,还用了那么多老师现成的东西竟然还是没有在短时间内做出来,做出来的东西也真的是过于粗糙了,错误这么多。
接下来就是修改了,这里面我收获最大的就是做任何事都必须细心细心再细心,有好几处错误都是少了一个分号、半个括号,许多地方简单的公式输入也有误,简单的一个笔误就得仔细的找上好几分钟,真的很困惑。
突然之间自己仿佛明白了一些道理。
没有什么东西可以一蹴而就,没有多少东西可以一劳永逸。
简单的错误范下了并不是说,我有多不小心,从另一边也正好说明我自己有多么愚笨。
细节决定成败,而那些细节并不是说我们不知道或者不明白,而是没有处理它们的心态!
一件事,要想处理好他,自己不先静下心来,又怎能指望其他?
态度!
开始几天坚持起早,跑到教室认真的编写,调试,没有几天,程序做的差不多的时候,自己就没了编写的耐心!
看着自己的朋友一个个忙着备考,自己却闲了下来。
心想做的差不多了先休息一下也无妨。
几天下来一点进展都没有,后来临近交结果的时候,仔细一算,时间还真不是那么多了,做完之后还有报告要写!
也就耐心下来了。
后来,看着其他人编了些程序,自己想想,也再写了2个。
3!
这就是我这几天的结果。
不多,但自己却有小小的满足感。
回顾此次课程设计,从拿到题目到完成整个编程,从理论到实践,在整整两个星期的日子里,学到了很多很多的东西,不仅巩固了以前所学过的知识,也学到了许多书本上没有的知识。
通过这次课程设计使我懂得了理论与实际相结合是很必要的,只有理论知识是远远不够的,要把所学的理论知识与实践相结合起来,从實踐中得出结论,提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针……通过这次课程设计之后,我把前面所学过的知识又重新温故了一遍!
这次实习我学会的不仅仅是编写一个程序这一件事……
无论是以后的学习还是在工作,我都会摆好心态,小心,仔细加刻苦,持之以恒地完成每次任务。
心静,那么离自己的目标也就近了!
我知道的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测绘 程序 课程设计 报告书