文档库 最新最全的文档下载
当前位置:文档库 › 80椭球高斯投影坐标换带计算编程

80椭球高斯投影坐标换带计算编程

80椭球高斯投影坐标换带计算编程
80椭球高斯投影坐标换带计算编程

辽宁工程技术大学

大地测量基础

综合训练二

教学单位测绘与地理科学学院

专业测绘工程

名称 80椭球高斯投影坐标换带计算编程班级测绘14-1

学号

学生姓名

指导教师王佩贤

目录

一、高斯投影坐标换带的原理 (3)

二、高斯投影坐标换带的目的 (6)

三、坐标换带的意义 (8)

四、程序设计基础 (8)

五、程序界面及源码 (11)

六、程序验证 (15)

七、软件评价 (15)

八、软件使用说明 (16)

一、高斯投影坐标换带的原理

1.1高斯投影基本概念

想象有一个椭圆柱面横套在地球椭球体外面,并与某一条子午线(此子午线称为中央子午线或轴子午线)相切,椭圆柱的中心轴通过椭球体中心,然后用一定投影方法,将中央子午线两侧各一定经差范围内的地区投影到椭圆柱面上,再将此柱面展开即成为投影面。

特点:(1)正形投影(角度不变,a=b:长度比与方向无关);

(2)中央子午线投影为纵坐标轴;

(3)中央子午线投影后长度不变。

1.2高斯投影邻带换算

1.定义:将一个带的高斯平面坐标换算为另一带的高斯平面坐标称为高斯坐标的邻带换算

2.内容: 1 )不同六度带和不同三度带之间的化算 2 )三度带和六度带之间的化算

3.方法: 1 )直接法: 利用相邻两带坐标之间关系式进行坐标互换 2 )间接法:通过大地坐标进行高斯正反算互相换算 目前广泛采用间接换带计算法,因此下面就此方法作介绍。

如将第一带(东带或西带)的平面坐标换算为第二带(西带或东带)的平面坐标,方法是先根据第一带的平面坐标x,y 和中央子午线的经度L 。按高斯投影坐标反算公式求得大地坐标B,L 然后根据B,L 和第二带的中央子午线经度按高斯投影坐标正算公式求得在第二带中的平面坐标 。由于在换带计算中,把椭球面 上的大地坐标作为过渡坐标,因而称为间接换带法。这种方法理论上是严密的, 精度高,而且通用性强,他适用于6°带与6°带,3°带与3°带,6°带与3°带之间的坐标换带。虽然这种方法计算量较大,但可用电子计算机计算来克服,故已成为坐标换带中最基本的方法。

正算公式:

6

4256

4

42234

22)5861(cos sin 720)495(cos 24cos sin 2l

t t B B N l

t B simB N l B B N X x ''+-''+

''++-''+''?''+=ρηηρ

ρ

5

2224255

3

2233

)5814185(cos 120)1(cos 6cos l

t t t B N l

t B N l B N y ''-++-''+''+-''+''?''=ηηρηρρ

其中:角度都为弧度

B 为点的纬度,0l L L ''=-,L 为点的经度,0L 为中央子午线经度; N 为子午圈曲率半径,

122

2

(1sin )N a e B -

=-;

tan t B =;

222cos e B η'=

180

3600ρπ

''=

*

其中X 为子午线弧长:

2402464661616sin cos ()(2)sin sin 33X a B B B a a a a a B a B ??

=--++-+????

02468,,,,a a a a a 为基本常量,按如下公式计算:

20

046824268

446

86868

835352816128

15722321637816323216128m a m m m m m m a m m

m a m m m m a m a ?

=++++??

?=+++??

?

=++??

?=+??

?=??

02468,,,,m m m m m 为基本常量,按如下公式计算:

22222020426486379

(1);;5;;268

m a e m e m m e m m e m m e m =-====;

反算公式:

()()()()222224

3246

5322

3

524222

5

53922461904572012cos 6cos 5282468120cos f f

f f

f f f f f

f f

f

f f f f

f f f f f f

f f f f f f f t t B B y t

t y

M N M N

t y t t y

M N

y y l t N B N B y t t t N B L l L ηηηηη=-+

++--

++=-+++++++=+

其中:0L 为中央子午线经度。f B 为底点纬度,也就是当x X =时的子午线弧长所对应的纬度。

二、高斯投影坐标换带的目的

1. 换带目的:为了限制高斯投影长度变形,将椭球面按一定经度的子午线划分成不同的投影带;或者为了抵偿长度变形,选择某一经度的子午线作为测区的中央子午线。由于中央子午线的经度不同,使得椭球面上统一的大地坐标系,变成了各自独立的平面直角坐标系,就需要将一个投影带的平面直角坐标系,换算成另外一个投影带的平面直角坐标,即为坐标换带。

2. 实际应用:

在生产实践中通常有以下两种情况需要换带计算 ⑴ 控制网中的已知点位于相邻的两个投影带中。

图中的附合导线,A,B,C,D 为已知高级点。A,B 两点位于西带内,具有西带的高斯平面直角坐标值;C,D 两点位于东带内,具有东带的高斯平面直角坐标值。在坐标平差计算时,就必须将它们的坐标系统统一起来,或是将

A,B

点的西带坐标值换算至东带,或是将C,D点的东带坐标值换算至西带。

(2)⑵国家控制点的坐标通常是6°带的坐标,而在工程测量中往往需要采用3°带或1.5°带,这就产生了6°带与3°带或 1.5°带之间的坐标换算问题。3°带的中央子午线中,有半数与6°带的中央子午线重合。所以,由6°带到3°带的换算区分为2种情况:

①3°带与6°带的中央子午线重合如图所示,3°带第41带与6°第21带的中央子午线重合。既然中央子午线一致,坐标系统也就一致。所以,图中P1点在6°带第21带的坐标,也就是该点在3°带第41带的坐标。在这种情况下,6°带与3°带之间,不存在换带计算问题。

②3°带中央子午线与6°带分带子午线不重合如图所示,若已知P2点在6°带第21带的坐标,求它在3°带第42带的坐标。由于这2个投影带的中央子午线不同,坐标系统不一致,必须进行换带计算。不过P2点在6°带第21带的坐标与它在3°第41带的坐标相同,所以6°带到3°带坐标换算,也可看作是3°带到3°带的邻带坐标换算。

换带计算目前广泛采用高斯投影坐标正反算方法,他适用于任何情况下的换带计算工作。这种方法的程序是:首先将某投影带的已知平面坐标(x1,y1 ),按高斯投影坐标反算公式求得其大地坐标(B,L);然后根据纬度B

和对于所选定的中央子午线的经差,按高斯投影坐标正算公式求其在选定的投影带的平面坐标(x2,y2)。

三、坐标换带的意义

在进行工程测量时,我们经常会遇到投影区域长度变形过大或测量的过程中所使用的坐标系不同,导致在内业计算时遇到困难等情况的出现。这时,我们就可以通过GAUSS投影的分带,解决了投影区域长度变形过大的问题,而在进行坐标换算时,我们也可以通过高斯投影换带来获得统一的坐标系,减少内业计算中的误差。而GAUSS投影坐标换带计算通过大地坐标(B,L)和平面坐标(x,y)之间的转换,将不同的投影带之间联系了起来。解决了诸如平面控制网在两相邻带边缘地区并横跨两投影带以及在分界子午线附近测图时要用到相邻带控制点的问题。从而极大地方便了大地测量工作的进行。

四、程序设计基础

1.流程图设计

坐标系统之间的转换比较复杂,手算工作量巨大,因而各种坐标转换模型相继出现,利用计算机强大的数据计算能力可以轻松应对这些问题,提高工作效率。流程图如下:

2.语言简介

C语言:C语言是目前世界上流行、使用最广泛的高级程序设计语言。C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。

常用的编译软件有Microsoft Visual C++,Borland C++,Watcom C++ ,Borland C++, Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++, Lccwin32 C Compiler 3.1,Microsoft C,High C,等等...... C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

C语言的特点

1. 简洁紧凑、灵活方便

C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。

2. 运算符丰富

C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。

3. 数据结构丰富

C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。

且计算功能、逻辑判断功能强大。

4. C是结构式语言

结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

5. C语法限制不太严格、程序设计自由度大

一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而C 语言允许程序编写者有较大的自由度。

6. C语言允许直接访问物理地址,可以直接对硬件进行操作

因此既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。

7. C语言程序生成代码质量高,程序执行效率高

一般只比汇编程序生成的目标代码效率低10へ20%。

8. C语言适用范围大,可移植性好

M FC:微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。MFC是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎,VC++是Windows下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发包,MFC作为与VC++血肉相连的部分(注意C++和VC++的区别:C++是一种程序设计语言,是一种大家都承认的软件编制的通用规范,而VC++只是一个编译器,或者说是一种编译器+源程序编辑器的IDE,WS,PlatForm,这跟Pascal和Delphi的关系一个道理,Pascal是Delphi的语言基础,Delphi使用Pascal规范来进行Win下应用程序的开发和编译,却不同于Basic语言和VB的关系,Basic语言在VB开发出来被应用的年代已经成了Basic语言的新规范,VB新加的Basic语言要素,如面向对

象程序设计的要素,是一种性质上的飞跃,使VB既是一个IDE,又成长成一个新的程序设计语言),MFC同BC++集成的VCL一样是一个非外挂式的软件包,类库,只不过MFC类是微软为VC++专配的.

MFC是Win API与C++的结合,API,即微软提供的Windows下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方(如我是一方,微软是一方,Borland就是第三方)的编程语言来进行对Windows下应用程序的开发,使这些被开发出来的应用程序能在Windows下运行,比如VB,VC++,Java,Delhpi编程语言函数本质上全部源于API,因此用它们开发出来的应用程序都能工作在Windows的消息机制和绘图里,遵守Windows作为一个操作系统的内部实现,这其实也是一种必要,微软如果不提供API,这个世上对Windows编程的工作就不会存在,微软的产品就会迅速从时尚变成垃圾,上面说到MFC是微软对API函数的专用C++封装,这种结合一方面让用户使用微软的专业C++ SDK来进行Windows下应用程序的开发变得容易,因为MFC 是对API的封装,微软做了大量的工作,隐藏了好多程序开发人员在Windows下用C++ & MFC编制软件时的大量内节,如应用程序实现消息的处理,设备环境绘图,这种结合是以方便为目的的,因此就造成了MFC对类封装中的一定程度的的冗余和迂回。

五、程序界面及源码

界面设计:

部分源码

坐标反算

UpdateData(true);

((CEdit*)GetDlgItem(IDC_EDIT3))->EnableWindow(true);

((CEdit*)GetDlgItem(IDC_EDIT4))->EnableWindow(true);

((CEdit*)GetDlgItem(IDC_EDIT5))->EnableWindow(true);

((CEdit*)GetDlgItem(IDC_EDIT6))->EnableWindow(true);

((CEdit*)GetDlgItem(IDC_EDIT7))->EnableWindow(true);

((CEdit*)GetDlgItem(IDC_EDIT8))->EnableWindow(true);

((CEdit*)GetDlgItem(IDC_EDIT9))->EnableWindow(true);//恢复经纬度对应的编辑框的可用性

double Bf,beta,Z,Nf,b2,b3,b4,b5,l,B,L,Bf2,beta2;

beta=m_X*P/6367558.4969;

beta2=cos(beta/P)*cos(beta/P);

Bf=beta+(50221746+(293622+(2350+22*beta2)*beta2)*beta2)*sin(beta/ P)*cos(beta/P)*P*0.0000000001;

Bf2=cos(Bf/P)*cos(Bf/P);

Nf=6399698.902-(21562.267-(108.973-0.612*Bf2)*Bf2)*Bf2;

Z=m_Y/(Nf*cos(Bf/P));

b2=(0.5+0.003369*Bf2)*sin(Bf/P)*cos(Bf/P);

b3=0.333333-(0.166667-0.001123*Bf2)*Bf2;

b4=0.25+(0.16161+0.00562*Bf2)*Bf2;

b5=0.2-(0.1667-0.0088*Bf2)*Bf2; //参数计算部分

B=Bf-(1-(b4-0.12*Z*Z)*Z*Z)*Z*Z*b2*P;

l=(1-(b3-b5*Z*Z)*Z*Z)*Z*P;

L=m_LO*3600+l;

m_B0=(int)(B/3600);

m_B1=(int)((B-m_B0*3600)/60);

m_B2=B-(m_B0*3600+m_B1*60);

m_L0=(int)(L/3600);

m_L1=(int)((L-m_L0*3600)/60);

m_L2=L-(m_L0*3600+m_L1*60);//单位转换,把秒化成度分秒,再显示

UpdateData(false);

坐标正算:

UpdateData(true);//更新数据

((CEdit*)GetDlgItem(IDC_EDIT1))->EnableWindow(true);

((CEdit*)GetDlgItem(IDC_EDIT2))->EnableWindow(true);//使坐标X,Y 编辑框可用

double B,L,l,N,BB,a0,a3,a4,a5,a6;

L=(m_L0*3600+m_L1*60+m_L2)/P;

B=(m_B0*3600+m_B1*60+m_B2)/P;

BB=cos(B)*cos(B);

l=(m_L0*3600+m_L1*60+m_L2-m_LO*3600)/P;

N=6399698.902-(21562.267-(108.973-0.612*BB)*BB)*BB;

a0=32140.404-(135.3302-(0.7092-0.0040*BB)*BB)*BB;

a3=(0.3333333+0.001123*BB)*BB-0.1666667;

a4=(0.25+0.00252*BB)*BB-0.04166;

a5=0.0083-(0.1667-(0.1968+0.0040*BB)*BB)*BB;

a6=(0.166*BB-0.084)*BB;

m_X=6367558.4969*B-(a0-(0.5+(a4+a6*l*l)*l*l)*l*l*N)*sin(B)*cos(B) ;

m_Y=(1+(a3+a5*l*l)*l*l)*l*N*cos(B);

UpdateData(false);//释放显示数据

换带计算:

UpdateData(true);

((CEdit*)GetDlgItem(IDC_EDIT10))->EnableWindow(true);

((CEdit*)GetDlgItem(IDC_EDIT12))->EnableWindow(true);

double Bf,beta,Z,Nf,b2,b3,b4,b5,l,B,L,Bf2,beta2;

beta=m_X*P/6367558.4969;

beta2=cos(beta/P)*cos(beta/P);

Bf=beta+(50221746+(293622+(2350+22*beta2)*beta2)*beta2)*sin(beta/ P)*cos(beta/P)*P*0.0000000001;

Bf2=cos(Bf/P)*cos(Bf/P);

Nf=6399698.902-(21562.267-(108.973-0.612*Bf2)*Bf2)*Bf2;

Z=m_Y/(Nf*cos(Bf/P));

b2=(0.5+0.003369*Bf2)*sin(Bf/P)*cos(Bf/P);

b3=0.333333-(0.166667-0.001123*Bf2)*Bf2;

b4=0.25+(0.16161+0.00562*Bf2)*Bf2;

b5=0.2-(0.1667-0.0088*Bf2)*Bf2; //参数计算部分

B=Bf-(1-(b4-0.12*Z*Z)*Z*Z)*Z*Z*b2*P;

l=(1-(b3-b5*Z*Z)*Z*Z)*Z*P;

L=m_LO*3600+l;

m_B0=(int)(B/3600);

m_B1=(int)((B-m_B0*3600)/60);

m_B2=B-(m_B0*3600+m_B1*60);

m_L0=(int)(L/3600);

BB=cos(B1)*cos(B1);

l1=(L-m_XINL0*3600)/P;

N=6399698.902-(21562.267-(108.973-0.612*BB)*BB)*BB;

a0=32140.404-(135.3302-(0.7092-0.0040*BB)*BB)*BB;

a3=(0.3333333+0.001123*BB)*BB-0.1666667;

a4=(0.25+0.00252*BB)*BB-0.04166;

a5=0.0083-(0.1667-(0.1968+0.0040*BB)*BB)*BB;

a6=(0.166*BB-0.084)*BB;

m_XINX=6367558.4969*B1-(a0-(0.5+(a4+a6*l1*l1)*l1*l1)*l1*l1*N)*sin

(B1)*cos(B1);

m_XINY=(1+(a3+a5*l1*l1)*l1*l1)*l1*N*cos(B1)+500000.0;

UpdateData(false);

六、程序验证

已知点

七、软件评价

此基于vc6.0MFC开发平台开发的高斯投影换带软件能够简洁地完成并解决不同投影带的平面直角坐标换算的问题,但是其计算结果存在误差,主要误差来源如

下:

1.程序中所取的π值不是足够的精确

2. 运算过程中经过多次的迭代,导致误差的积累并出现。

3.程序中存在“取整”等命令的存在,会导致数值上存在些微的误差。

八、软件使用说明

1.打开“高斯坐标转换.EXE”

2.界面如下:

3.功能有三个可选:坐标正算、坐标反算、坐标换带。

坐标正算:

坐标反算:

坐标换带:

高斯投影坐标正反算VB程序

高斯投影坐标正反算 V B程序 文件编码(GHTU-UITID-GGBKT-POIU-WUUI-8968)

高斯投影坐标正反算 学院: 班级: 学号: 姓名: 课程名称: 指导老师:

实验目的: 1.了解高斯投影坐标正反算的基本思想; 2.学会编写高斯正反算程序,加深了解。 实验原理: 高斯投影正算公式中应满足的三个条件: 1. 中央子午线投影后为直线; 2. 中央子午线投影后长度不变; 3. 投影具有正形性质,即正形投影条件。 高斯投影反算公式中应满足的三个条件: 1. x坐标轴投影成中央子午线,是投影的对称轴; 2. x轴上的长度投影保持不变; 3. 正形投影条件,即高斯面上的角度投影到椭球面上后角度没有 变形,仍然相等。 操作工具: 计算机中的 代码: Dim a As Double, b As Double, x As Double, y As Double, y_#

Dim l_ As Double, b_ As Double, a0#, a2#, a4#, a6#, a8#, m2#, m4#, m6#, m8#, m0#, l0#, e#, e1# Dim deg1 As Double, min1 As Double, sec1 As Double, deg2 As Double, min2 As Double, sec2 As Double Private Sub Command1_Click() Dim x_ As Double, t#, eta#, N#, W#, k1#, k2#, ik1%, ik2%, dh% deg1 = Val min1 = Val sec1 = Val deg2 = Val min2 = Val sec2 = Val l_ = (deg1 * 3600 + min1 * 60 + sec1) / 206265 b_ = (deg2 * 3600 + min2 * 60 + sec2) / 206265 dh = Val k1 = ((l_ * 180 / + 3) / 6) k2 = (l_ * 180 / / 3) ik1 = Round(k1, 0) ik2 = Round(k2, 0) If dh = 6 Then l0 = 6 * ik1 - 3 Else

高斯投影正反算公式 新

高斯投影坐标正反算 一、相关概念 大地坐标系由大地基准面和地图投影确定,由地图投影到特定椭圆柱面后在南北两极剪开展开而成,是对地球表面的逼近,各国或地区有各自的大地基准面,我国目前主要采用的基准面为:基准面,为GPS基准面,17届国际大地测量协会上推荐,椭圆柱长半轴a=6378137m,短半轴b=; 2.西安80坐标系,1975年国际大地测量协会上推荐,椭圆柱长半轴a=6378140m,短半轴b=; 3.北京54坐标系,参照前苏联克拉索夫斯基椭球体建立,椭圆柱长半轴a=6378245m, 短半轴b=; 通常所说的高斯投影有三种,即投影后: a)角度不变(正角投影),投影后经线和纬线仍然垂直; b)长度不变; c)面积不变; 大地坐标一般采用高斯正角投影,即在地球球心放一点光源,地图投影到过与中央经线相切的椭圆柱面上而成;可分带投影,按中央经线经度值分带,有每6度一带或每3度一带两种(起始带中央经线经度为均为3度,即:6度带1带位置0-6度,3度带1带位置度),即所谓的高斯-克吕格投影。

图表11高斯投影和分带 地球某点经度(L)为过该点和地球自转轴的半圆与子午线所在半圆夹角,东半球为东经,西半球为西经;地球某点纬度(B)为所在水平面法线与赤道圆面的线面角。 正算是已知大地坐标(L,B),求解高斯平面坐标(X,Y),为确保Y值为正,Y增加500公里;反算则是由高斯平面坐标(X,Y)求解大地坐标(L,B)。 二、计算模型: 地球椭球面由椭圆绕地球自转轴旋转180度而成。 图表 1 椭圆 椭圆长半轴a,椭圆短半轴b, 椭圆方程:

(1) 图表2椭球面 椭球面方程: y2 a2+ x2 b2 + z2 a2 =1 /*************************************** 与网上充斥的将函数关系先展开为泰勒级数,再依据投影规则确定各参数不同,本文直接依据空间立体三角函数关系得出结果。 *****/ (一)正算 由图表1,

高斯投影坐标正反算编程报告

高斯投影坐标正反算编程报告 1. 编程思想 进行高斯投影坐标正反算的编程需要牵涉到大量的公式,为了使程序条理更清楚,各块的数据复用性更强,这里采取了结构化的编程思想。 程序由四大块组成。 GeodesyHomework 、cpp 文件用于存放main()函数,就是整个程序的入口。通过结构化的编程尽力使main()函数变得简单。 MyFunction 、h 与MyFunction 、cpp 用于存放计算过程中进行角度弧度换算时所要用到的一些自定的转换函数。 Zhengsuan 、h 与Zhengsuan 、cpp 用于存放Zhengsuan 类,在Zhengsuan 类中声明了高斯投影坐标正算所要用到的所有变量,在类的构造函数中进行成员变量的初始化及正算计算。通过get 函数获得相应的正算结果。 Fansuan 、h 与Fansuan 、cpp 用于存放Fansuan 类,类似于Zhengsuan 类,Fansuan 类中声明了高斯投影坐标反算所要用到的所有变量,在类的构造函数中进行成员变量的初始化及反算计算。通过get 函数获得相应的反算结果。 2. 计算模型 高斯投影正算公式 6 4256 4 42234 22)5861(cos sin 720)495(cos 24cos sin 2l t t B B N l t B simB N l B B N X x ''+-''+ ''++-''+''?''+=ρηηρρ 5 2224255 3 2233 )5814185(cos 120)1(cos 6cos l t t t B N l t B N l B N y ''-++-''+ ''+-''+''?''=ηηρηρρ 高斯投影反算公式 () () ()( ) 2 22425 52 23 36 4254 222232 8624285cos 12021cos 6cos 459061720935242f f f f f f f f f f f f f f f f f f f f f f f f f f f f f t t t B N y t B N y B N y l y t t y N M t y t t N M t y N M t B B ηηηηη+++++++-=++- -+++ -= 3. 程序框图

3度6度带高斯投影详解.

3度6度带高斯投影 选择投影的目的在于使所选投影的性质、特点适合于地图的用途,同时考虑地图在图廓范围内变形较小而且变形分布均匀。海域使用的地图多采用保角投影,因其能保持方位角度的正确。 我国的基本比例尺地形图(1:5千,1:1万,1:2.5万,1:5万,1:10万,1:25万,1:50万,1:100万)中,大于等于50万的均采用高斯-克吕格投影(Gauss-Kruger),这是一个等角横切椭圆柱投影,又叫横轴墨卡托投影(Transverse Mercator);小于50万的地形图采用等角正轴割园锥投影,又叫兰勃特投影(Lambert Conformal Conic);海上小于50万的地形图多用等角正轴圆柱投影,又叫墨卡托投影(Mercator)。一般应该采用与我国基本比例尺地形图系列一致的地图投影系统。 地图坐标系由大地基准面和地图投影确定,大地基准面是利用特定椭球体对特定地区地球表面的逼近,因此每个国家或地区均有各自的大地基准面,我们通常称谓的北京54坐标系、西安80坐标系实际上指的是我国的两个大地基准面。我国参照前苏联从1953年起采用克拉索夫斯基(Krassovsky)椭球体建立了我国的北京54坐标系,1978年采用国际大地测量协会推荐的IAG 75地球椭球体建立了我国新的大地坐标系--西安80坐标系,目前GPS定位所得出的结果都属于WGS84坐标系统,WGS84基准面采用WGS84椭球体,它是一地心坐标系,即以地心作为椭球体中心的坐标系。因此相对同一地理位置,不同的大地基准面,它们的经纬度坐标是有差异的。 采用的3个椭球体参数如下(源自“全球定位系统测量规范 GB/T 8314-2001”): 椭球体与大地基准面之间的关系是一对多的关系,也就是基准面是在椭球体基础上建立的,但椭球体不能代表基准面,同样的椭球体能定义不同的基准面,如前苏联的Pulkovo 1942、非洲索马里的Afgooye基准面都采用了Krassovsky

高斯投影坐标正反算VB程序

高斯投影坐标正反算 学院: 班级: 学号: 姓名: 课程名称: 指导老师:

实验目的: 1.了解高斯投影坐标正反算的基本思想; 2.学会编写高斯正反算程序,加深了解。 实验原理: 高斯投影正算公式中应满足的三个条件: 1. 中央子午线投影后为直线; 2. 中央子午线投影后长度不变; 3. 投影具有正形性质,即正形投影条件。 高斯投影反算公式中应满足的三个条件: 1. x坐标轴投影成中央子午线,是投影的对称轴; 2. x轴上的长度投影保持不变; 3. 正形投影条件,即高斯面上的角度投影到椭球面上后角度没 有变形,仍然相等。 操作工具: 计算机中的VB6.0 代码: Dim a As Double, b As Double, x As Double, y As Double, y_# Dim l_ As Double, b_ As Double, a0#, a2#, a4#, a6#, a8#, m2#,

m4#, m6#, m8#, m0#, l0#, e#, e1# Dim deg1 As Double, min1 As Double, sec1 As Double, deg2 As Double, min2 As Double, sec2 As Double Private Sub Command1_Click() Dim x_ As Double, t#, eta#, N#, W#, k1#, k2#, ik1%, ik2%, dh% deg1 = Val(Text1.Text) min1 = Val(Text2.Text) sec1 = Val(Text3.Text) deg2 = Val(Text4.Text) min2 = Val(Text5.Text) sec2 = Val(Text6.Text) l_ = (deg1 * 3600 + min1 * 60 + sec1) / 206265 b_ = (deg2 * 3600 + min2 * 60 + sec2) / 206265 dh = Val(Text9.Text) k1 = ((l_ * 180 / 3.14159 + 3) / 6) k2 = (l_ * 180 / 3.14159 / 3) ik1 = Round(k1, 0) ik2 = Round(k2, 0) If dh = 6 Then l0 = 6 * ik1 - 3 Else If dh = 3 Then

高斯投影正反算编程(可编辑修改word版)

高斯投影正反算编程一.高斯投影正反算基本公式(1)高斯正算基本公式 (2)高斯反算基本公式

以上主要通过大地测量学基础课程得到,这不进行详细的推导,只是列出基本公式指导编程的进行。 二.编程的基本方法和流程图 (1)编程的基本方法 高斯投影正反算基本上运用了所有的编程基本语句,本文中是利用C++语言进行基本的设计。高斯正算中对椭球参数和带宽的选择主要运用了选择语句。而高斯反算中除了选择语句的应用,在利用迭代算法求底点纬度还应用了循环语句。编程中还应特别注意相关的度分秒和弧度之间的相互转换,这是极其重要的。 (2)相关流程图 1)正算

选择带宽 3/6 度带 计算带号 输入大地坐标 B ,L 和经差 L0 6 度带 3 度带 选择椭球参数 计算带号 计算弧长 计算平面坐标 x,y 打印 x,y 开始 计算平面坐标 x,y 计算弧长 打印 x,y

开始 输入自然值坐标x,y 和经差L0 选择椭球参数 利用迭代算法 求解底点纬度 利用公式计算B 和L 打印B 和L 2)反算

三.编程的相关代码(1)正算 # include "stdio.h" # include "stdlib.h" # include "math.h" # include "assert.h" #define pi (4*atan(1.0)) int i; struct jin { double B; double L; double L0; }; struct jin g[100]; main(int argc, double *argv[]) { FILE *r=fopen("a.txt","r"); assert(r!=NULL); FILE *w=fopen("b.txt","w"); assert(r!=NULL); int i=0;

高斯投影坐标正算公式

高斯投影坐标正算公式 高斯投影坐标正反算公式 2.2.2. 1高斯投影坐标正算公式: B, x,y 高斯投影必须满足以下三个条件: ⑴中央子午线投影后为直线;⑵中央子午线投影后长度不变;⑶投影具有正形性质,即正形投影条件。 由第一条件知中央子午线东西两侧的投影必然对称于中央子午线,即 式中,x为的偶函数,y为的奇函数;,即, 如展开为的级数,收敛。 (2-10) 式中是待定系数,它们都是纬度B的函数。 由第三个条件知: 分别对和q求偏导数并代入上式 (2-11) 上两式两边相等,其必要充分条件是同次幂前的系数应相等,即

(2-12) (2-12)是一种递推公式,只要确定了就可依次确定其余各系数。 由第二条件知:位于中央子午线上的点,投影后的纵坐标x应等于投影前从赤道量至该点的子午线弧长X,即(2-10)式第一式中,当时有: (2-13) 顾及(对于中央子午线) 得: (2-14,15) (2-16) 依次求得并代入(2-10)式,得到高斯投影正算公式

(2-17) 2.2.2. 2高斯投影坐标反算公式 x,y B, 投影方程: (2-18) 高斯投影坐标反算公式推导要复杂些。 ⑴由x求底点纬度(垂足纬度),对应的有底点处的等量纬度,求x,y与 的关系式,仿照式有, 由于y和椭球半径相比较小(1/16.37),可将展开为y的幂级数;又由于是对称投影,q必是y的偶函数,必是y的奇函数。 (2-19) 是待定系数,它们都是x的函数. 由第三条件知: ,

, (2-20) (2-19)式分别对x和y求偏导数并代入上式 上式相等必要充分条件,是同次幂y前的系数相等, 第二条件,当y=0时,点在中央子午线上,即x=X,对应的点称为底点,其纬度为底点纬度,也就是x=X时的子午线弧长所对应的纬度,设所对应的等量纬度为。也就是在底点展开为y的幂级数。 由(2-19)1式 依次求得其它各系数 (2-21) (2-21)1 ………… 将代入(2-19)1式得

高斯坐标系

大地坐标系是大地测量的基本坐标系。常用于大地问题的细算,研究地球形状和大小,编制地图,火箭和卫星发射及军事方面的定位及运算,若将其直接用于工程建设规划、设计、施工等很不方便。所以要将球面上的大地坐标按一定数学法则归算到平面上,即采用地图投影的理论绘制地形图,才能用于规划建设。 椭球体面是一个不可直接展开的曲面,故将椭球体面上的元素按一定条件投影到平面上,总会产生变形。测量上常以投影变形不影响工程要求为条件选择投影方法。地图投影有等角投影、等面积投影和任意投影三种。 其中等角投影又称为正形投影,它保证在椭球体面上的微分图形投影到平面后将保持相似。这是地形图的基本要求。正形投影有两个基本条件: ①保角条件,即投影后角度大小不变。 ②长度变形固定性,即长度投影后会变形,但是在一点上各个方向的微分线段变形比m是个常数k: 式中:ds—投影后的长度,dS—球面上的长度。 1.高斯投影的概念 高斯是德国杰出的数学家、测量学家。他提出的横椭圆柱投影是一种正形投影。它是将一个横椭圆柱套在地球椭球体上,如下图所示: 椭球体中心O在椭圆柱中心轴上,椭球体南北极与椭圆柱相切,并使某一子午线与椭圆柱相切。此子午线称中央子午线。然后将椭球体面上的点、线按正形投影条件投影到椭圆柱上,再沿椭圆柱N、S 点母线割开,并展成平面,即成为高斯投影平面。在此平面上: ①中央子午线是直线,其长度不变形,离开中央子午线的其他子午线是弧形,凹向中央子午线。离开中央子午线越远,变形越大。 ②投影后赤道是一条直线,赤道与中央子午线保持正交。

③离开赤道的纬线是弧线,凸向赤道。 高斯投影可以将椭球面变成平面,但是离开中央子午线越远变形越大,这种变形将会影响测图和施工精度。为了对长度变形加以控制,测量中采用了限制投影宽度的方法,即将投影区域限制在靠近中央子午线的两侧狭长地带。这种方法称为分带投影。投影带宽度是以相邻两个子午线的经差来划分。有6°带、3°带等不同投影方法。 6°带投影是从英国格林尼治子午线开始,自西向东,每隔6°投影一次。这样将椭球分成60个带,编号为1~60带,如下图所示: 各带中央子午线经度(L)可用下式计算: 式中n为6°带的带号。 已知某点大地经度L,可按下式计算该点所属的带号: 有余数时,为n的整数商+1。 3°带是在6°带基础上划分的,其中央子午线在奇数带时与6°带中央子午线重合,每隔3°为一带,共120带,各带中央子午线经度(L)为: 式中n′为3°带的带号。 我国幅员辽阔,含有11个6°带,即从13~23带(中央子午线从75°~135°),21个3°带,从25~45带。北京位于6°带的第20带,中央子午线经度为117°。 2.高斯平面直角坐标系 根据高斯投影的特点,以赤道和中央子午线的交点为坐标原点。,中央子午线方向为x轴,北方向为正。赤道投影线为y轴,东方向为正。象限按顺时针Ⅰ、Ⅱ、Ⅲ、Ⅳ排列,如下图所示:

(完整word版)高斯投影坐标正反算编程报告

高斯投影坐标正反算编程报告 10021班 张鑫 学号:2010302590040 1. 编程思想 进行高斯投影坐标正反算的编程需要牵涉到大量的公式,为了使程序条理更清楚,各块的数据复用性更强,这里采取了结构化的编程思想。 程序由四大块组成。 GeodesyHomework.cpp 文件用于存放main()函数,是整个程序的入口。通过结构化的编程尽力使main()函数变得简单。 MyFunction.h 和MyFunction.cpp 用于存放计算过程中进行角度弧度换算时所要用到的一些自定的转换函数。 Zhengsuan.h 和Zhengsuan.cpp 用于存放Zhengsuan 类,在Zhengsuan 类中声明了高斯投影坐标正算所要用到的所有变量,在类的构造函数中进行成员变量的初始化及正算计算。通过get 函数获得相应的正算结果。 Fansuan.h 和Fansuan.cpp 用于存放Fansuan 类,类似于Zhengsuan 类,Fansuan 类中声明了高斯投影坐标反算所要用到的所有变量,在类的构造函数中进行成员变量的初始化及反算计算。通过get 函数获得相应的反算结果。 2. 计算模型 高斯投影正算公式 6 4256 4 42234 22)5861(cos sin 720)495(cos 24cos sin 2l t t B B N l t B simB N l B B N X x ''+-''+ ''++-''+''?''+=ρηηρρ 5 2224255 3 2233)5814185(cos 120)1(cos 6cos l t t t B N l t B N l B N y ''-++-''+''+-''+''?''=ηηρηρρ 高斯投影反算公式 () () ()( ) 222425 52 2336 4254 2222 32 8624285cos 12021cos 6cos 459061720935242f f f f f f f f f f f f f f f f f f f f f f f f f f f f f t t t B N y t B N y B N y l y t t y N M t y t t N M t y N M t B B ηηηηη+++++++-=++- -+++ -=

高斯投影计算的实用公式

§8.4高斯投影计算的实用公式 1子午线弧长计算公式 改写并扩充(7-65)(7-64)两式 )8sin()6sin()4sin()2sin(86420B a B a B a B a B a X ++++= )16384 17640512525646043)(1(21864222e e e e e a a +++--= )16384 88205122106415)(1(4186424e e e e a a ++-= )16384 252051235)(1(618626e e e a a +--= )16384 315)(1(81828e e a a -= 2正算公式(8-67)(8-81) 00/cos ρBl p = 2/)12/)30/))58(61())49(5((1(22222222p p p t t t Nt X x -++++-++=ηηp p p t t t N y )6/)20/)14)5818(5()1((1(22222222ηηη+--+++-+= )3/)5/)2())23(1((1(sin 22222 00p p t Bl r -++++=ηη 式中: B t tan = 22)cos (B e '=η 221η+=V V c N /= 0000L L l -= 21a/e c -= 3 底点纬度公式 00Xq B = (单位:弧度) ))) sin (sin (sin )(2sin(028*********B q q B q B q B B B f ++++=(单位:弧度) 式中: )16384110255123506445431)(1(864220e e e e e a a ++++-=

高斯投影正算

高斯投影正、反算代码 //高斯投影正、反算 //////6度带宽 54年北京坐标系 //高斯投影由经纬度(Unit:DD)反算大地坐标(含带号,Unit:Metres) void GaussProjCal(double longitude, double latitude, double *X, double *Y) { int ProjNo=0; int ZoneWide; ////带宽 double longitude1,latitude1, longitude0,latitude0, X0,Y0, xval,yval; double a,f, e2,ee, NN, T,C,A, M, iPI; iPI = 0.0174532925199433; ////3.1415926535898/180.0; ZoneWide = 6; ////6度带宽 a=6378245.0; f=1.0/298.3; //54年北京坐标系参数 ////a=6378140.0; f=1/298.257; //80年西安坐标系参数 ProjNo = (int)(longitude / ZoneWide) ; longitude0 = ProjNo * ZoneWide + ZoneWide / 2; longitude0 = longitude0 * iPI ; latitude0=0; longitude1 = longitude * iPI ; //经度转换为弧度 latitude1 = latitude * iPI ; //纬度转换为弧度 e2=2*f-f*f; ee=e2*(1.0-e2); NN=a/sqrt(1.0-e2*sin(latitude1)*sin(latitude1)); T=tan(latitude1)*tan(latitude1); C=ee*cos(latitude1)*cos(latitude1); A=(longitude1-longitude0)*cos(latitude1); M=a*((1-e2/4-3*e2*e2/64-5*e2*e2*e2/256)*latitude1-(3*e2/8+3*e2*e2 /32+45*e2*e2 *e2/1024)*sin(2*latitude1)

高斯平面直角坐标与大地坐标转换

高斯平面直角坐标系与大地坐标系 1 高斯投影坐标正算公式 (1)高斯投影正算:已知椭球面上某点的大地坐标()B L ,,求该点在高斯投影平面上的直角坐标()y x ,,即()),(,y x B L ?的坐标变换。 (2)投影变换必须满足的条件 中央子午线投影后为直线; 中央子午线投影后长度不变; 投影具有正形性质,即正形投影条件。 (3)投影过程 在椭球面上有对称于中央子午线的两点1P 和2P ,它们的大地坐标分别为(B L ,)及(B l ,),式中l 为椭球面上P 点的经度与中央子午线)(0L 的经度差:0L L l -=, P 点在中央子午线之东, l 为正,在西则为负,则投影后的平面坐标一定为),(1y x P '和),(2y x P -'。 (4)计算公式 ??? ? ???''+-''+''+-''+''''=''+-''+''''+ =54255 32234 22342 2)185(cos 120)1(6cos )95(cos sin 2sin 2l t t B N l t B N l B N y l t B B N l B N X x ρηρρηρρ 当要求转换精度精确至时,用下式计算: ?????? ???????''-++-' '+''+-' '+''''=''+-''+''++-''+''''+ =52224255 32233 64256 44223422)5814185(cos 720)1(cos 6cos )5861(cos sin 720)495(cos sin 24sin 2l t t t B N l t B N l B N y l t t B B N l t B B N l B N X x ηηρηρρρηηρρ 2 高斯投影坐标反算公式 (1)高斯投影反算:已知某点的高斯投影平面上直角坐标()y x ,,求该点在椭球面上的大

高斯投影坐标正反算VB程序

高斯投影坐标正反算V B 程序 Jenny was compiled in January 2021

高斯投影坐标正反算 学院: 班级: 学号: 姓名: 课程名称: 指导老师:

实验目的: 1.了解高斯投影坐标正反算的基本思想; 2.学会编写高斯正反算程序,加深了解。 实验原理: 高斯投影正算公式中应满足的三个条件: 1. 中央子午线投影后为直线; 2. 中央子午线投影后长度不变; 3. 投影具有正形性质,即正形投影条件。 高斯投影反算公式中应满足的三个条件: 1. x坐标轴投影成中央子午线,是投影的对称轴; 2. x轴上的长度投影保持不变; 3. 正形投影条件,即高斯面上的角度投影到椭球面上后角度没有 变形,仍然相等。 操作工具: 计算机中的 代码: Dim a As Double, b As Double, x As Double, y As Double, y_#

Dim l_ As Double, b_ As Double, a0#, a2#, a4#, a6#, a8#, m2#, m4#, m6#, m8#, m0#, l0#, e#, e1# Dim deg1 As Double, min1 As Double, sec1 As Double, deg2 As Double, min2 As Double, sec2 As Double Private Sub Command1_Click() Dim x_ As Double, t#, eta#, N#, W#, k1#, k2#, ik1%, ik2%, dh% deg1 = Val min1 = Val sec1 = Val deg2 = Val min2 = Val sec2 = Val l_ = (deg1 * 3600 + min1 * 60 + sec1) / 206265 b_ = (deg2 * 3600 + min2 * 60 + sec2) / 206265 dh = Val k1 = ((l_ * 180 / + 3) / 6) k2 = (l_ * 180 / / 3) ik1 = Round(k1, 0) ik2 = Round(k2, 0) If dh = 6 Then l0 = 6 * ik1 - 3 Else

高斯投影及其中央子午线的判断

一、高斯-克吕格投影 1、高斯-克吕格简介 高斯-克吕格(Gauss-Kruger)投影简称“高斯投影”,又名"等角横切椭圆柱投影”,地球椭球面和平面间正形投影的一种。德国数学家、物理学家、天文学家高斯(Carl FriedrichGauss,1777一1855)于十九世纪二十年代拟定,后经德国大地测量学家克吕格(Johannes Kruger,1857~1928)于1912年对投影公式加以补充,故名。该投影按照投影带中央子午线投影为直线且长度不变和赤道投影为直线的条件,确定函数的形式,从而得到高斯一克吕格投影公式。投影后,除中央子午线和赤道为直线外,其他子午线均为对称于中央子午线的曲线。设想用一个椭圆柱横切于椭球面上投影带的中央子午线,按上述投影条件,将中央子午线两侧一定经差范围内的椭球面正形投影于椭圆柱面。将椭圆柱面沿过南北极的母线剪开展平,即为高斯投影平面。取中央子午线与赤道交点的投影为原点,中央子午线的投影为纵坐标x 轴,赤道的投影为横坐标y轴,构成高斯克吕格平面直角坐标系。 2、高斯-克吕格特性 (1)等角投影——投影前后的角度相等,但长度和面积有变形; (2)等距投影——投影前后的长度相等,但角度和面积有变形; (3)等积投影——投影前后的面积相等,但角度和长度有变形。 3、投影的基本概念 它是一种横轴等角切圆柱投影。它把地球视为球体,假想一个平面卷成一个横圆柱面并把它套在球体外面,使横轴圆柱的轴心通过球的中心,球面上一根子午线与横轴圆柱面相切。这样,该子午线在圆柱面上的投影为一直线,赤道面与圆柱面的交线是一条与该子午线投影垂直的直线。将横圆柱面展开成平面,由这两条正交直线就构成高斯-克吕格平面直角坐标系。为减少投影变形,高斯-克吕格投影分为3o带和6o带投影。

测量坐标、高斯投影、全站仪(附图)

一、三北关系 真子午线北方向是沿地面某点真子午线的切线方向(通常用天文大地测量或陀螺经纬仪直接测定); 坐标纵线北方向是高斯投影时投影带的中央子午线的方向,也是高斯平面直角坐标系的坐标纵轴线方向。也叫图北、方格北,是指在某张地图上纵向方格线指示的"上"方。也就是所谓的上北下南。(可以根据测量仪器测出的坐标数据确定)磁子午线北方向是磁针在地面某点自由静止后磁针所指的方向(罗盘指向)。磁偏角,是磁子午线与真子午线间的夹角,通常以δ表示,并规定以真子午线北方向为准,磁子午线位于以东时称为东偏、其角值为正,位于以西时称西偏、其角值为负(大同磁偏角4度,偏西,06年测的,20年内可以用); 磁坐偏角,是磁子午线与坐标纵线问的夹角,常以δm表示,并规定以坐标纵线北方向为准,磁子午线位于以东时称东偏、其角值为正,位于以西时称西偏、其角值为负; 坐标纵线偏角,参见“子午线收敛角”。 二、地形图的应用

三、参考椭球体与高斯投影(坐标和高程表述地表形态的参数) 1)参考椭球体的表面是一个可以用数学公式表达的规则曲面,它是测量计算和投影制图的基准面。建立大地原点,就是为了确定中国基础测绘的统一坐标系,作为一切定位、定向等基础地理信息数据的基础。测量是研究地球表面的科学,人们都知道地球大体是一个椭圆形,但它的表面(包括大地水准面)很不规则,不便进行测量计算。而测量成果需借助一个与地球形状大小相似的、表面光滑的参考椭球面向外推算,原点的建立,就是解决了参考椭球的定位、定向问题,即在中国领土范围内,使地球大地水准面与参考椭球体面基本吻合,并在这一点将二者关系固定下来,从而使全国的测量有一个统一的、标准的、切合中国实际的计算投影面。

高斯投影正反算公式83

§8.3高斯投影坐标正反算公式 任何一种投影①坐标对应关系是最主要的;②如果是正形投影,除了满足正形投影的条件外(C-R 偏微分方程),还有它本身的特殊条件。 8.3.1高斯投影坐标正算公式: B,l ? x,y 高斯投影必须满足以下三个条件: ①中央子午线投影后为直线;②中央子午线投影后长度不变;③投影具有正形性质,即正形投影条件。 由第一条件知中央子午线东西两侧的投影必然对称于中央子午线,即(8-10)式中,x 为l 的偶函数,y 为l 的奇函数;0330'≤l ,即20/1/≈''''ρl ,如展开为l 的级数,收敛。 +++=++++=553316644220l m l m l m y l m l m l m m x (8-33) 式中 ,,10m m 是待定系数,它们都是纬度B 的函数。 由第三个条件知: q y l x l y q x ??-=????=??, (8-33)式分别对l 和q 求偏导数并代入上式 ----=++++++=+++553315 63424 42204 52 3164253l dq dm l dq dm l dq dm l m l m l m l dq dm l dq dm dq dm l m l m m (8-34) 上两式两边相等,其必要充分条件是同次幂l 前的系数应相等,即

dq dm m dq dm m dq dm m 231 20 13121? =? -== (8-35) (8-35)是一种递推公式,只要确定了 0m 就可依次确定其余各系数。 由第二条件知:位于中央子午线上的点,投影后的纵坐标x 应等于投影前从赤道量至该点的子午线弧长X ,即(8-33)式第一式中,当0=l 时有: 0m X x == (8-36) 顾及(对于中央子午线) B V M r M B N dq dB M dB dX cos cos 2 ==== 得: B V c B N r dq dB dB dX dq dX dq dm m cos cos 01===?===(8-37,38) B B N dq dB dB dm dq dm m cos sin 2 2121112=?-=?-= (8-39) 依次求得6543,,,m m m m 并代入(8-33)式,得到高斯投影正算公式

高斯投影坐标正反算公式

高斯投影坐标正反算公式 未知2010-04-03 10:47:15 本站 §高斯投影坐标正反算公式 任何一种投影①坐标对应关系是最主要的;②如果是正形投影,除了满足正形投影的条件外( C-R 偏微分方程),还有它本身的特殊条件。 1.1 高斯投影坐标正算公式: B, x,y 高斯投影必须满足以下三个条件: ①中央子午线投影后为直线;②中央子午线投影后长度不变;③投影具有正形性质,即正形投影条件。 由第一条件知中央子午线东西两侧的投影必然对称于中央子午线,即 (8-10) 式中, x 为 的偶函数, y 为的奇函数;,即,如展开为的级数,收敛。 ( 8-33 ) 式中是待定系数,它们都是纬度 B 的函数。 由第三个条件知: (8-33) 式分别对和 q 求偏导数并代入上式

(8-34) 上两式两边相等,其必要充分条件是同次幂前的系数应相等,即 (8-35) (8-35) 是一种递推公式,只要确定了就可依次确定其余各系数。 由第二条件知 : 位于中央子午线上的点,投影后的纵坐标 x 应等于投影前从赤道量至该点的子午线弧长 X ,即 (8-33) 式第一式中,当时有: (8-36) 顾及 ( 对于中央子午线 )

得: (8-37,38) (8-39) 依次求得并代入 (8-33) 式,得到高斯投影正算公式 (8-42) 1.2 高斯投影坐标反算公式 x,y B, 投影方程: (8-43)

满足以下三个条件:

①x 坐标轴投影后为中央子午线是投影的对称轴;② x 坐标轴投影后长度不变;③投影具有正形性质,即正形投影条件。 高斯投影坐标反算公式推导要复杂些。 ①由 x 求底点纬度 ( 垂足纬度 ), 对应的有底点处的等量纬度,求 x,y 与 的关系式,仿照 (8-10) 式有, 由于 y 和椭球半径相比较小 (1/16.37) ,可将展开为 y 的幂级数;又由于是对称投影, q 必是 y 的偶函数,必是 y 的奇函数。 (8-45) 是待定系数,它们都是 x 的函数 . 由第三条件知: , , (8-21)

高斯投影坐标反算c语言代码

高斯投影坐标反算c语言代码 #include #include #include main() { printf("#####################################################\n"); printf("# 角度输入说明:如26°12′45.2″输入为26,12,45.2 #\n"); printf("#####################################################\n"); double x,y; int j,L0; printf("请输入高斯投影坐标(自然坐标),中间用逗号隔开:\n"); scanf("%lf,%lf",&x,&y); //自然坐标输入 printf("请输入中央子午线L0:\n"); scanf("%d,%d,%lf",&L0); //中央子午线输入 printf("请选择参考椭球:1.北京1954参考椭球。\n 2.西安1980参考椭球。\n"); printf("选择的参考椭球为:"); scanf("%d",&j); //选择椭球参数 if(j==1) { long double Bf0=0.157046064172*pow(10,-6)*x; long double Bf=Bf0+cos(Bf0)*(0.005051773759*sin(Bf0)-0.000029837302*pow(sin(Bf0),3)+0.00000023818 9*pow(sin(Bf0),5)); long double t=tan(Bf); long double m=0.00673852541468*pow(cos(Bf),2); long double V=1+m; long double N=6378245.000/sqrt(1-0.00669342162297*pow(sin(Bf),2)); long double B1=Bf-1.0/2*V*t*pow(y/N,2)+1.0/24*(5+3*pow(t,2)+m-9*m*pow(t,2))*V*t*pow(y/N,4)-1.0/72 0*(61+90*pow(t,2)+45*pow(t,4)) *V*t*pow(y/N,6); long double l1=(1/cos(Bf))*(y/N)-1.0/6*(1+2*pow(t,2)+m)*(1/cos(Bf))*pow(y/N,3) +1.0/120*(5+28*pow(t,2)+24*pow(t,4)+6*m+8*m*pow(t,2))*(1/cos(Bf))*pow(y/N,5); long double B=B1*57.29577951; long double l=l1*57.29577951; long double L=L0+l; int d2=int(B);

高斯投影正反算c代码

高斯投影正反算c代码 Coca-cola standardization office【ZZ5AB-ZZSYT-ZZ2C-ZZ682T-ZZT18】

高斯投影正反算程序设计 一.程序设计流程 本程序的设计思路如下: (1),程序采用VS08版本作为开发平台,并采用C#语言作为开发语言,设计为WindowsForm窗体程序形式。 (2),程序主要的算法来自于教材。但是本程序为了更加实用,添加了更多的解算基准,包括:WGS-84,国际椭球1975,克氏椭球,和2000国家大地坐标系。 (3),程序为了更方便的读取数据和输出数据,故需要自己定义了固定的数据输入格式和数据输出格式或形式,请老师注意查看。 二.代码 using System; using ; using ; using ; using ; using Gauss { public partial class Form1 : Form { double b = (a * a * (1 - ee * ee)); double c = a * a / b; double epp = ((a * a - b * b) / b / b); CRDGEODETIC pcrdGeo; CRDCARTESIAN pcrdCar; double midlong = 0;

//求X,Y和带号 = ; ytext = ; string temp = (0, 2); num = (temp); ytext = (0, 2); = (ytext) - 500000; try { tt = } catch { ("Choose 3/6 error!"); return; } if ("3度带") == 0) { midlong = num * 3 * pai / 180; } if ("6度带") == 0) { midlong = (6 * num - 3) * pai / 180; } b = (a * a * (1 - ee * ee)); c = a * a / b; epp = (a * a - b * b) / b; double m0, m2, m4, m6, m8; double a0, a2, a4, a6, a8; m0 = a * (1 - ee * ee);

高斯投影坐标正反算VB程序

高斯投影坐标正反算 院: 级: 口 号: 名: 课程名称: 指导老师: 实验目的: 1.了解高斯投影坐标正反算的基本思想; 2.学会编写高斯正反算程序,加深了解。 实验原理: 高斯投影正算公式中应满足的三个条件: 1.中央子午线投影后为直线;

2.中央子午线投影后长度不变; 3.投影具有正形性质,即正形投影条件。 高斯投影反算公式中应满足的三个条件: 1. x 坐标轴投影成中央子午线,是投影的对称轴; 2. x 轴上的长度投影保持不变; 3.正形投影条件,即高斯面上的角度投影到椭球面上后角度没 有变形,仍然相等。 操作工具: 计算机中的VB6.0 代码: Dim a As Double, b As Double, x As Double, y As Double, y_# Dim l_ As Double, b_ As Double, a0#, a2#, a4#, a6#, a8#, m2#, m4#, m6#, m8#, m0#, l0#, e#, e1# Dim deg1 As Double, min1 As Double, sec1 As Double, deg2 As Double, min2 As Double, sec2 As Double Private Sub Command1_Click() Dim x_ As Double, t#, eta#, N#, W#, k1#, k2#, ik1%, ik2%, dh% deg1 = Val(Text1.Text) min1 = Val(Text2.Text) sec1 = Val(Text3.Text) deg2 = Val(Text4.Text) min2 = Val(Text5.Text) sec2 = Val(Text6.Text) l_ = (deg1 * 3600 + min1 * 60 + sec1) / 206265 b_ = (deg2 * 3600 + min2 * 60 + sec2) / 206265 dh = Val(Text9.Text) k1 = ((l_ * 180 / 3.14159 + 3) / 6) k2 = (l_ * 180 / 3.14159 / 3) ik1 = Round(k1, 0) ik2 = Round(k2, 0)

相关文档
相关文档 最新文档