【VB开源代码栏目提醒】:网学会员--在 VB开源代码编辑为广大网友搜集整理了:高斯投影正反算及换带计算VB程序设计 - 其它资料绩等信息,祝愿广大网友取得需要的信息,参考学习。
摘要 本设计主要阐述了高斯投影分带以及高斯投影坐标正、反算的推导公式,从而根据公式来编写基于
VB 语言基础上的换带及坐标转换程序。
作者系统介绍了测量中经常使用的坐标系以及地图投影的概念和高斯投影的具体含义,叙述了换带和临带计算的原因以及它们在运算时的原理、过程,详细叙述了在
VB 语言中实现的原理基础以及
代码的编写设计。
在设计中根据高斯的正反算公式写出了基于
VB 语言的程序设计,其程序设计任务完成了由地理坐标向 54 平面坐标系和 80 平面坐标系转换的功能,以及由 54 坐标系和 80 坐标系向地理坐标系转换的功能,同时也有同一平面坐标系不同投影带之间的换带计算和同一平面坐标系相同投影带临带计算等相互转换的功能。
关键词:高斯投影、坐标正反算、换带计算、临带换算、程序设计 5 程序设计 5.1 界面设计 本程序要实现的功能是根据所选择的椭球参数和指定的分带情况,将已知地理坐标或高斯投影坐标经正算和反算求得相应的高斯坐标和地理坐标,以及相应的换带计算和临带计算。
因此需要用一个框架控件来组织椭球参数、两个框架分别组织分带选择和换算方式选择,两个框架组织地理坐标和高斯坐标,三个命令按钮分别执行投影计算、换带和临带计算。
程序设计界面如图 5-19 图 5-1 高斯投影计算程序设计界面命令按钮属性设置表如表 5-1表 5-1 命令按钮属性设置表对象 属性 值Command1 Caption BL-xyCommand1 Name cmdCalcCommand2 Caption 6-3Command2 Name cmdChangeCommand3 Caption 临带计算Command3 Name cmdNear选择椭球框架内控件的属性值表 5-2表 5-2 择椭球框架内控件的属性值对象 属性 值Text1 Text 6378245Text1 Name txtaText2 Text 298.3Text2 Name txtalfa单选按钮控件属性设置表 5-35-3 单选按钮控件属性设置表对象 属性 值Option1 Caption 六度带Option1 Name opt6duOption2 Caption 三度带Option2 Name Opt3duOption3 Caption 正算Option3 Name optTranOption4 Caption 反算Option4 Name optCon 5.2 程序
代码设计 在这里主要介绍高斯投影坐标转换的正反算
代码设计,完整的
代码见附录 1 所示。
5.2.1 投影计算过程的正算子过程
代码设计 ①54 系高斯投影正算子过程 Public Sub Pro54 Dim ll N a0 a4 a6 a3 a5 cosB cosB CosB ll L - DoToHuL0 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 SinB cosB Y 1 a3 a5 ll ll ll ll ll N cosBEnd Sub ②80 系高斯投影正算子过程Public Sub Pro80 Dim ll N a0 a4 a6 a3 a5 cosB cosB CosB ll L - DoToHuL0 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 SinB cosB Y 1 a3 a5 ll ll ll ll ll N cosBEnd Sub5.2.2 投影计算过程的反算子过程
代码设计 ①54 系高斯投影反算子过程12Public Sub ConPro54 Dim Bf bet Z Nf b2 b3 b4 b5 cos2B cos2Bf bet X / 6367558.4969 cos2B Cosbet Cosbet Bf bet 50221746 293622 2350 22 cos2B cos2B cos2B 0.0000000001 Sinbet Cosbet cos2Bf CosBf CosBf Nf 6399698.902 - 21562.267 - 108.973 - 0.612 cos2Bf cos2Bf cos2Bf Z Y / Nf CosBf b2 0.5 0.003369 cos2Bf SinBf CosBf 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 DoToHuL0 1 - b3 - b5 Z Z Z Z ZEnd Sub ②80 系高斯投影反算子过程Public Sub ConPro80 Dim Bf bet Z Nf b2 b3 b4 b5 cos2B cos2Bf bet X / 6367558.4969 cos2B CosB CosB Bf bet 50221746 293622 2350 22 cos2B cos2B cos2B 0.0000000001 Sinbet Cosbet cos2Bf CosBf CosBf Nf 6399698.902 - 21562.267 - 108.973 - 0.612 cos2Bf cos2Bf cos2Bf Z Y / Nf CosBf b2 0.5 0.00336975 cos2Bf SinBf CosBf 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 DoToHuL0 1 - b3 - b5 Z Z Z Z ZEnd Sub 5.3 程序的操作介绍 下面以实例来介绍
程序的操作步骤。
现有已知数据如下: L112°45′45.4545〃,B=31°45′45.4545〃 X3516946.1923,y=19666998.4009其具体的操作步骤如下: ① 选择相关椭球 在名称为“选择椭球”框架控件内选择相应的椭球体,当选择完椭球体后此时程序会显示出与其相应的椭球参数,以选择北京 1954 参考椭球为例,见图 5-2 所示。
图 5-2 选择椭球体 ② 分带选择 在名称为“分带选择”框架控件内选择要进行计算的带宽,以六度带为例,其操作如图 5-3 所示。
图 5-3 分带选择 ③ 换算方式的选择 在名称为“换算方式”框架控件内选择要进行计算的方式,以选择正算为例,如图 5-4 所示。
图 5-4 换算方式的选择④ 已知数据的输入 当按以上步骤进行后应该在名称为“地理坐标”框架控件内输入大地经纬度的数值,如图 5-5 所示。
图 5-5 已知数据的输入⑤ 在完成上述操作后点击按钮计算按钮,如图 5-6 所示。
图 5-6 计算按钮 在完成以上操作后会显示出要求的高斯平面坐标,其结果如图 5-7 所示。
图 5-7 高斯平面坐标 ⑥ 换带计算 在完成上述 6°带的计算后,想把结果换算到 3°带可直接点击换带计算的按钮,如图 5-8 所示。
图 5-8 换带计算按钮 完成此操作后会显示出 3°带的结果,如图 5-9 所示。
图 5-9 换带计算后的结果⑦ 临带计算 在以上操作的基础上,在程序界面上直接点击“临带计算”按钮后会显示临带计算的结果,如图 5-10 所示。
图 5-10 临带计算的结果示意图 当要进行三度带及反算方式进行计算时其操作步骤和以上步骤相似在此就不做介绍了。
6 总结 在这次是实习中通过搜集各种资料和咨询各位老师终于完成了设计。
这次设计的任务完成了有地理坐标向高斯平面坐标转换的正算和反算,和在同一种高斯平面坐标系下不同投影带之间的相互转换即换带计算的功能,以及在同一种高斯平面坐标系下相同投影带之间临带换算功能。
当把已知的几组数据带入到本次所编写的程序中得到的结果与已知的数据相吻合,因此改程序的设计是成功的,它计算的结果可信度还是比较高的。
但本程序也存在着不足,不足之处是该程序的各个功能只适合我国,对与别的国家和地区是不宜使用的。
参考文献1 潘正风,杨正尧等.数字测图原理与方法M .武汉:武汉大学出版社,2004 年,10602 熊 介.椭球大地测量学M .北京:解放军出版社,1988 年,4153 边少锋.地理坐标系与大地基准M .北京:国防工业出版社,2005 年,1504 孔祥云.大地测量学基础M .武汉:武汉大学出版社,2006 年,185 孔祥云.控制测量学(下)M .武汉:武汉大学出版社,2002 年,50806 朱华统.
常用地理坐标系及其变换M.北京:解放军出版社,2003,15357 施一民.现代大地控制测量M.北京:测绘出版社,2003 年,21308 冯亚明. 高斯投影正反算的递推算法J .黑龙江测绘.1997,20 3:22249.郑永果,姚青. Visual Basic 程序设计M.东营:石油大学出版社,2000年10罗朝盛.
VB6.0 程序设计实用教程M .北京:清华大学出版社,2004 年;15-2511本书编委会.新编中文
VB 实用教程M .西安:西北工业大学出版社2007 年,406012. G. Bom ford GEODESYM third edition O xford U niversity Press1971,262813 JeanneC.Adams. Comments on proper use of the terrain correction forthe computation of height anomalies. Manuscripta geodaetic 1993.262814. W. Torge GeodesyM W alter de Gruyter Co. Berlin 1980,15 Berry D S and Sales T w.An Elastic Treatment of Ground Movement Dueto Mining J.Mech .. Phys Solids 9 1961 致谢 这次论文设计的顺利完成得到了我的导师钟来星的大力支持,从最初的选题、材料收集、开题
报告、到完成初稿,钟老师给予了很大程度上的帮助,在此对钟老师的帮助表示真心的感谢。
同时也得到了张晨晰、张纯连、赵心、于志刚、王永等老师的帮助在此表示感谢。
同时我也非常的感谢我的同学们,在我做设计的过程中他们给我提供了大量的意见以及在我遇到困难是提供了大量的帮助在此对他们表示真心的感谢。
在这四年的大学学习中我得到了许许多多老师的帮助,他们不辞辛苦把他们所能知道的知识尽他们最大可能的告诉我们,我今天的知识大部分来自于他们,没有他们的奉献就没有我今天的成绩,在此对所有教育过我的老师说声感谢。
我也非常感谢我的父母兄弟姐妹,是他们为了我的学业而辛苦的工作着,没有父母的支持我是没有机会接受教育的,他们为了儿女的幸福而默默的牺牲自己,他们不仅仅是我的
经济支柱更是我的精神支柱,他们供我
学习还教育我如何去做人,对此我深深的表示感谢。
同时再次的感谢我的导师钟来星他不仅教会我学习文化知识也教育我如何去做人,从他那里我学到了对
工作要努力要负责,做事情要干脆利索,他的教育深深的影响着我。
附录 附录 1 高斯投影坐标转换程序的
代码设计选择椭球及显示相应的参数
代码设计 当选择不同选择椭球时显示与它相应的参数
代码设计如下所示: Private Sub Form_Load 初始化组合框 Combo1.AddItem 北京 1954 参考椭球 Combo1.AddItem 西安 1980 参考椭球 Combo1.ListIndex 0 初始化参数 lenL 6 End Sub选择分带及换算方式的
代码设计 当选择了 3°带分时
代码如下: Private Sub opt3du_Click cmdchange.Caption 3°-6° lenL 3 End Sub 当选择了 6°分带时
代码如下: Private Sub opt6du_Click cmdchange.Caption 6°-3° lenL 6 End Sub 选择了反算方式 Private Sub optCon_Click cmdcalc.Caption xy-BL TxtB.Enabled False TxtL.Enabled False TxtX.Enabled True TxtY.Enabled True TxtX.SetFocus End Sub 选择了正算方式 Private Sub optTran_Click cmdcalc.Caption BL-xy TxtB.Enabled True TxtL.Enabled True TxtX.Enabled False TxtY.Enabled False TxtB.SetFocus End Sub投影计算子过程的
代码设计 54 系高斯投影正算子过程 Public Sub Pro54 Dim ll N a0 a4 a6 a3 a5 cosB cosB CosB ll L - DoToHuL0 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 SinB cosB Y 1 a3 a5 ll ll ll ll ll N cosB End Sub 80 系高斯投影正算子过程 Public Sub Pro80 Dim ll N a0 a4 a6 a3 a5 cosB cosB CosB ll L - DoToHuL0 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 SinB cosB Y 1 a3 a5 ll ll ll ll ll N cosB End Sub 54 系高斯投影反算子过程 Public Sub ConPro54 Dim Bf bet Z Nf b2 b3 b4 b5 cos2B cos2Bf bet X / 6367558.4969 cos2B Cosbet Cosbet Bf bet 50221746 293622 2350 22 cos2B cos2B cos2B 0.0000000001 Sinbet Cosbet cos2Bf CosBf CosBf Nf 6399698.902 - 21562.267 - 108.973 - 0.612 cos2Bf cos2Bf cos2Bf Z Y / Nf CosBf b2 0.5 0.003369 cos2Bf SinBf CosBf 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 DoToHuL0 1 - b3 - b5 Z Z Z Z Z End Sub 80 系高斯投影反算子过程 Public Sub ConPro80 Dim Bf bet Z Nf b2 b3 b4 b5 cos2B cos2Bf bet X / 6367558.4969 cos2B CosB CosB Bf bet 50221746 293622 2350 22 cos2B cos2B cos2B 0.0000000001 Sinbet Cosbet cos2Bf CosBf CosBf Nf 6399698.902 - 21562.267 - 108.973 - 0.612 cos2Bf cos2Bf cos2Bf Z Y / Nf CosBf b2 0.5 0.00336975 cos2Bf SinBf CosBf 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 DoToHuL0 1 - b3 - b5 Z Z Z Z Z End Sub投影计算 单击投影计算命令按钮,程序根据当前
系统状态计算有关参数,并调用相应子过程进行投影计算,具体
代码如下 Private Sub cmdCalc_Click B ValTxtB.Text L ValTxtL.Text X ValTxtX.Text: Y ValMidTxtY.Text 3 计算中央子午线经度和带号 If Opttran.Value True Then 正算 If lenL 6 Then N IntL / lenL 1L0 N lenL - lenL / 2ElseIf lenL 3 Then N IntL - 1.5 / lenL 1 L0 N lenLEnd If ElseIf Optcon.Value True Then 反算 N ValLeftTxtY.Text 2 If lenL 6 ThenL0 N lenL - lenL / 2ElseIf lenL 3 Then L0 N lenLEnd If End If B DoToHuB L DoToHuL 根据椭球进行投影计算 If Opttran.Value True Then 正算 If Combo1.ListIndex 0 Then 54 Call Pro54 ElseIf Combo1.ListIndex 1 Then 80 Call Pro80