文档库 最新最全的文档下载
当前位置:文档库 › 基于python的高斯投影计算

基于python的高斯投影计算

基于python的高斯投影计算
基于python的高斯投影计算

袁钱梅

(贵州省第二测绘院,贵州贵阳550000)

摘要:

本文基于python脚本语言编制了测量厂用的高斯投影正、反计算工具。有效的解决了在python及ARCGIS环境中高斯投影计算工作;并具有一定的灵活性。工具以在全国第一次地理国情普查数据生产中进行了批量性验证。

关键词:Python;高斯投影

1、Python语言概述

Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。Python吸收了Perl,TCL等脚本语言的优点,使得Python具备Tcl的扩展性,同时又具备Perl的文本解析和匹配能力。

2、高斯投影

高斯-克吕格投影是一种等角横轴切椭圆柱投影。它是假设一个椭圆柱面与地球椭球体面横切于某一条经线上,按照等角条件将中央经线东、西各3°或1.5°经线范围内的经纬线投影到椭圆柱面上,然后将椭圆柱面展开成平面而成的。

这种投影,将中央经线投影为直线,其长度没有变形,与球面实际长度相等,其余经线为向极点收敛的弧线,距中央经线愈远,变形愈大。赤道线投影后是直线,但有长度变形。除赤道外的其余纬线,投影后为凸向赤道的曲线,并以赤道为对称轴。经线和纬线投影后仍然保持正交。所有长度变形的线段,其长度变形比均大于1,随远离中央经线,面积变形也愈大。若采用分带投影的方法,可使

投影边缘的变形不致过大。我国各种大、中比例尺地形图采用了不同的高斯-克吕格投影带。其中大于1:1万的地形图采用3°带;1:2.5万至1:50万的地形图采用6°带。

3、Python模块

P博闻新闻ython是中许多功能是由一系列的模块组成的,每个模块可以是一个py为后缀的文件。模块也可以理解为lib库,如果需要使用某个模块中的函数或对象,则要导入这个模块才可以使用;除了系统默认的模块(内置函数)不需要导入。在实际使用中高斯投影计https://www.wendangku.net/doc/a912679385.html,算是使用在实际工作中的各个部分的,为方便调用,采用Python的模块方式对高斯计算进行封装,可高效利用模块在不同的应用中进行计算。

4、高斯投影计算

高斯投影计算分正算和反算,正算为经纬度坐标计算到投影坐标;反算为投影坐标计算到经纬度坐标。高斯投影正算需要确定投影后的中央经度,及投影椭球参数信息;如采用CGCS2000坐标系及1980西安坐标系其采用椭球参数不同,经过正算的投影坐标即不同。

由于Python为脚本语言,其在进行科学计算时小数位取位是无法保证计算精度的,在Python中实现高斯投影计算单纯的使用其提供的基本计算函数是无法满足计算精度需求的,因此需要借助Python提供的模块进行提高精度计算。Python提供了decimal模块用于十进制数学计算,它具有以下特点:

1.提供十进制数据类型,并且存储为十进制数序列;

2.有界精度:用于存储数字的位数是固定的,可以通过decimal.getcontext ().prec=x 来设定,不同的数字可以有不同的精度;

3.浮点:十进制小数点的位置不固定(但位数是固定的);

5、程序实现

通过Python提供的IDLE开发环境进行代码编制与程序调试,程序实现见下图: 图片:2216.jpg

为保证计算精度与准确率,笔者利用了国内开发的MAPGIS、EPS软件与计算结果进行比对,同时也使用了ARCGIS软件投影计算进行比对,比对后采用Python计算的结果均能保证小数位后6位的精度,已能满足高斯投影的计算要

求。

5、结论

采用Python开发环境与机制编制高斯投影计算模块,可高效处理各类的高斯计算;再配合ARCGIS的ARCPY模块可在Python下高效的处理各类地理空间数据;并具有较好的移植性与通用性,并也能在不同的操作系统中进行计算。

参考文献

1、《Python标准库》机械工业出版社

2、《控制测量学》武汉测绘科技大学出版社

高斯投影正反算公式 新

高斯投影坐标正反算 一、相关概念 大地坐标系由大地基准面和地图投影确定,由地图投影到特定椭圆柱面后在南北两极剪开展开而成,是对地球表面的逼近,各国或地区有各自的大地基准面,我国目前主要采用的基准面为:基准面,为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,

高斯投影坐标正反算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

高斯投影正反算编程(可编辑修改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;

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

高斯投影坐标正算公式

高斯投影坐标正算公式 高斯投影坐标正反算公式 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式得

高斯投影正反算

class Gauss { #region 高斯投影正反算 ///

/// 从大地坐标到平面坐标的高斯正算 /// /// 默认的是使用假定坐标的六度带投影 /// /// 大地纬度 /// 大地经度 /// 平面纵轴 /// 平面横轴 /// 参考椭球长半轴 /// 参考椭球扁率倒数 public static void BL_xy(double B, double L, out double x, out double y, double a, double f) { BL_xy(B, L, out x, out y, a, f, 6, true); } /// /// 从大地坐标到平面坐标的高斯正算 /// /// 默认的是使用假定坐标 /// /// 大地纬度 /// 大地经度 /// 平面纵轴 /// 平面横轴 /// 参考椭球长半轴 /// 参考椭球扁率倒数 /// 投影分带的带宽 public static void BL_xy(double B, double L, out double x, out double y, double a, double f, int beltWidth) { BL_xy(B, L, out x, out y, a, f, beltWidth, true); } /// /// 从大地坐标到平面坐标的高斯正算 /// /// 默认的是六度带投影 /// /// 大地纬度 /// 大地经度 /// 平面纵轴

高斯投影坐标正反算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

高斯投影计算的实用公式

§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 ++++-=

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

高斯投影坐标正反算编程报告 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. 程序框图

电子表格进行高斯投影换算GPS坐标的方法

利用EXCEL电子表格进行高斯投影换算GPS坐标的方法 2009-06-13 10:05 [摘要] 对利用EXCEL电子表格进行高斯投影换算的方法进行了较详细的介绍,对如何进行GPS坐标系转换进行了分析,提出了一种简单实用的坐标改正转换方法,介绍了用EXCEL完成转换的思路。 [关键字] 电子表格;GPS;坐标转换 作为尖端技术GPS,能方便快捷性地测定出点位坐标,无论是操作上还是精度上,比全站仪等其他常规测量设备有明显的优越性。随着我国各地GPS差分台站的不断建立以及美国SA政策的取消,使得单机定位的精度大大提高,有的已经达到了亚米级精度,能够满足国土资源调查、土地利用更新、遥感监测、海域使用权清查等工作的应用。在一般情况下,我们使用的是1954年北京坐标系或1980年西安坐标系(以下分别简称54系和80系),而GPS测定的坐标是WGS-84坐标系坐标,需要进行坐标系转换。对于非测量专业的工作人员来说,虽然GPS定位操作非常容易,但坐标转换则难以掌握,EXCEL是比较普及的电子表格软件,能够处理较复杂的数学运算,用它来进行GPS坐标转换、面积计算会非常轻松自如。要进行坐标系转换,离不开高斯投影换算,下面分别介绍用EXCEL进行换算的方法和GPS坐标转换方法。 一、用EXCEL进行高斯投影换算 从经纬度BL换算到高斯平面直角坐标XY(高斯投影正算),或从XY换算成BL(高斯投影反算),一般需要专用计算机软件完成,在目前流行的换算软件中,存在一个共同的不足之处,就是灵活性较差,大都需要一个点一个点地进行,不能成批量地完成,给实际工作带来许多不便。笔者发现,用EXCEL可以很直观、方便地完成坐标换算工作,不需要编制任何软件,只需要在EXCEL的相应单元格中输入相应的公式即可。下面以54系为例,介绍具体的计算方法。 完成经纬度BL到平面直角坐标XY的换算,在EXCEL中大约需要占用21列,当然读者可以通过简化计算公式或考虑直观性,适当增加或减少所占列数。在EXCEL中,输入公式的起始单元格不同,则反映出来的公式不同,以公式从第2行第1列(A2格)为起始单元格为例,各单元格的公式如下: 单元格 单元格内容 说明 A2 输入中央子午线,以度.分秒形式输入,如115度30分则输入115.30 起算数据L0 B2 =INT(A2)+(INT(A2*100)-INT(A2)*100)/60+(A2*10000-INT(A2*100)*100)/3600 把L0化成度 C2

高斯投影坐标正反算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

20.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椭球体,但它们的大地基准面显然是不同的。在目前的GIS 商用软件中,大地基准面都通过当地基准面向WGS84的转换7参数来定义,

高斯投影坐标正反算公式及适合电算的高斯投影公式

§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)式,得到高斯投影正 算公式

大地测量-高斯投影正反算

大地测量高斯投影正反算程序代码 课程:大地测量学基础 姓名:林江伟 学号:2008301610045 班级: 0804

界面如下: 输入数据计算:

using System; using System.Collections.Generic; using https://www.wendangku.net/doc/a912679385.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace大地 { public partial class Form1 : Form { double B, L; double x, y; double X, Y; int N; double L0, l1; double p=206264.80625; public Form1() {

InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { //自动化控件显示初始值 radioButton2.Checked=true; radioButton3.Checked = true; textBox1.Focus(); textBox1.Text = textBox2.Text = textBox3.Text = textBox4.Text = textBox5.Text = textBox6.Text = "0"; this.richTextBox2.Text = "说明:输入的坐标需为按6°带投影且采用克氏椭球参数所得的国家统一坐标"; } private void button1_Click(object sender, EventArgs e) { //获取输入数据 double bb1=Convert.ToDouble(this.textBox1.Text); double bb2=Convert.ToDouble(this.textBox2.Text); double bb3=Convert.ToDouble(this.textBox3.Text); double ll1=Convert.ToDouble(this.textBox4.Text); double ll2=Convert.ToDouble(this.textBox5.Text); double ll3=Convert.ToDouble(this.textBox6.Text); //检查输入格式的正确性 if (bb1 >= 0 && bb1 <90 && bb2 >= 0 && bb2 < 60 && bb3 >= 0 && bb3 < 60) { B = bb1 * 3600 + bb2 * 60 + bb3; } else { MessageBox.Show("纬度输入格式不正确!", "警告"); return; } if (ll1 >= 0 && ll1<360 && ll2 >= 0 && ll2 < 60 && ll3 >= 0 && ll3 < 60) { L = ll1 * 3600 + ll2 * 60 + ll3; } else { MessageBox.Show("经度输入格式不正确!", "警告"); return; }

高斯投影正反算——包括3度和6度带的选择

// guass coordinateDlg.cpp : implementation file // #include "stdafx.h" #include "guass coordinate.h" #include "guass coordinateDlg.h" #include "math.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT }

高斯投影坐标正反算公式

高斯投影坐标正反算公式 未知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)

基于python的高斯投影计算

袁钱梅 (贵州省第二测绘院,贵州贵阳550000) 摘要: 本文基于python脚本语言编制了测量厂用的高斯投影正、反计算工具。有效的解决了在python及ARCGIS环境中高斯投影计算工作;并具有一定的灵活性。工具以在全国第一次地理国情普查数据生产中进行了批量性验证。 关键词:Python;高斯投影 1、Python语言概述 Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。Python吸收了Perl,TCL等脚本语言的优点,使得Python具备Tcl的扩展性,同时又具备Perl的文本解析和匹配能力。 2、高斯投影 高斯-克吕格投影是一种等角横轴切椭圆柱投影。它是假设一个椭圆柱面与地球椭球体面横切于某一条经线上,按照等角条件将中央经线东、西各3°或1.5°经线范围内的经纬线投影到椭圆柱面上,然后将椭圆柱面展开成平面而成的。 这种投影,将中央经线投影为直线,其长度没有变形,与球面实际长度相等,其余经线为向极点收敛的弧线,距中央经线愈远,变形愈大。赤道线投影后是直线,但有长度变形。除赤道外的其余纬线,投影后为凸向赤道的曲线,并以赤道为对称轴。经线和纬线投影后仍然保持正交。所有长度变形的线段,其长度变形比均大于1,随远离中央经线,面积变形也愈大。若采用分带投影的方法,可使

投影边缘的变形不致过大。我国各种大、中比例尺地形图采用了不同的高斯-克吕格投影带。其中大于1:1万的地形图采用3°带;1:2.5万至1:50万的地形图采用6°带。 3、Python模块 P博闻新闻ython是中许多功能是由一系列的模块组成的,每个模块可以是一个py为后缀的文件。模块也可以理解为lib库,如果需要使用某个模块中的函数或对象,则要导入这个模块才可以使用;除了系统默认的模块(内置函数)不需要导入。在实际使用中高斯投影计https://www.wendangku.net/doc/a912679385.html,算是使用在实际工作中的各个部分的,为方便调用,采用Python的模块方式对高斯计算进行封装,可高效利用模块在不同的应用中进行计算。 4、高斯投影计算 高斯投影计算分正算和反算,正算为经纬度坐标计算到投影坐标;反算为投影坐标计算到经纬度坐标。高斯投影正算需要确定投影后的中央经度,及投影椭球参数信息;如采用CGCS2000坐标系及1980西安坐标系其采用椭球参数不同,经过正算的投影坐标即不同。 由于Python为脚本语言,其在进行科学计算时小数位取位是无法保证计算精度的,在Python中实现高斯投影计算单纯的使用其提供的基本计算函数是无法满足计算精度需求的,因此需要借助Python提供的模块进行提高精度计算。Python提供了decimal模块用于十进制数学计算,它具有以下特点: 1.提供十进制数据类型,并且存储为十进制数序列; 2.有界精度:用于存储数字的位数是固定的,可以通过decimal.getcontext ().prec=x 来设定,不同的数字可以有不同的精度;

利用EXCEL行高斯投影正反算

利用EXCEL行高斯投影正反算

————————————————————————————————作者:————————————————————————————————日期:

利用EXCEL 进行高斯投影正反算 在工作中常需要将大量经纬度转换成高斯平面坐标、将高斯平面坐标转换成经纬度、将6度带坐标转换成3度带坐标等坐标转换问题。面对这些问题,我们希望能找个坐标转换软件进行批量转换从而降低劳动强度、提高工作效率。然而我们通常用的软件对批量转换往往有一定的限制而且对转换数据的格式要求比较严格不容易掌握和使用。实际上我们通常用的办公软件EXCEL 就可以完成这项工作。 EXCEL 办公软件操作简单方便、易于掌握。想要用EXCEL 实现正反算,我们必须知道高斯投影正反算数学公式。(高斯投影正算实际就是把大地坐标通过高斯投影数学模 型转换为平面坐标,反之则为高斯投影反算)下面就是高斯投影公式: 正算公式: "2 322"4""4sin cos sin cos (59)22N N x X B Bl B B t l ηρρ =++-+ " 322"3 524"5 " "3 "5 cos cos (1)cos (118)6120N N N y X Bl B t l B t t l ηρ ρρ =+ +-++-+ 反算公式: 232224 24635 (539)(619045)224720f f f f f f f f f f f f f f f t t N B B y t t y t t y M N M N M N ηη=- + -+---+ 223245 35 111(12)(52824)cos 6cos 120cos f f f f f f f f f f l y t y t t y N B N B N B η= -+++++ 我们只需要把上述两个公式用EXCEL 函数写于EXCEL 表格中就可以进行计算了。其实,我们用的其他软件中高斯正反算基本全都是用这两个公式实现的,然而由于各种程序语言以及软件计算数据时精度不同所以最后结果也会有很小的误差。我们在用软件处理数据时最关心的是数据结果的精度是否满足要求。面对这个问题我们可以通过与其他坐标转换软件比较来检查一下EXCEL 数据处理的结果是否能满足我们的要求。 下表为同一组数据分别用南方CASS 和EXCEL 表进行高斯正反算后的结果对 照表: 高斯正算结果比较表: 原始经纬度坐标 EXCEL CASS 点位误差 B L X Y X Y △S

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 ''+-''+ ''++-''+''?''+=ρηηρ ρ

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