《毕业设计论文基于VB的测量坐标系统的转换.doc》由会员分享,可在线阅读,更多相关《毕业设计论文基于VB的测量坐标系统的转换.doc(32页珍藏版)》请在三一办公上搜索。
1、GDGM-QR-03-077-A/0Guangdong College of Industry & Commerce毕业论文Graduation Paper题目:基于VB的测量坐标系统的转换The Coordinate system Conversion based on VB 系 别: 测绘信息遥感工程系班 级: 08级(2)班 学生姓名: 学 号: 指导老师: 完成日期: 2011年5月14日指导教师评语:初评成绩:指导教师签名:年 月 日毕业论文(设计)评审小组意见:终评成绩:组长签章:年 月 日备注 目录目录3第一章 绪论1第 二 章 坐标系统32.1坐标系统简介32.1.1天球坐标系
2、32.1.2 地球坐标系42.2参心系与地心系52.3 常用的坐标系统62.3.1大地坐标系统62.3.2、WGS84坐标系62.3.3、ITRF框架72.3.4、BJ54坐标系82.3.5.XIAN80坐标系92.3.6、新BJ54坐标系92.3.7、CGCS2000坐标系统102.4 地方独立坐标系10第三章 坐标转换的理论基础123.1 大地坐标系统与空间直角坐标系统的转换原理123.2 空间直角坐标系统的相互转换原理13第四章 基于VB的坐标转换154.1 VB简介154.2系统开发语言的选择VB6.0154.3 利用VB实现空间直角坐标系统的相互转换17第五章 结论255.1大地坐标
3、(BLH)对平面直角坐标(XYZ)255.2 北京54全国80及WGS84坐标系的相互转换255.3 任意两空间坐标系的转换26参考文献27致谢28摘要测量学是一门古老而富有生命力的学科,其应用范围很广,在国民经济和国防建设中发挥着十分重要的作用。随着现代科技的发展,测量学也得到了迅猛的发展。特别是计算机科学技术、航空航天科学技术、激光技术、遥感技术、图像处理技术及模式识别等的发展,对测绘科学的发展产生了巨大的推动作用。 坐标系统是测量非常重要的,测量坐标系统的种类繁多。正是因为坐标系统的繁多,对测量工作造成了很大的影响。本文主要论述测绘中常用的坐标系统;坐标系统转换的原理以及基于VB对坐标系
4、统转换的实现步骤等。关键字:坐标系统;北京1954-坐标系统;西安1980坐标系统;世界大地坐标系WGS-1984;转换;VB28第一章 绪论测量的发展可以追溯到两千多年以前,从人们确认地球是个圆球并实测它的大小开始,大体可分为:古代大地测量、经典大地测量和现代大地测量三个阶段。从二十实际中期莫洛琴斯基发展斯托克司理论后的200期间,大地测量发展更为迅速!人造地球卫星技术快速发展,使其在空间科学、气象、遥感、通讯、导航、地球科学、地球动力学、天文学、大地测量、资源勘查、灾情预报、环境监测、以及军事科学诸领域中得到了广泛的应用。为了说明点的位置、运动的快慢、方向等,必须选取其坐标系。在参照系中,
5、为确定空间一点的位置,按规定方法选取的有次序的一组数据,这就叫做“坐标”。在某一问题中规定坐标的方法,就是该问题所用的坐标系。坐标系的种类很多,常用的坐标系有:笛卡尔直角坐标系、平面极坐标系、柱面坐标系(或称柱坐标系)和球面坐标系(或称球坐标系)等。在一个国家或一个地区范围内统一规定地图投影的经纬线作为坐标轴,以确定国家或某一地区所有测量成果在平面或空间上的位置的坐标系统。图 1-1 为高斯投影坐标系。图 1-1 高斯投影坐标系 测绘常用的坐标系统有北京1954坐标系统、西安1980坐标系统、WGS-1984坐标系统以及CGCS2000坐标系统,再加上地方常用的坐标系统。在工程应用中我们经常会
6、遇到已知坐标不是此工程所涉及到的坐标系统,为此大大影响到工程的进度。所以我们急需采用坐标转换的方法求,把已知点坐标转换到我们需要的坐标系统中去。这就是坐标转换的意义。第 二 章 坐标系统2.1坐标系统简介 由物理学可知,为了说明点的位置、运动的快慢、方向等,必须选取其坐标系。在参照系中,为确定空间一点的位置,按规定方法选取的有次序的一组数据,这就叫做“坐标”。天文测量和大地测量工作中,常常把想象的天球和地球(椭球)作为参考系,并在天球和地球(椭球)上简历了多种坐标系统。坐标系统是由坐标原点位置、坐标轴的指向和尺度三个要素决定的。坐标系统通常有三种定义方式:理论坐标系统、协定坐标系、协议坐标系。
7、我们在测绘中常用到的是协议坐标系。按描述对向分类,可以把坐标系统分为天球坐标系统和地球(椭球)坐标系统。2.1.1天球坐标系天球坐标系是利用基本星历表的数据把基本坐标系固定在天球上,星历表中列出一定数量的恒星在某历元的天体赤道坐标值,以及由于岁差和自转共同影响而产生的坐标变化。常用的天球坐标系:天球赤道坐标系、天球地平坐标系和天文坐标系。在天球坐标系中,天体的空间位置可用天球空间直角坐标系或天球球面坐标系两种方式来描述。1. 天球空间直角坐标系的定义地球质心O为坐标原点,Z轴指向天球北极,X轴指向春分点,Y轴垂直于XOZ平面,与X轴和Z轴构成右手坐标系。则在此坐标系下,空间点的位置由坐标(X,
8、Y,Z)来描述。2天球球面坐标系的定义地球质心O为坐标原点,春分点轴与天轴所在平面为天球经度(赤经)测量基准基准子午面,赤道为天球纬度测量基准而建立球面坐标。空间点的位置在天球坐标系下的表述为(r,)。天球空间直角坐标系与天球球面坐标系的关系可用图2-1表示: 图2-1 天球直角坐标系与球面坐标系对同一空间点,天球空间直角坐标系与其等效的天球球面坐标系参数间有如下转换关系: (2-1) 式中, (2-2)2.1.2 地球坐标系地球坐标系有两种几何表达方式,即地球直角坐标系和地球大地坐标系。地球直角坐标系的定义地球直角坐标系的定义是:原点O与地球质心重合,Z轴指向地球北极,X轴指向地球赤道面与格
9、林尼治子午圈的交点,Y轴在赤道平面里与XOZ构成右手坐标系。地球大地坐标系的定义地球大地坐标系的定义是:地球椭球的中心与地球质心重合,椭球的短轴与地球自转轴重合。空间点位置在该坐标系中表述为(L,B,H)。地球直角坐标系和地球大地坐标系可用图2-2表示: 图2-2 地球直角坐标系和大地坐标系2.2参心系与地心系参心系大地坐标系是一种固定在地球上,随地球一起转动的非惯性坐标系。大地坐标系根据其原点的位置不同,分为地心坐标系和参心坐标系。地心坐标系的原点与地球质心重合,参心坐标系的原点与某一地区或国家所采用的参考椭球中心重合,通常与地球质心不重合。我国先后建立的1954年北京坐标系、1980西安坐
10、标系和新1954年北京坐标系,都是参心坐标系。这些坐标系为我国经济社会发展和国防建设作出了重要贡献。但是,随着现代科技的发展,特别是全球卫星定位技术的发展和应用,世界上许多发达国家和中等发达国家都已在多年前就开始使用地心坐标系。 地心系以地球质心为原点建立的空间直角坐标系,或以球心与地球质心重合的地球椭球面为基准面所建立的大地坐标系。以地球质心(总椭球的几何中心)为原点的大地坐标系。通常分为地心空间直角坐标系 (以x,y,z为其坐标元素)和地心大地坐标系 (以B,L,H为其坐标元素)。地心坐标系是在大地体内建立的O-XYZ坐标系。原点O设在大地体的质量中心,用相互垂直的X,Y,Z三个轴来表示,
11、X轴与首子午面与赤道面的交线重合,向东为正。Z轴与地球旋转轴重合,向北为正。Y轴与XZ平面垂直构成右手系。 2.3 常用的坐标系统我国常用的坐标系统有:1大地坐标系统,2、WGS84坐标系,3、ITRF框架4、BJ54坐标系,5.XIAN80坐标系,6、新BJ54坐标系,7、CGCS2000坐标系统2.3.1大地坐标系统大地坐标系统是表示点在大地坐标系中的位置,用经度、纬度和高程表示 (1)经、纬度 经纬度有天文经纬度和大地经纬度之分。天文经、纬度用表示,以铅垂线为基准线,用天文测量方法测定。 在测量学中常用到的是大地经纬度。大地经、纬度用L、B表示,以地球椭球的发现为计算的基准线,用大地测量
12、的方法计算得到。大地 同一点的天文经纬度和大地经纬度不相同,原因在于同点上的铅垂线和地球椭球的法线不相重合。两者产生的夹角称之为垂线偏差。大地坐标系是采用大地纬度、经度和大地高程来描述空间位置的。纬度是空间的点与参考椭球面的法线与赤道面的夹角;经度是空间的点与参考椭球的自转轴所在的面与参考椭球的起始子午面的夹角;大地高斯空间的点沿着参考椭球的法线方向到参考椭球面的距离。 2.3.2、WGS84坐标系 WGS-84的定义:WGS-84是修正NSWC9Z-2参考系的原点和尺度变化,并旋转其参考子午面与BIH定义的零度子午面一致而得到的一个新参考系,WGS-84坐标系的原点在地球质心,Z轴指向BIH
13、1984.0定义的协定地球极(CTP)方向,X轴指向BIH1984.0的零度子午面和CTP赤道的交点,Y轴和Z、X轴构成右手坐标系。它是一个地固坐标系。WGS-84椭球及其有关常数:WGS-84采用的椭球是国际大地测量与地球物理联合会第17届大会大地测量常数推荐值,其四个基本参数 长半径:a=63781372(m); 地球引力常数:GM=3986005108m3s-20.6108m3s-2; 正常化二阶带谐系数:C20=-484.1668510-61.310-9; J2=10826310-8 地球自转角速度:=729211510-11rads-10.15010-11rads-1建立WGS-84
14、世界大地坐标系的一个重要目的,是在世界上建立一个统一的地心坐标系。2.3.3、ITRF框架ITRF,International Terrestrial Reference Frame,国际地球参考框架。它是由国际地球自转服务局(IERS) 按一定要求建立地面观测台站进行空间大地测量,并根据协议地球参考系的定义,采用一组国际推荐的模型和常数系统对观测数据进行处理,解算出各观测台站在某一历元的坐标和速度场,由此建立的一个协议地球参考框架。它是协议地球参考系(CTRS,Conventional Terrestrial Reference System)的具体实现。CTRS由原点、定向、尺度和时变四个
15、基本元素来定义,各元素定义如下:1)原点定为包括海洋和大气的地球质量中心;2)定向采用国际时间局(BIH,Bureau International de IHeure)1984.0结果;3)尺度是广义相对论意义下,局部地球框架的尺度;4)时变遵循地壳板块运动相对于地球整体无旋转,即地壳不受剩余地球自转的影响。ITRF每年通过IERS技术文件向世界各国有关机构公布ITRFyy。年序yy指明了ITRF在框架形成过程中,使用的有效数据所至的最终年代,如ITRF97表明以坐标和速率表示的框架,所利用的有效数据一直到1997年。ITRF采用了VLB I(甚长基线干涉)、SLR(激光测卫)、LLR(激光测
16、月)、DOR IS(多普勒卫星跟踪和无线电定位系统)和GPS(全球定位系统)等多种空间大地测量技术,它是综合多个数据分析中心的解算结果,由一系列测站相对于某一参考历元的坐标和位移速度构成 ,即它是通过一组固定于地球表面而且只作线性运动的大地点的坐标及坐标变化速率组成。2.3.4、BJ54坐标系 该坐标系源自于原苏联采用过的1942年普尔科夫坐标系。该坐标系采用的参考椭球是克拉索夫斯基椭球,该椭球的参数为:a=6378245 f=1/298.3 BJ54坐标系的缺点: 自 P54建立以来,在该坐标系内进行了许多地区的局部平差,其成果得到了广泛的应用。但是随着测绘新理论、新技术的不断发展,人们发现
17、该坐标系存在如下缺点: 1、 椭球参数有较大误差。克拉索夫斯基椭球差数与现代精确的椭球参数相比,长半轴约大109m。 2、 参考椭球面与我国大地水准面存在着自西向东明显的系统性的倾斜,在东部地区大地水准面差距最大达+60m。这使得大比例尺地图反映地面的精度受到影响,同时也对观测量元素的归算提出了严格的要求。 3、 几何大地测量和物理大地测量应用的参考面不统一。我国在处理重力数据时采用赫尔默特19001909年正常重力公式,与这个公式相应的赫尔默特扁球不是旋转椭球,它与克拉索夫斯基椭球是不一致的,这给实际工作带来了麻烦。 4、 定向不明确。椭球短半轴的指向既不是国际是普遍采用的国际协议(原点)C
18、IO(Conventional International Origin),也不是我国地极原点JYD1968.0;起始大地子午面也不是国际时间局BIH(Bureau International de I Heure)所定义的格林尼治平均天文台子午面,从而给坐标换算带来一些不便和误差。 为此,我国在1978年在西安召开了“全国天文大地网整体平差会议”,提出了建立属于我国自己的大地坐标系,即后来的1980西安坐标系。但时至今日,北京54坐标系仍然是在我国使用最为广泛的坐标系。2.3.5.XIAN80坐标系 1980年西安大地坐标系统所采用的地球椭球参数采用了IAG 1975年的推荐值,它们是: a
19、=6378140 f =1/298.257 大地原点:我国中部陕西泾阳县永乐镇。 椭球的短轴平行于地球的自转轴(由地球质心指向1968.0 JYD地极原点方向),起始子午面平行于格林尼治平均天文子午面,椭球面同似大地水准面在我国境内符合最好,高程系统以1956年黄海平均海水面为高程起算基准。 因1980年国家大地坐标系天文大地网整体平差,而1954年北京大地坐标系属局部平差,使两系统的坐标值存在偶然差(也包括局部性系统差)。两系统间的差异,使地形图圈廓线位置发生变化,按1980年国家大地坐标系测的图与按1954年北京坐标系测的图,在接边处会产生裂隙,这给实际工作带来不便。经分析,差值主要来自椭
20、球参数和定位改变而产生的系统差部分。2.3.6、新BJ54坐标系为此,有关部门提出,将全国天文大地网整体平差的结果,通过1980年国家大地坐标系的定位参数dX、dY、dZ(表示克拉索夫斯基椭球中心相对于1975年国际椭球中心的三个坐标分量)和与克拉索夫斯基椭球参数da、d,整体换算到克拉索夫斯基椭球体上,形成一个新的坐标系。有称为54向80过渡坐标系,有的称1954年北京坐标系(整体平差转换值),但习惯上称新1954年北京坐标系。椭球的几何参数与克氏椭球一样,而定位与定向的依据又完全与80坐标系一样。新54与旧54比较:两系统同一点坐标的不同主要是由于一个是全国统一平差的结果,另一个是局部平差
21、的结果。新54与80坐标系比较:两系统同一点坐标的不同主要是由于两系统定义不同产生的系统差。2.3.7、CGCS2000坐标系统CGCS2000是以ITRF参考框架为基准,通过我国GPS连续运行基准站、空间大地控制网以及天文大地网与空间大地网联合平差建立的地心大地坐标系统。2000国家大地坐标系的原点为包括海洋和大气的整个地球的质量中心;2000国家大地坐标系的Z轴由原点指向历元2000.0的地球参考极的方向,该历元的指向由国际时间局给定的历元为1984.0的初始指向推算,定向的时间演化保证相对于地壳不产生残余的全球旋转,X轴由原点指向格林尼治参考子午线与地球赤道面(历元2000.0)的交点,
22、Y轴与Z轴、X轴构成右手正交坐标系。采用广义相对论意义下的尺度。2.4 地方独立坐标系在生产实际中,我们通常把控制网投影到当地平均海拔高程面上,并以当地子午线作为中央子午线进行高斯投影建立地方独立坐标系。地方独立坐标系隐含一个与当地平均海拔高程对应的参考椭球地方参考椭球。地方参考椭球的中心、轴向和扁率与国家参考椭球相同,其长半径则有一改正量。设地方独立坐标系位于海拔高程为h的曲面上,该地方的大地水准面差距为,则该曲面离国家参考椭球的高度为: (2-3)又由独立坐标系的定义知: (2-4)于是,地方参考椭球和国家参考椭球的关系可以表述为:中心一致: (2-5)轴向一致: (2-6) 扁率相等:(
23、2-7)长半径有一增量: (2-8) 第三章 坐标转换的理论基础坐标转换问题的详细了解对于测量很重要。首先,我们要弄清楚几种坐标表示方法。大致有三种坐标表示方法:经纬度和高程,空间直角坐标,平面坐标和高程。我们通常说的WGS-84坐标是经纬度和高程这一种,北京54坐标是平面坐标和高程着一种。现在,再搞清楚转换的严密性问题,在同一个椭球里的转换都是严密的,而在不同的椭球之间的转换是不严密的。举个例子,在WGS-84坐标和北京54坐标之间是不存在一套转换参数可以全国通用的,在每个地方会不一样,因为它们是两个不同的椭球基准。那么,两个椭球间的坐标转换应该是怎样的呢?一般而言比较严密的是用七参数法(包
24、括布尔莎模型,一步法模型,海尔曼特等),即X平移,Y平移,Z平移,X旋转,Y旋转,Z旋转,尺度变化K。要求得七参数就需要在一个地区需要3个以上的已知点,如果区域范围不大,最远点间的距离不大于30Km(经验值),这可以用三参数(莫洛登斯基模型),即X平移,Y平移,Z平移,而将X旋转,Y旋转,Z旋转,尺度变化K视为0,所以三参数只是七参数的一种特例。在本软件中提供了计算三参数、七参数的功能。在一个椭球的不同坐标系中转换可能会用到平面转换,现阶段一般分为四参数和平面网格拟合两种方法,以四参数法在国内用的较多,举个例子,在深圳既有北京54坐标又有深圳坐标,在这两种坐标之间转换就用到四参数,计算四参数需
25、要两个已知点。更精确的可以提供网格拟合数据,本软件提供计算和应用四参数的功能,也提供了网格拟合的功能。另外,还有高程拟合的问题,大地水准面模型在国内用户中很少会用到,但在国际上已经是标准之一。 3.1 大地坐标系统与空间直角坐标系统的转换原理设地面点P的坐标为B、L、H,空间直角坐标为X、Y、Z,坐标转换关系为:(3-1)式中, (3-2)(3-3)e为第一偏心率。由空间直角坐标转换为大地坐标通常采用下式:(3-4)式中,(3-5)用上式计算大地纬度时,先对式右端的B设定近似值,用逐次趋近法求B值,直到两次求得的B值之差小于限差为止。3.2 空间直角坐标系统的相互转换原理地心坐标系和参心坐标系
26、之间的转换,可采用布尔莎7参数模型转换。假设为参心空间直角坐标向量;为地心空间直角坐标向量;为其间的定位(平移)参数向量;为其间的定向(旋转)参数向量;则两种坐标系之间转换的(布尔莎7参数法)公式为: (3-6)式中 为三个坐标轴的旋转角度参数;dK为尺度比变换参数。上式适用于任意两个空间直角坐标系统间的相互转换。若把该式的认为是地面参心坐标系,而是GPS测量用的WGS-84坐标系,则它便是将GPS观测坐标值向地面参心坐标系转换的公式,若将地面参心坐标系转换为地心坐标系,只需将转换参数的符号改变即可。第四章 基于VB的坐标转换4.1 VB简介VB是Microsoft公司于1991年推出的基于窗
27、口的可视化程序设计语言。既继承了Basic语言易学、易用的优点,其编程系统又引入了面向对象的机制和可视化设计方法。极大地降低了开发Windows应用程序的难度,使程序开发的效率大大提高。VB6.0有三种基本版本:学习版。是VB6.0的基本版本。专业版。为专业编程人员提供了一整套功能完备的开发工具,包括学习版的全部功能以及Activex控件、Internet控件等。企业版。使得专业编程人员能够开发强大的组内分布式应用程序。该版本包括专业版的全部功能以及Back Office工具。4.2系统开发语言的选择VB6.0道路放样程序具有很强的开放性。这儿的开放性是指在开发环境的选择上可以有VBA、VB、
28、VC.net 、VC+、VC.net、DELPHI、JAVA等多种支持COM标准的开发语言。选用VB 6.0作为系统的开发语言是基于以下特点考虑:(1)面向对象 VB采用了面向对象的程序设计思想。它的基本思路是把复杂的程序设计问题分解为一个个能够完成独立功能的相对简单的对象集合,所谓“对象”就是一个可操作的实体,如窗体、窗体中的命令按钮、标签、文本框等。面向对象的编程就好像搭积木一样,程序员可根据程序和界面设计要求,直接在屏幕上“画出”窗口、菜单、按钮等不同类型的对象,并为每个对象设置属性。(2)事件驱动 在Windows环境下,程序是以事件驱动方式运行的,每个对象都能响应多个不同的事件,每个
29、事件都能驱动一段代码事件过程,该代码决定了对象的功能。通常称这种机制为事件驱动。事件可由用户的操作触发,也可以由系统或应用程序触发。例如,单击一个命令按钮,就触发了按钮的Click(单击)事件,该事件中的代码就会被执行。若用户未进行任何操作(未触发事件),则程序就处于等待状态。整个应用程序就是由彼此独立的事件过程构成。(3)软件的集成式开发 VB为编程提供了一个集成开发环境。在这个环境中,编程者可设计界面、编写代码、调试程序,直至把应用程序编译成可在Windows中运行的可执行文件,并为它生成安装程序。VB的集成开发环境为编程者提供了很大的方便。(4)结构化的程序设计语言 VB具有丰富的数据类
30、型,是一种符合结构化程序设计思想的语言,而且简单易学。此外作为一种程序设计语言,VB还有许多独到之处。(5)强大的数据库访问功能 VB利用数据控件可以访问多种数据库,VB 6.0提供的ADO控件,不但可以用最少的代码实现数据库操作和控制,也可以取代Data控件和RDO控件。 (6)支持对象的链接与嵌入技术 VB的核心是对对象的链接与嵌入(OLE)技术的支持,它是访问所有对象的一种方法。利用OLE技术,能够开发集声音、图像、动画、字处理、Web等对象于一体的程序。(7)网络功能 VB 6.0提供了网络设计工具。利用这种技术可以动态创建和编辑Web页面,使用户在VB中开发多功能的网络应用软件。 (
31、8)多个应用程序向导VB提供了多种向导,如应用程序向导、安装向导、数据对象向导和数据窗体向导,通过它们可以快速地创建不同类型、不同功能的应用程序。 (9)支持动态交换、动态链接技术 通过动态数据交换(DDE)的编程技术,VB开发的应用程序能与其他Windows应用程序之间建立数据通信。通过动态链接库技术,在VB程序中可方便地调用用C语言或汇编语言编写的函数,也可调用Windows的应用程序接口(API)函数。(lO)联机帮助功能 在VB中,利用帮助菜单和F1功能键,用户可随时方便地得到所需要的帮助信息。VB帮助窗口中显示了有关的示例代码,通过复制、粘贴操作可获取大量的示例代码,为用户的学习和使
32、用提供方便。4.3 利用VB实现空间直角坐标系统的相互转换基于VB程序设计的前提是要有每个坐标系的各项参数和转换公式,通过第三章的讲解,我们已经大概掌握了。首先,打开VB6.0 ,进入VB6.0的主界面,选择”标准EXE”(如图4-1)。 图4-1通过坐标的工具栏设计程序的主界面(如图4-2), 图4-2进入代码编辑界面,定义大地坐标系统和空间直角坐标系统的坐标大地坐标系统代码如下:空间大地坐标系 Public b As Double Public l As Double Public H As Double空间直角坐标系代码如下:空间直角坐标系 Public x As Double Publ
33、ic y As Double Public Z As Double在整个程序的设计过程中经常会用到关于角度的转换,所以我们定义了角度转换的语句:Public Function Angular_Radian(Angular As Double) As Double 度小数化弧度Angular_Radian = Angular * PI / 180End FunctionPublic Function Radian_Angular(Radian As Double) As Double 弧度化度小数Radian_Angular = Radian * 180 / PIEnd FunctionPubl
34、ic Function DMS_Angular(DMS As Double) As Double 度分秒化度小数Dim D As Double, M As Double, S As DoubleDim tDMS As Double, tS As DoubleIf DMS = 0 Then DMS_Angular = 0: Exit FunctiontDMS = DMS * 10000S = Val(Right(CStr(Int(tDMS), 2) + tDMS - Int(tDMS)M = Val(Left(Right(CStr(Int(tDMS), 4), 2)D = Val(Left(In
35、t(tDMS), Len(CStr(Int(tDMS) - 4)DMS_Angular = D + M / 60 + S / 3600End FunctionPublic Function Angular_DMS(Angular As Double) As Double 度小数化度分秒Dim D As Double, M As Double, S As DoubleD = Int(Angular)M = Int(Angular - D) * 60) / 100S = (Angular - D - M * 100 / 60) * 3600 / 10000Angular_DMS = D + M +
36、 SEnd Function计算计算卯酉圈半径N如下:Public Function GetN(a As Double, b As Double, RB As Double) As Double 计算卯酉圈半径NDim e2 As Doublee2 = GetE2(a, b)GetN = a / Sqr(1 - e2 * (Sin(RB) 2)End Function计算公式如下:Public Function GetE2(a As Double, b As Double) As Double 计算e2GetE2 = (a 2 - b 2) / a 2End Function在此,最重要的就是
37、坐标转换的公式了,代码如下:空间大地坐标系转换空间直角坐标系(a为地球长半轴,b为地球短半轴)Public Sub BLH_XYZ(RBLH As BLH, a As Double, b As Double) 空间大地坐标系转换空间直角坐标系(a为地球长半轴,b为地球短半轴)Dim e2 As Double, N As DoubleDim BtoX As New XYZe2 = GetE2(a, b)N = GetN(a, b, RBLH.b)BtoX.x = (N + RBLH.H) * Cos(RBLH.b) * Cos(RBLH.l)BtoX.y = (N + RBLH.H) * Cos
38、(RBLH.b) * Sin(RBLH.l)BtoX.Z = (N * (1 - e2) + RBLH.H) * Sin(RBLH.b)End Sub关于空间直角坐标系转换空间大地坐标系,我们才用的是迭代法,代码如下:Public Sub XYZ_BLH(IXYZ As XYZ, a As Double, b As Double) 空间直角坐标系转换空间大地坐标系(迭代法)Dim e2 As Double, N As DoubleDim tB As Double, tH As Double, Lb As Double, lH As Doublee2 = GetE2(a, b)If IXYZ.x
39、 = 0 ThenXtoB.l = PI / 2ElseXtoB.l = Atn(IXYZ.y / IXYZ.x)End IfIf IXYZ.x = 0 And IXYZ.y = 0 ThenXtoB.b = PI / 2N = GetN(a, b, XtoB.b)XtoB.H = IXYZ.Z / Sin(XtoB.b) - N * (1 - e2)ElsetB = Atn(IXYZ.Z / Sqr(IXYZ.x 2 + IXYZ.y 2)mGoTo:N = GetN(a, b, tB)tH = Sqr(IXYZ.x 2 + IXYZ.y 2) / Cos(tB) - NLb = Atn(I
40、XYZ.Z + N * e2 * Sin(tB) / Sqr(IXYZ.x 2 + IXYZ.y 2)If Abs(Lb - tB) 1E-99 ThentB = LbGoTo mGoToElseXtoB.b = LbN = GetN(a, b, XtoB.b)XtoB.H = Sqr(IXYZ.x 2 + IXYZ.y 2) / Cos(XtoB.b) - NEnd IfEnd IfEnd Sub根据上述的设计语句,我们可以通过调用函数的方法实现坐标转换的操作,代码如下:Public BtoX As New XYZPublic XtoB As New BLHPublic pi As Doub
41、lePublic Sub Command1_Click()Dim a As Double, b As Doublea = 6378245b = 6354950pi = 3.1415926535898Dim pBLH As New BLHDim pXYZ As New XYZIf Option1.Value = True ThenpBLH.b = Val(Me.Text1.Text)pBLH.l = Val(Me.Text2.Text)pBLH.H = Val(Me.Text3.Text)Call BLH_XYZ(pBLH, a, b)pXYZ.x = BtoX.xpXYZ.y = BtoX.y
42、pXYZ.Z = BtoX.ZMe.Text4.Text = Str(pXYZ.x)Me.Text5.Text = Str(pXYZ.y)Me.Text6.Text = Str(pXYZ.Z)End IfIf Option2.Value = True ThenBtoX.x = Val(Me.Text4.Text)BtoX.y = Val(Me.Text5.Text)BtoX.Z = Val(Me.Text6.Text)Call XYZ_BLH(BtoX, a, b)Dim w As DoubleXtoB.l = Radian_Angular(XtoB.l)XtoB.l = Angular_DM
43、S(XtoB.l)XtoB.b = Radian_Angular(XtoB.b)XtoB.b = Angular_DMS(XtoB.b)pXYZ.x = XtoB.bpXYZ.y = XtoB.lpXYZ.Z = XtoB.HpXYZ.x = Format(XtoB.b, #.00000000 )pXYZ.y = Format(XtoB.l, #.00000000 )pXYZ.Z = Format(XtoB.H, #.00000000 )Me.Text1.Text = Str(pXYZ.x)Me.Text2.Text = Str(pXYZ.y)Me.Text3.Text = Str(pXYZ.
44、Z)End IfEnd Sub程序设计好之后就是要检验坐标转换是否成功了,我们找来了一个已知点。在空间直角坐标系统下的坐标值:X=2558068.045186Y=423173.403201Z=200在空间大地坐标系统的坐标值为:B=000:00.26961279NL=009:23.59186463EH=-3785303.049735在文本框输入已知点的坐标,检测该点在另外一个坐标系的坐标是否正确:首先从空间直角坐标系统转换到空间大地坐标系统,结果如下(图4-3):图4-3基本上满足该点在空间大地坐标系统中的坐标值。第五章 结论工程施工过程中,常常会遇到不同坐标系统间,坐标转换的问题。目前国内常见的转换有以下几种:1,大地坐标(BLH)对平面直角坐标(XYZ);2,北京54全国80及WGS84坐标系的相互转换;3,任意两空间坐标系的转换。其中第2类可归入第三类中。所谓坐标转换的过程就是转换参数的求解过程。常用的方法有三参数法、四参数法和七参数法。以下对上述三种情况作详细描述如下:5.1大地坐标(BLH)对平面直角坐标(XYZ)常规的转换应先确定转换参数,即椭球参数、分带标准(3度,6度)和中央子午线的经度。椭球参数就是指平面直角坐标系采用什么样的椭球基准,对应有不同的长短轴及扁率。一般的工程中