高斯投影正反算及换带计算VB程序设计.docx
- 文档编号:2461606
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:24
- 大小:124.81KB
高斯投影正反算及换带计算VB程序设计.docx
《高斯投影正反算及换带计算VB程序设计.docx》由会员分享,可在线阅读,更多相关《高斯投影正反算及换带计算VB程序设计.docx(24页珍藏版)》请在冰点文库上搜索。
高斯投影正反算及换带计算VB程序设计
摘要
本设计主要阐述了高斯投影分带以及高斯投影坐标正、反算的推导公式,从而根据公式来编写基于VB语言基础上的换带及坐标转换程序。
作者系统介绍了测量中经常使用的坐标系以及地图投影的概念和高斯投影的具体含义,叙述了换带和临带计算的原因以及它们在运算时的原理、过程,详细叙述了在VB语言中实现的原理基础以及代码的编写设计。
在设计中根据高斯的正反算公式写出了基于VB语言的程序设计,其程序设计任务完成了由地理坐标向54平面坐标系和80平面坐标系转换的功能,以及由54坐标系和80坐标系向地理坐标系转换的功能,同时也有同一平面坐标系不同投影带之间的换带计算和同一平面坐标系相同投影带临带计算等相互转换的功能。
关键词:
高斯投影、坐标正反算、换带计算、临带换算、程序设计
5程序设计
5.1界面设计
本程序要实现的功能是根据所选择的椭球参数和指定的分带情况,将已知地理坐标或高斯投影坐标经正算和反算求得相应的高斯坐标和地理坐标,以及相应的换带计算和临带计算。
因此需要用一个框架控件来组织椭球参数、两个框架分别组织分带选择和换算方式选择,两个框架组织地理坐标和高斯坐标,三个命令按钮分别执行投影计算、换带和临带计算。
程序设计界面如图5-1[9]
图5-1高斯投影计算程序设计界面
命令按钮属性设置表如表5-1
表5-1命令按钮属性设置表
对象
属性
值
Command1
Caption
BL->xy
Command1
Name
cmdCalc
Command2
Caption
6->3
Command2
Name
cmdChange
Command3
Caption
临带计算
Command3
Name
cmdNear
选择椭球框架内控件的属性值表5-2
表5-2择椭球框架内控件的属性值
对象
属性
值
Text1
Text
6378245
Text1
Name
txta
Text2
Text
298.3
Text2
Name
txtalfa
单选按钮控件属性设置表5-3
5-3单选按钮控件属性设置表
对象
属性
值
Option1
Caption
六度带
Option1
Name
opt6du
Option2
Caption
三度带
Option2
Name
Opt3du
Option3
Caption
正算
Option3
Name
optTran
Option4
Caption
反算
Option4
Name
optCon
5.2程序代码设计
在这里主要介绍高斯投影坐标转换的正反算代码设计,完整的代码见附录1所示。
5.2.1投影计算过程的正算子过程代码设计
①54系高斯投影正算子过程
PublicSubPro54()
Dimll#,N#,a0#,a4#,a6#,a3#,a5#,cosB#
cosB=Cos(B)
ll=L-DoToHu(L0)
N=6399698.902-(21562.267-(108.973-0.612*cosB*cosB)*cosB*cosB)*cosB*cosB
a0=32140.404-(135.3302-(0.7092-0.004*cosB*cosB)*cosB*cosB)*cosB*cosB
a4=(0.25+0.00252*cosB*cosB)*cosB*cosB-0.04166
a6=(0.166*cosB*cosB-0.084)*cosB*cosB
a3=(0.3333333+0.001123*cosB*cosB)*cosB*cosB-0.1666667
a5=0.0083-(0.1667-(0.1968+0.004*cosB*cosB)*cosB*cosB)*cosB*cosB
X=6367558.4969*B-(a0-(0.5+(a4+a6*ll*ll)*ll*ll)*ll*ll*N)*Sin(B)*cosB
Y=(1+(a3+a5*ll*ll)*ll*ll)*ll*N*cosB
EndSub
②80系高斯投影正算子过程
PublicSubPro80()
Dimll#,N#,a0#,a4#,a6#,a3#,a5#,cosB#
cosB=Cos(B)
ll=L-DoToHu(L0)
N=6399596.652-(21565.045-(108.996-0.603*cosB*cosB)*cosB*cosB)*cosB*cosB
a0=32144.5189-(135.3646-(0.7034-0.0041*cosB*cosB)*cosB*cosB)*cosB*cosB
a4=(0.25+0.00253*cosB*cosB)*cosB*cosB-0.04167
a6=(0.167*cosB*cosB-0.083)*cosB*cosB
a3=(0.3333333+0.001123*cosB*cosB)*cosB*cosB-0.1666667
a5=0.00878-(0.1702-0.20382*cosB*cosB)*cosB*cosB
X=6367452.1328*B-(a0-(0.5+(a4+a6*ll*ll)*ll*ll)*ll*ll*N)*Sin(B)*cosB
Y=(1+(a3+a5*ll*ll)*ll*ll)*ll*N*cosB
EndSub
5.2.2投影计算过程的反算子过程代码设计
①54系高斯投影反算子过程[12]
PublicSubConPro54()
DimBf#,bet#,Z#,Nf#,b2#,b3#,b4#,b5#,cos2B#,cos2Bf#
bet=X/6367558.4969
cos2B=Cos(bet)*Cos(bet)
Bf=bet+(50221746+(293622+(2350+22*cos2B)*cos2B)*cos2B)*0.0000000001*Sin(bet)*Cos(bet)
cos2Bf=Cos(Bf)*Cos(Bf)
Nf=6399698.902-(21562.267-(108.973-0.612*cos2Bf)*cos2Bf)*cos2Bf
Z=Y/(Nf*Cos(Bf))
b2=(0.5+0.003369*cos2Bf)*Sin(Bf)*Cos(Bf)
b3=0.333333-(0.166667-0.001123*cos2Bf)*cos2Bf
b4=0.25+(0.16161+0.00562*cos2Bf)*cos2Bf
b5=0.2-(0.1667-0.0088*cos2Bf)*cos2Bf
B=Bf-(1-(b4-0.12*Z*Z)*Z*Z)*Z*Z*b2
L=DoToHu(L0)+(1-(b3-b5*Z*Z)*Z*Z)*Z
EndSub
②80系高斯投影反算子过程
PublicSubConPro80()
DimBf#,bet#,Z#,Nf#,b2#,b3#,b4#,b5#,cos2B#,cos2Bf#
bet=X/6367558.4969
cos2B=Cos(B)*Cos(B)
Bf=bet+(50221746+(293622+(2350+22*cos2B)*cos2B)*cos2B)*0.0000000001*Sin(bet)*Cos(bet)
cos2Bf=Cos(Bf)*Cos(Bf)
Nf=6399698.902-(21562.267-(108.973-0.612*cos2Bf)*cos2Bf)*cos2Bf
Z=Y/(Nf*Cos(Bf))
b2=(0.5+0.00336975*cos2Bf)*Sin(Bf)*Cos(Bf)
b3=0.333333-(0.166667-0.001123*cos2Bf)*cos2Bf
b4=0.25+(0.161612+0.005617*cos2Bf)*cos2Bf
b5=0.2-(0.16667-0.00878*cos2Bf)*cos2Bf
B=Bf-(1-(b4-0.147*Z*Z)*Z*Z)*Z*Z*b2
L=DoToHu(L0)+(1-(b3-b5*Z*Z)*Z*Z)*Z
EndSub
5.3程序的操作介绍
下面以实例来介绍程序的操作步骤。
现有已知数据如下:
L=112°45′45.4545″,B=31°45′45.4545″
X=3516946.1923,y=19666998.4009
其具体的操作步骤如下:
1选择相关椭球
在名称为“选择椭球”框架控件内选择相应的椭球体,当选择完椭球体后此时程序会显示出与其相应的椭球参数,以选择北京1954参考椭球为例,见图5-2所示。
图5-2选择椭球体
2分带选择
在名称为“分带选择”框架控件内选择要进行计算的带宽,以六度带为例,其操作如图5-3所示。
图5-3分带选择
3换算方式的选择
在名称为“换算方式”框架控件内选择要进行计算的方式,以选择正算为例,如图5-4所示。
图5-4换算方式的选择
4已知数据的输入
当按以上步骤进行后应该在名称为“地理坐标”框架控件内输入大地经纬度的数值,如图5-5所示。
图5-5已知数据的输入
5在完成上述操作后点击按钮计算按钮,如图5-6所示。
图5-6计算按钮
在完成以上操作后会显示出要求的高斯平面坐标,其结果如图5-7所示。
图5-7高斯平面坐标
6换带计算
在完成上述6°带的计算后,想把结果换算到3°带可直接点击换带计算的按钮,如图5-8所示。
图5-8换带计算按钮
完成此操作后会显示出3°带的结果,如图5-9所示。
图5-9换带计算后的结果
7临带计算
在以上操作的基础上,在程序界面上直接点击“临带计算”按钮后会显示临带计算的结果,如图5-10所示。
图5-10临带计算的结果示意图
当要进行三度带及反算方式进行计算时其操作步骤和以上步骤相似在此就不做介绍了。
6总结
在这次是实习中通过搜集各种资料和咨询各位老师终于完成了设计。
这次设计的任务完成了有地理坐标向高斯平面坐标转换的正算和反算,和在同一种高斯平面坐标系下不同投影带之间的相互转换即换带计算的功能,以及在同一种高斯平面坐标系下相同投影带之间临带换算功能。
当把已知的几组数据带入到本次所编写的程序中得到的结果与已知的数据相吻合,因此改程序的设计是成功的,它计算的结果可信度还是比较高的。
但本程序也存在着不足,不足之处是该程序的各个功能只适合我国,对与别的国家和地区是不宜使用的。
参考文献
[1]潘正风,杨正尧等.数字测图原理与方法[M].武汉:
武汉大学出版社,2004年,10~60
[2]熊介.椭球大地测量学[M].北京:
解放军出版社,1988年,4~15
[3]边少锋.地理坐标系与大地基准[M].北京:
国防工业出版社,2005年,1~50
[4]孔祥云.大地测量学基础[M].武汉:
武汉大学出版社,2006年,1~8
[5]孔祥云.控制测量学(下)[M].武汉:
武汉大学出版社,2002年,50~80
[6]朱华统.常用地理坐标系及其变换[M].北京:
解放军出版社,2003,15~35
[7]施一民.现代大地控制测量[M].北京:
测绘出版社,2003年,21~30
[8]冯亚明.高斯投影正反算的递推算法[J].黑龙江测绘.1997,20(3):
22~24
[9].郑永果,姚青.VisualBasic程序设计[M].东营:
石油大学出版社,2000年
[10]罗朝盛.VB6.0程序设计实用教程[M].北京:
清华大学出版社,2004年;
-25
[11]本书编委会.新编中文VB实用教程[M].西安:
西北工业大学出版社2007年,40~60
[12].G.Bomford,GEODESY[M],thirdedition,OxfordUniversityPress,1971,26~28
[13]JeanneC.Adams.Commentsonproperuseoftheterraincorrectionforthecomputationofheightanomalies.Manuscriptageodaetic,1993.26~28
[14].W.Torge,Geodesy[M],WalterdeGruyter&Co.,Berlin,1980,
[15]BerryDSandSalesTw.AnElasticTreatmentofGroundMovementDuetoMiningJ.Mech..PhysSolids9,1961,
致谢
这次论文设计的顺利完成得到了我的导师钟来星的大力支持,从最初的选题、材料收集、开题报告、到完成初稿,钟老师给予了很大程度上的帮助,在此对钟老师的帮助表示真心的感谢。
同时也得到了张晨晰、张纯连、赵心、于志刚、王永等老师的帮助在此表示感谢。
同时我也非常的感谢我的同学们,在我做设计的过程中他们给我提供了大量的意见以及在我遇到困难是提供了大量的帮助在此对他们表示真心的感谢。
在这四年的大学学习中我得到了许许多多老师的帮助,他们不辞辛苦把他们所能知道的知识尽他们最大可能的告诉我们,我今天的知识大部分来自于他们,没有他们的奉献就没有我今天的成绩,在此对所有教育过我的老师说声感谢。
我也非常感谢我的父母兄弟姐妹,是他们为了我的学业而辛苦的工作着,没有父母的支持我是没有机会接受教育的,他们为了儿女的幸福而默默的牺牲自己,他们不仅仅是我的经济支柱更是我的精神支柱,他们供我学习还教育我如何去做人,对此我深深的表示感谢。
同时再次的感谢我的导师钟来星他不仅教会我学习文化知识也教育我如何去做人,从他那里我学到了对工作要努力要负责,做事情要干脆利索,他的教育深深的影响着我。
附录
附录1高斯投影坐标转换程序的代码设计
选择椭球及显示相应的参数代码设计
当选择不同选择椭球时显示与它相应的参数代码设计如下所示:
PrivateSubForm_Load()
'初始化组合框
Combo1.AddItem"北京1954参考椭球"
Combo1.AddItem"西安1980参考椭球"
Combo1.ListIndex=0
'初始化参数
lenL=6
EndSub
选择分带及换算方式的代码设计
当选择了3°带分时代码如下:
PrivateSubopt3du_Click()
cmdchange.Caption="3°->6°"
lenL=3
EndSub
当选择了6°分带时代码如下:
PrivateSubopt6du_Click()
cmdchange.Caption="6°->3°"
lenL=6
EndSub
选择了反算方式
PrivateSuboptCon_Click()
cmdcalc.Caption="xy->BL"
TxtB.Enabled=False
TxtL.Enabled=False
TxtX.Enabled=True
TxtY.Enabled=True
TxtX.SetFocus
EndSub
选择了正算方式
PrivateSuboptTran_Click()
cmdcalc.Caption="BL->xy"
TxtB.Enabled=True
TxtL.Enabled=True
TxtX.Enabled=False
TxtY.Enabled=False
TxtB.SetFocus
EndSub
投影计算子过程的代码设计
54系高斯投影正算子过程
PublicSubPro54()
Dimll#,N#,a0#,a4#,a6#,a3#,a5#,cosB#
cosB=Cos(B)
ll=L-DoToHu(L0)
N=6399698.902-(21562.267-(108.973-0.612*cosB*cosB)*cosB*cosB)*cosB*cosB
a0=32140.404-(135.3302-(0.7092-0.004*cosB*cosB)*cosB*cosB)*cosB*cosB
a4=(0.25+0.00252*cosB*cosB)*cosB*cosB-0.04166
a6=(0.166*cosB*cosB-0.084)*cosB*cosB
a3=(0.3333333+0.001123*cosB*cosB)*cosB*cosB-0.1666667
a5=0.0083-(0.1667-(0.1968+0.004*cosB*cosB)*cosB*cosB)*cosB*cosB
X=6367558.4969*B-(a0-(0.5+(a4+a6*ll*ll)*ll*ll)*ll*ll*N)*Sin(B)*cosB
Y=(1+(a3+a5*ll*ll)*ll*ll)*ll*N*cosB
EndSub
80系高斯投影正算子过程
PublicSubPro80()
Dimll#,N#,a0#,a4#,a6#,a3#,a5#,cosB#
cosB=Cos(B)
ll=L-DoToHu(L0)
N=6399596.652-(21565.045-(108.996-0.603*cosB*cosB)*cosB*cosB)*cosB*cosB
a0=32144.5189-(135.3646-(0.7034-0.0041*cosB*cosB)*cosB*cosB)*cosB*cosB
a4=(0.25+0.00253*cosB*cosB)*cosB*cosB-0.04167
a6=(0.167*cosB*cosB-0.083)*cosB*cosB
a3=(0.3333333+0.001123*cosB*cosB)*cosB*cosB-0.1666667
a5=0.00878-(0.1702-0.20382*cosB*cosB)*cosB*cosB
X=6367452.1328*B-(a0-(0.5+(a4+a6*ll*ll)*ll*ll)*ll*ll*N)*Sin(B)*cosB
Y=(1+(a3+a5*ll*ll)*ll*ll)*ll*N*cosB
EndSub
54系高斯投影反算子过程
PublicSubConPro54()
DimBf#,bet#,Z#,Nf#,b2#,b3#,b4#,b5#,cos2B#,cos2Bf#
bet=X/6367558.4969
cos2B=Cos(bet)*Cos(bet)
Bf=bet+(50221746+(293622+(2350+22*cos2B)*cos2B)*cos2B)*0.0000000001*Sin(bet)*Cos(bet)
cos2Bf=Cos(Bf)*Cos(Bf)
Nf=6399698.902-(21562.267-(108.973-0.612*cos2Bf)*cos2Bf)*cos2Bf
Z=Y/(Nf*Cos(Bf))
b2=(0.5+0.003369*cos2Bf)*Sin(Bf)*Cos(Bf)
b3=0.333333-(0.166667-0.001123*cos2Bf)*cos2Bf
b4=0.25+(0.16161+0.00562*cos2Bf)*cos2Bf
b5=0.2-(0.1667-0.0088*cos2Bf)*cos2Bf
B=Bf-(1-(b4-0.12*Z*Z)*Z*Z)*Z*Z*b2
L=DoToHu(L0)+(1-(b3-b5*Z*Z)*Z*Z)*Z
EndSub
80系高斯投影反算子过程
PublicSubConPro80()
DimBf#,bet#,Z#,Nf#,b2#,b3#,b4#,b5#,cos2B#,cos2Bf#
bet=X/6367558.4969
cos2B=Cos(B)*Cos(B)
Bf=bet+(50221746+(293622+(2350+22*cos2B)*cos2B)*cos2B)*0.0000000001*Sin(bet)*Cos(bet)
cos2Bf=Cos(Bf)*Cos(Bf)
Nf=6399698.902-(21562.267-(108.973-0.612*cos2Bf)*cos2Bf)*cos2Bf
Z=Y/(Nf*Cos(Bf))
b2=(0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 投影 正反 计算 VB 程序设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)