高斯投影正反算及换带计算VB程序设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

摘要

本设计主要阐述了高斯投影分带以及高斯投影坐标正、反算的推导公式,从而根据公式来编写基于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 择椭球框架内控件的属性值

单选按钮控件属性设置表5-3

5-3 单选按钮控件属性设置表

5.2程序代码设计

在这里主要介绍高斯投影坐标转换的正反算代码设计,完整的代码见附录1所示。

5.2.1投影计算过程的正算子过程代码设计

①54系高斯投影正算子过程

Public Sub Pro54()

Dim ll#, 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

End Sub

②80系高斯投影正算子过程

Public Sub Pro80()

Dim ll#, 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

End Sub

5.2.2投影计算过程的反算子过程代码设计

①54系高斯投影反算子过程[12]

Public Sub ConPro54()

Dim Bf#, 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

相关文档
最新文档