WGS84座标与北京54坐标的转换(2003)
WGS84座标与北京54坐标的转换(2003)
GARMIN GPS60所测WGS84坐标转换至北京54坐标或西安80坐标的方法一、坐标转换坐标表示方法有:经纬度和高程、空间直角坐标、平面坐标和高程等三种。
WGS-84坐标为经纬度和高程,北京54坐标是平面坐标和高程。
在同一个椭球里的坐标转换是严密的,而在不同的椭球之间的转换是不严密的。
WGS-84坐标和北京54坐标之间是不存在一套转换参数可以全国通用的,在每个地方会不一样,因为它们是两个不同的椭球基准。
两个椭球间的坐标转换:一般而言比较严密的是用七参数法(包括布尔莎模型,一步法模型,海尔曼特等),即X平移,Y平移,Z平移,X旋转,Y旋转,Z旋转,尺度变化K。
要求得七参数就需要在一个地区需要3个以上的已知点,如果区域范围不大,最远点间的距离不大于30Km(经验值),这可以用三参数(莫洛登斯基模型),即X平移,Y平移,Z 平移,而将X旋转,Y旋转,Z旋转,尺度变化K视为0,所以三参数只是七参数的一种特例。
在一个椭球的不同坐标系中转换可能会用到平面转换,现阶段一般分为四参数和平面网格拟合两种方法,以四参数法在国内用的较多。
另外,还有高程拟合的问题,大地水准面模型在国内用户中很少会用到,但在国际上已经是标准之一,本软件提供最常用的EGM96模型和Geoid99模型。
二、转换步骤1.采集WGS84坐标收集测区控制点坐标或明显地物标志点若干,用GARMIN GPS60测定测区的这些点的WGS84坐标。
2.计算GARMIN GPS60校正参数①打开COORD GM程序②新建坐标转换文件③根据所测测区的WGS84坐标设定地图投影参数,设定中央子午线④根据测区大小选定三参数法或七参数,并计算得到椭球转换参数⑤保存转换参数,下次使用时,打开文件调入既可3.将椭球转换参数输入GARMIN GPS60①MENU→设置→单位→位置格式选“自定义格式”,根据测区的经纬度坐标设定中央子午线,如: E 117°00.000′,其他用默认值②MENU→设置→坐标系统选“User”,DX,DY,DZ分别输入2、④中计算所得的X、Y、Z平移参数;DA,DF分别是两个坐标系椭球体半径和曲率的差值,WGS84转为北京54为:-108m,+0.00000050WGS84转为西安80为:-3m,0(待查)设定完毕后GARMIN GPS60所示坐标将与所用底图坐标系统完全统一。
浅谈WGS84与北京54之间的转换
浅谈WGS84与北京54之间的转换摘要:GPS测量得到的是WGS84坐标系下的坐标,而实际应用中较多使用的是北京54坐标,如何实现WGS84坐标与北京54坐标系的转换,一直是GPS 应用中关心的热点。
本文详细介绍了GPS定位结果转换至北京54平面坐标系的两种坐标转换模型,并对实验结果进行了分析比较。
关键词:GPS;平面转换;空间转换Abstract: GPS measured is WGS84coordinate system of coordinates, but in the practical application are widely used in Beijing 54Coordinate, how to realize the WGS84 coordinates with Beijing 54coordinate system conversion, has been a hotspot in GPS application. This paper describes the results of GPS positioning to switch to Beijing 54 plane coordinates of the two coordinate transformation model, and the experimental results are analyzed and compared.Key words: GPS; plane conversion; conversion of space1前言测绘信息网随着GPS技术的快速发展,GPS定位精度的不断提高,使得GPS技术在测量中的应用也越来越广泛。
由于GPS卫星星历表示在WGS-84坐标系中,因此算得的GPS定位结果也直接表示在WGS84全球坐标系中。
而我国测绘成果大多表示在北京54坐标系中,它以克拉索夫斯基椭球为参考椭球,投影方式为高斯克吕格投影,以3度或者6度带划分整个中国区域。
使用ArcGIS实现WGS84经纬度坐标到北京54高斯投影坐标的转换
使用ArcGIS实现WGS84经纬度坐标到北京54高斯投影坐标的转换使用ArcGIS实现WGS84经纬度坐标到北京54高斯投影坐标的转换【摘要】本文针对从事测绘工作者普遍遇到的坐标转换问题,简要介绍ArcGIS实现WGS84经纬度坐标到北京54高斯投影坐标转换原理和步骤。
【关键词】ArcGIS 坐标转换投影变换1 坐标转换简介坐标系统之间的坐标转换既包括不同的参心坐标之间的转换,或者不同的地心坐标系之间的转换,也包括参心坐标系与地心坐标系之间的转换以及相同坐标系的直角坐标与大地坐标之间的坐标转换,还有大地坐标与高斯平面坐标之间的转换。
在两个空间角直坐标系中,假设其分别为O--XYZ和O--XYZ,如果两个坐标系的原点相同,通过三次旋转,就可以使两个坐标系重合;如果两个直角坐标系的原点不在同一个位置,通过坐标轴的平移和旋转可以取得一致;如果两个坐标系的尺度也不尽一致,就需要再增加一个尺度变化参数;而对于大地坐标和高斯投影平面坐标之间的转换,则需要通过高斯投影正算和高斯投影反算,通过使用中央子午线的经度和不同的参考椭球以及不同的投影面的选择来实现坐标的转换。
如何使用ArcGIS实现WGS84经纬度坐标到BJ54高斯投影坐标的转换?这是很多从事GIS工作或者测绘工作者普遍遇到的问题。
本文目的在于帮助用户解决这个问题。
我们通常说的WGS-84坐标是指经纬度这种坐标表示方法,北京54坐标通常是指经过高斯投影的平面直角坐标这种坐标表示方法。
为什么要进行坐标转换?我们先来看两组参数,如表1所示:表1 BJ54与WGS84基准参数参考椭球体长半轴短半轴扁率BJ54基准参数Krasovsky_1940 6378245 6356863.0188 298.3WGS 84 6378137 6356752.3142 298.257224 WGS84基准参数很显然,WGS84与BJ54是两种不同的大地基准面,不同的参考椭球体,因而两种地图下,同一个点的坐标是不同的,无论是三度带六度带坐标还是经纬度坐标都是不同的。
wgs84和北京54坐标转换的一些参数
主要介绍的是:3参数(七参数)转换法,三参数坐标纠正法一:3参数(七参数)转换法从本质上来说,转换的步骤应该大致遵循这样的规则:首先,将84的经纬度坐标(b84,l84,h84)转换为以地心为中心点的大地坐标(x84,y84,z84);然后根据七参数法(或3参数法)将其转换为54下的地心坐标(x54,y54,z54);然后根据54下的椭球参数,将第二步得到的地心坐标转换为大地坐标(b54,l54,h54);最后根据工程需要以及各种投影(如高斯克吕格)规则进行投影得到对应的投影坐标。
只有在第二步的时候涉及到七个参数的计算,其他的步骤都有现成的公式可供计算,稍后我会将各种论文贴上来。
如果这里涉及到您的利益还请跟我联系,我将马上删除下载链接,我本意只是用于学习使用。
其实如果在公司或者做项目的时候,当对这起个参数要求的很急的时候,我们可以从政府部门或者通过坐标转换软件求出这七个参数或者三个参数,这个可以大大提高效率,节省时间。
这些坐标转换软件有:坐标转换大师(这个不错),coorconvert.exe(一般),coord.exe(这个不错)。
一旦求出了七个参数,可以进行坐标转换的软件除了上述这些小软件可以进行转换外,一些比较有名的gis开发软件或者开发平台都提供了利用七个参数转换整个数据的功能或者提供了转换单个点的功能,这些在arc gis,supermap,mapgis中都有。
二:三参数坐标纠正法这个方法是这次我在实践中得出来的。
因为求出七个参数太过麻烦,所以选用了本方法。
本方法的使用范围为:大比例尺地形图比较适用,如县范围等。
具体方法:1.从测区取出适量的坐标控制点,坐标控制点是些这样的点,他们拥有84下的经纬度坐标,同时也拥有54下的投影坐标;2.取出后利用将经纬度坐标在esupermap平台中编写程序将其转成84下的高斯克吕格投影坐标(可以看成是一种虚假的投影);3.由2步中得到的投影坐标和原54下的投影坐标相比较得到一个差值p1(x1,y1,z1),并将其保存起来;4.重复第二步一直到把所有的点都计算完,计算完后将差值进行汇总并得到一个平均值p(x,y,z).通过此方法得到的三个参数经过测试和验证,他的精度在厘米或者亚米级的进度,这个对于一般的定位来说已经足够了。
WGS-84与北京54坐标的转换问题
WGS-84与北京54坐标的转换问题
王解先;王军;陆彩萍
【期刊名称】《大地测量与地球动力学》
【年(卷),期】2003(023)003
【摘要】GPS测量得到的是WGS-84中的地心空间直角坐标,而工程施工中通常使用地方独立坐标系,要求得到地方平面坐标.如何实现两者的转换,一直是工程施工中关心的热点问题.介绍了从GPS定位结果至平面坐标的两种转换模型.平面转换模型原理简单,数值稳定可靠,但只适用于小范围的GPS测量;空间转换模型可用于大范围GPS测量,按实际情况又分为7参数转换和3参数转换两种.鉴于54坐标点的大地高通常不能精确得知,对这两种转换方法得到的平面坐标的精度进行了比较,得出大地高精度主要表现为对高程的影响,对平面坐标影响较小的结论.此外,还讨论了7参数与3参数模型对转换结果的影响.
【总页数】4页(P70-73)
【作者】王解先;王军;陆彩萍
【作者单位】同济大学测量系,上海,200092;同济大学测量系,上海,200092;同济大学测量系,上海,200092
【正文语种】中文
【中图分类】P227
【相关文献】
1.WGS-84坐标与 BJ-54坐标之间的坐标转换问题 [J], 杨玉华;郭圣权
2.WGS-84和BJ54坐标转换问题的分析 [J], 张灿
3.WGS-84到北京54坐标转换精简模型修正方案的研究 [J], 滕志军;李喆;朱瑞杰;何平
4.关于利用七参数法进行WGS-84和BJ-54坐标转换问题的探讨 [J], 徐仕琪;张晓帆;周可法;赵同阳
5.北京54坐标转换至WGS-84坐标的方法 [J], 蔡昌盛;高井祥;郑南山;张华海因版权原因,仅展示原文概要,查看原文内容请购买。
用七参数法实现WGS84到北京54的坐标转换
用七参数法实现WGS84到北京54的坐标转换摘要:GPS技术在提供精确定位等方面具有重要价值, 通过GPS采集的坐标数据也日趋广泛,所以实现WGS - 84和BJ - 54坐标的转换有着重要意义。
通过简述了WGS84坐标系、北京54 坐标系的基本情况与空间转换的思想原理,最后详细介绍了利用七参数法在ARCGIS软件中实现WGS84到北京54的坐标转换的过程及方法,证明利用ARCGIS可以得到较高精度的坐标转换。
关键字:WGS84坐标系,北京54 坐标系,七参数,坐标转换1 坐标系概述坐标系是定义坐标如何实现的一套理论方法,包括定义原点、基本平面和坐标轴的指向,同时还包括基本的数学和物理模型,简单来说就是是描述空间位置的一种表达形式,即采用什么方法来表示空间位置。
目前国际上采用的是1984世界大地坐标系,我国通常采用的是1954北京坐标系、1980西安坐标系或地方局部坐标系等参心坐标系。
1.1 1984世界大地坐标系(WGS84)WGS84坐标系是美国国防部研制确定的大地坐标系,是为GPS全球定位系统使用而建立的坐标系统,也是国际上采用的地心坐标系。
其原点是地球的质心,空间直角坐标系的Z轴指向BIH1984.0定义的协议地球极(CTP)方向,X轴指向BIH1984.0的零度子午面和CTP赤道的交点,Y轴和Z,X轴构成右手坐标系。
1.2 1954北京坐标系(Beijing54)1954北京坐标系是一个参心大地坐标系,原点是前苏联的普尔科沃,采用了前苏联的克拉索夫斯基椭球体[1]。
1954年北京坐标系虽然是苏联1942年坐标系的延伸,但也还不能说它们完全相同。
2 坐标转换2.1 坐标转换的必要性首先我们先弄清楚三种常用的坐标系统及其表示方法:大地坐标系,即常说的经纬度坐标系,其表示方法为经纬度和高程(B,L,H);空间直角坐标系统,表示为空间直角坐标(X,Y,Z);平面直角坐标系统,表示方法为平面坐标和高程(X,Y,H)。
WGS84坐标转换到BJ54坐标的方法的实验研究
第一章绪论随着GPS 定位精度的不断提高,GPS 技术在测量中的应用也越来越广泛。
但是由于GPS 卫星星历表示于WGS84 坐标系中,算得的GPS 定位结果只能表示在WGS84 全球坐标系中。
WGS84坐标系是一种质心坐标系统,其坐标原点位于地球的质心上。
而我国的国土测量成果和在进行工程施工时大都采用BJ54坐标系,它是一种参心坐标系,它以克拉索夫斯基椭球为参考椭球, 并采用高斯—克吕格投影(等角横切圆锥投影)方式进行投影, 如何实现WGS84地心空间直角坐标系与BJ54在平面直角坐标系的之间的转换,一直是各个部门关心的热点。
在进行WGS84坐标系和BJ54坐标系转换时有两种转换思想和模型,即平面转换模型和空间转换模型。
在平面转换模型中,首先要假定两种坐标系的中心和坐标轴的方向一致,所以只适合小范围内国土测量和工程设计使用,平面转换模型原理简单,数值稳定可靠。
要进行大范围的GPS测量,应该使用空间转换模型。
按实际情况又分为7 参数转换和3 参数转换两种。
鉴于54 坐标点的大地高通常不能精确得知,对这两种转换方法得到的平面坐标的精度进行了比较,得出大地高精度主要表现为对高程的影响,对平面坐标影响较小的结论。
此外,还讨论了7 参数与3 参数模型对转换结果的影响。
第二章坐标系统简介第一节坐标系统2.1坐标系统所谓的坐标系指的是描述空间位置的表达形式,即采用什么方法表示空间位置。
人们为了描述空间位置,采用了多种方法,从而产生了不同的坐标系。
在各种测量中,经常使用的坐标系有3种类型。
2.1.1 空间直角坐标系空间直角坐标系的原点位于参考椭球的中心,Z轴指向参考椭球的北极,X轴指向起始子午面与赤道的交点,Y轴位于赤道的平面上,且按右手系于X轴成90°夹角。
(见图2—1)图2—1空间直角坐标系2.1.2 空间大地坐标系空间大地坐标系是采用大地经度和大地高来描述空间位置的。
纬度(B)是空间的点与参考椭球面的法线与赤道面的夹角,经度(L)是空间中的点与参考椭球的自转轴所在的面与参考椭球的起始子午面的夹角,大地高(H)是空间点沿参考椭球的法线的方向到参考椭球面的距离。
WGS84与北京54坐标系之间的转换
GPS测量后序数据处理的目的即为:
1.提取GPS网的基线结果;
2.GPS基线网的独立平差;
3.GPS基线网测量成果到地面坐标系的转换。
1.1概述
坐标转化并不是一个新的课题,随着测绘事业的发展,全球一体化的形成,越来越要求全球测绘资料的统一。尤其是在坐标系统的统一方面.原始的大地测量工作主要是依靠光学仪器进行,这样不免受到近地面大气的影响,同时受地球曲率的影响很大,在通视条件上受到很大的限制,从而对全球测绘资料的一体化产生巨大的约束性。
第三章
3.1 WGS-84坐标系
WGS-84坐标系是美国国防部研制确定的大地坐标系,是一种协议地球坐标系。
WGS-84坐标系的几何定义是:
原点是地球的质心,空间直角坐标系的Z轴指向BIH(1984。0)定义的地极(CTP)方向,即国际协议原点CIO,它由IAU和IUGG共同推荐。X轴指向BIH定义的零度子午面和CTP赤道的交点,Y轴和Z,X轴构成右手坐标系。WGS-84坐标系是对NSWC9Z-2(NNSS卫星多普勒定位系统的一个参考坐标系)的修正。
为了描述卫星运动,处理观测数据和表示测站位置,需要建立与之相应的坐标系统。在GPS测量中,通常采用两种坐标系统,即协议天球坐标系和协议地球坐标系。其中协议地球坐标系采用的是1984年世界大地坐标系(Word Geodetic System 1984─WGS-84)其主要参数为:
长半轴a=6378137;扁率f=1:298.257223563.
2.提取三维基线解并组成三维基线结果文件
部分各地WGS84坐标系转换BJ54坐标系参数
DF= 0.0000005 中央子午经度:117 鄂尔多斯市省坐标转换区域化参数: DX = 16 DY = -147 DZ = -77 DA= -108; DF= 0.0000005 中央子午经度:111
新疆阿克苏地区坐标转换参数: DX = 18 DY = -152 DZ = -76 DA= -108; DF= 0.0000005 中央子午经度:81
新疆阿克苏地区坐标转换参数: DX = 18 DY = -152 DZ = -76 DA= -108; DF= 0.0000005 中央子午经度:81
西藏坐标转换区域化参数: DX = 11.9 DY = -120.8 DZ = -62.4 DA= -108; DF= 0.0000005 中央子午经度:93
Dx=-4 Dy=-104 Dz=-45 Da=-108 Df=+0.0000005 中央子午经度:105 包头地区坐标系转换参数 Dx=-92 Dy=-49 Dz=-4 Da=-108 Df=+0.0000005 中央子午经度:114 安徽省坐标转换区域化参数: DX = -15 DY = -120 DZ = -48 DA= -108; DF= 0.0000005 中央子午经度:117 鄂尔多斯市省坐标转换区域化参数: DX = 16 DY = -147 DZ = -77 DA= -108; DF= 0.0000005 中央子午经度:111 新疆阿克苏地区坐标转换参数: DX = 18 DY = -152 DZ = -76 DA= -108; DF= 0.0000005 中央子午经度:81 西藏坐标转换区域化参数: DX = 11.9 DY = -120.8 DZ = -62.4 DA= -108; DF= 0.0000005 中央子午经度:93 赤峰地区坐标转换参数: DX = -18 DY = -104.5
WGS84经纬度坐标与北京54坐标或者西安80坐标的关系
一般来讲,GPS直接提供的坐标(B,L,H)是1984年世界大地坐标系(Word Geodetic System 1984即WGS-84)的坐标,其中B为纬度,L为经度,H为大地高即是到WGS-84椭球面的高度。
而在实际应用中,我国地图采用的是1954北京坐标系或者1980西安坐标系下的高斯投影坐标(x,y,),不过也有一些电子地图采用1954北京坐标系或者1980西安坐标系下的经纬度坐标(B,L),高程一般为海拔高度h。
GPS的测量结果与我国的54系或80系坐标相差几十米至一百多米,随区域不同,差别也不同,经粗落统计,我国西部相差70米左右,东北部140米左右,南部75米左右,中部45米左右。
现就上述几种坐标系进行简单介绍,供大家参阅,并提供各坐标系的基本参数,以便大家在使用过程中自定义坐标系。
1、1984世界大地坐标系WGS-84坐标系是美国国防部研制确定的大地坐标系,是一种协议地球坐标系。
WGS-84坐标系的定义是:原点是地球的质心,空间直角坐标系的Z轴指向BIH (1984.0)定义的地极(CTP)方向,即国际协议原点CIO,它由IAU和IUGG共同推荐。
X轴指向BIH定义的零度子午面和CTP赤道的交点,Y轴和Z,X轴构成右手坐标系。
WGS-84椭球采用国际大地测量与地球物理联合会第17届大会测量常数推荐值,采用的两个常用基本几何参数:长半轴a=6378137m;扁率f=1:298.257223563。
2、1954北京坐标系1954北京坐标系是将我国大地控制网与前苏联1942年普尔科沃大地坐标系相联结后建立的我国过渡性大地坐标系。
属于参心大地坐标系,采用了前苏联的克拉索夫斯基椭球体。
其长半轴 a=6378245,扁率 f=1/298.3。
1954年北京坐标系虽然是苏联1942年坐标系的延伸,但也还不能说它们完全相同。
3、1980西安坐标系1978年,我国决定建立新的国家大地坐标系统,并且在新的大地坐标系统中进行全国天文大地网的整体平差,这个坐标系统定名为1980年西安坐标系。
BJ54坐标到WGS84坐标的转换
BJ54坐标到WGS84坐标的转换
第一步:控制点WGS84投影到平面
先将控制点的W GS84经纬度坐标转投影成三度带下的平面直角坐标。
打开南方PA,选择——工具——大地正反算(勾选正算):
保存转换后得到的WGS84高斯平面直角坐标。
第二步:求BJ54与WGS84的平面转换参数
根据控制点的BJ54平面直角坐标和步骤一中已经求得的WGS84平面直角坐标,通过平移,旋转,缩放求出转换参数。
使用南方PA——工具——坐标变换。
在公共点坐标中:导入已经编辑好的旧坐标(BJ54平面直角坐标)和新坐标(WGS84平面直角坐标)。
在转换点坐标中:导入需要由BJ54转成WGS84的待定点(像控点)平面直角坐标。
点击——转换,求得两者的转换参数和待转点从BJ54变为WGS84的坐标。
第三步:由高斯平面转到大地坐标(B,L)
将已经转换为WGS84坐标系统的待定点(像控点)坐标转换为WGS84坐标系统下的经纬度坐标。
使用南方PA——工具——大地正反算(勾选反算)。
中央子午线经度选择132即可!保存关闭。
第四步:待定点高程的转换
建立数学模型:N i=N+a1x i+a2y i;
根据两套坐标求得转换参数K=(N,a1,a2 )K=(139.06,-2.6448e-005,-8.646e-006)将其他的点依据转换参数计算得到WGS84中的高度。
WGS-84坐标与 BJ-54坐标之间的坐标转换问题
WGS-84坐标与 BJ-54坐标之间的坐标转换问题
杨玉华;郭圣权
【期刊名称】《科技情报开发与经济》
【年(卷),期】2004(014)003
【摘要】主要介绍了WGS-84坐标与BJ-54坐标的坐标变换参数的求解方法,分别采用7参数法和3参数法求解转换参数,并对比分析了不同的转换方法和转换参数对定位精度的影响.
【总页数】3页(P165-167)
【作者】杨玉华;郭圣权
【作者单位】华北工学院,山西太原,030051;华北工学院,山西太原,030051
【正文语种】中文
【中图分类】V44
【相关文献】
1.空管系统中WGS-84与BJ-54坐标转换 [J], 梁海军;张建伟
2.WGS-84坐标与BJ-54坐标转换的方法及应用 [J], 李宇廷
3.WGS-84坐标与北京坐标系之间的坐标转换计算 [J], 丁佳波
4.济宁矿区BJ-54至WGS-84坐标转换模型改进及精度分析 [J], 刘永义;党亚民;郑作亚
5.关于利用七参数法进行WGS-84和BJ-54坐标转换问题的探讨 [J], 徐仕琪;张晓帆;周可法;赵同阳
因版权原因,仅展示原文概要,查看原文内容请购买。
WGS84坐标与北京54坐标转换
WGS84坐标与北京54坐标转换1. 椭球体、基准面及地图投影GIS中的坐标系定义是GIS系统的基础,正确定义GIS系统的坐标系非常重要。
GIS中的坐标系定义由基准面和地图投影两组参数确定,而基准面的定义则由特定椭球体及其对应的转换参数确定,因此欲正确定义GIS系统坐标系,首先必须弄清地球椭球体(Ellipsoid)、大地基准面(Datum)及地图投影(Projection)三者的基本概念及它们之间的关系。
基准面是利用特定椭球体对特定地区地球表面的逼近,因此每个国家或地区均有各自的基准面,我们通常称谓的北京54坐标系、西安80坐标系实际上指的是我国的两个大地基准面。
我国参照前苏联从1953年起采用克拉索夫斯基(Krassovsky)椭球体建立了我国的北京54坐标系,1978年采用国际大地测量协会推荐的1975地球椭球体建立了我国新的大地坐标系--西安80坐标系,目前大地测量基本上仍以北京54坐标系作为参照,北京54与西安80坐标之间的转换可查阅国家测绘局公布的对照表。
WGS1984基准面采用WGS84椭球体,它是一地心坐标系,即以地心作为椭球体中心,目前GPS测量数据多以WGS1984为基准。
上述3个椭球体参数如下:椭球体与基准面之间的关系是一对多的关系,也就是基准面是在椭球体基础上建立的,但椭球体不能代表基准面,同样的椭球体能定义不同的基准面,如前苏联的Pulkovo 1942、非洲索马里的Afgooye 基准面都采用了Krassovsky椭球体,但它们的基准面显然是不同的。
地图投影是将地图从球面转换到平面的数学变换,如果有人说:该点北京54坐标值为X=4231898,Y=21655933,实际上指的是北京54基准面下的投影坐标,也就是北京54基准面下的经纬度坐标在直角平面坐标上的投影结果。
2. GIS中基准面的定义与转换虽然现有GIS平台中都预定义有上百个基准面供用户选用,但均没有我们国家的基准面定义。
北京54坐标与WGS84坐标转换说明
坐标转换程序说明COOD坐标转换4.2版,无需安装,直接运行即可使用,可以实现、空间直角坐标、大地坐标、平面坐标的七参数或四参数转换。
下面以北京1954坐标系(中央子午线经度123°)平面坐标转换为施工工程坐标系(GWS84椭球,中央子午线经度121-44-05,投影大地高40m)坐标为例,说明四参数平面坐标转换的具体步骤。
1、运行COOD坐标转换程序,程序界面如下图所示:2、计算转换参数单击“坐标转换”下拉菜单,单击“计算四参数”或者在键盘上直接输入字母“C”,进入参数计算,如图2所示:输入坐标转换重合点的源坐标和目标坐标,输入一个点的源坐标和目标坐标后,单击“增加”,然后依次输入下一个重合点的源坐标和目标坐标,一般四参数转换应输入至少3个重合点的坐标,以便对检核参数计算的正确性,也可提高转换精度,最后单击“计算”。
则显示计算结果如下图:随后弹出地方坐标转换参数,如下图:单击“确定”,此时四参数计算完成,软件自动将计算的参数作为当前值,并将参数计算结果保存在名为FourResult的文本文件中,查看COOD坐标转换程序的当前目录,找到FourResult文本文件查看转换误差,该例计算结果如下图:若转换后中误差过大,说明输入的重合点有误,或者重合点误差较大,应重新选择合适的重合点计算转换参数。
确认转换参数无误后,然后单击文件菜单,保存转换项目,例如保存为“54北京坐标系与84施工坐标系转换”。
2、坐标转换首先设置坐标类型和转换参数的类型,源坐标坐标类型为平面坐标,椭球基准为北京-54坐标系,目标坐标类型为平面坐标,椭球基准为WGS-84坐标系,坐标转换参数勾选“四参数转换”如下图所示:(1)单点坐标转换设置好坐标类型和转换参数的类型后,直接在对话框中输入一个控制点的源坐标,单击右侧的“转换坐标”按纽,则在右侧“输出目标坐标”框内显示转换后的坐标值,如下图所示:(2)文件转换对于少量的坐标可以通过单点转换来实现,但是对于批量坐标的转换就应采用文件转换实现比较方便。
用七参数法实现WGS84到北京54的坐标转换
用七参数法实现WGS84到北京54的坐标转换七参数法是一种常用的坐标转换方法,可以将WGS84坐标转换为北京54坐标。
在进行坐标转换之前,我们需要了解七参数法的原理和步骤。
七参数法的原理是通过七个参数对坐标进行转换,这七个参数分别是平移参数(dx, dy, dz),旋转参数(rx, ry, rz)和缩放参数(s)。
平移参数表示两个坐标系之间的平移量,旋转参数表示两个坐标系之间的旋转角度,缩放参数表示两个坐标系之间的比例关系。
通过这七个参数可以实现坐标的精确转换。
下面是使用七参数法将WGS84坐标转换为北京54坐标的步骤:步骤1:确定七参数的值七参数的值可以通过大地测量和控制点的观测数据来确定。
通常情况下,我们可以使用大地测量仪器进行观测,并使用专业的数据处理软件计算出七参数的值。
步骤2:计算WGS84坐标系的平移矩阵T平移矩阵T可以通过平移参数(dx, dy, dz)来计算,其表达式如下:T = [[1, 0, 0, dx],[0, 1, 0, dy],[0, 0, 1, dz],[0,0,0,1]]步骤3:计算WGS84坐标系的旋转矩阵R旋转矩阵R可以通过旋转参数(rx, ry, rz)来计算,其表达式如下:Rx=[[1,0,0],[0, cos(rx), -sin(rx)],[0, sin(rx), cos(rx)]]Ry = [[cos(ry), 0, sin(ry)],[0,1,0],[-sin(ry), 0, cos(ry)]]Rz = [[cos(rz), -sin(rz), 0],[sin(rz), cos(rz), 0],[0,0,1]]R=Rz*Ry*Rx步骤4:计算WGS84坐标系到北京54坐标系的坐标转换矩阵M坐标转换矩阵M可以通过平移矩阵T、旋转矩阵R和缩放参数s来计算,其表达式如下:M=s*R*T步骤5:使用坐标转换矩阵M将WGS84坐标转换为北京54坐标给定一个WGS84坐标P(WGS84_x,WGS84_y,WGS84_z),其对应的北京54坐标P54可以通过矩阵运算计算得到:P54=M*P以上步骤描述了通过七参数法实现WGS84到北京54坐标转换的具体过程。
部分地区WGS84坐标系转换BJ54坐标系参数
部分地区WGS84坐标系转换BJ54坐标系参数部分地区WGS84坐标系转换BJ54坐标系参数转换参数来自/forum_view.asp?forum_id=14&view_id=61&page =4鼎星在线GPS俱乐部,来自全国各地网友的共享,使用中最好验证一下该参数的正确性。
注:以下参数仅供参考!!拉萨GPS参数DX=11.9DY=-120.8DZ=-62.4DA=-108.0DF=0.00000050E=93°00.000 +1.0000000 +5000000.0 0.0藏东可用99°,其它参数不变,可对照地形图校对。
广东省GPS参数:这是WGS84转北京54的,适宜河源、惠州、深圳、东莞地区DX=-19DY=-112DZ=-55DA=-108.0dF=0.00000050E=114°00.000 +1.0000000 +5000000.0 0.0,WGS84转西安80的是DX=-96DY=-51DZ=12DA=-3DF=0.00000000E=114°00.000 +1.0000000 +5000000.0 0.0适宜整个广东。
广东?河源GPS参数转换参数/DX=12DY=-121DZ=-62DA=-108dF=0.00000050E=114°00.000 +1.0000000 +5000000.0 0.0坐标参数海南坐标转换参数:dx=-9.8dy=-114.6dz=-62.7da=-108.0df=0.0000005中央子午线:111DX = -18DY = -104.5DZ = -57.5DA= -108;DF= 0.0000005中央子午经度:117或123(东为123,西为117)新疆乌鲁木齐地区坐标转换参数:DX = 19DY = -33DZ = 5DA= -108;DF= 0.0000005中央子午经度:87各地WGS84坐标系转换BJ54坐标系参数(不断加入中...)以下为四川盆地坐标系转换参数Dx=-4Dy=-104Dz=-45Da=-108Df=+0.0000005中央子午经度:105以下为包头地区坐标系转换参数Dx=-92Dy=-49Dz=-4Da=-108Df=+0.0000005中央子午经度:114安徽省坐标转换区域化参数:DX = -15DY = -120DZ = -48DA= -108;DF= 0.0000005中央子午经度:117鄂尔多斯市省坐标转换区域化参数:DX = 16DY = -147DA= -108;DF= 0.0000005中央子午经度:111新疆阿克苏地区坐标转换参数:DX = 18DY = -152DZ = -76DA= -108;DF= 0.0000005中央子午经度:81西藏坐标转换区域化参数:DX = 11.9DY = -120.8DZ = -62.4DA= -108;DF= 0.0000005中央子午经度:93赤峰地区坐标转换参数:DX = -18DY = -104.5DZ = -57.5DA= -108;DF= 0.0000005中央子午经度:117或123(东为123,西为117)西藏坐标转换区域化参数:DX = 11.9DY = -120.8DZ = -62.4DA= -108;DF= 0.0000005中央子午经度:93介休地区坐标转换参数:DX = -45DY = -17DZ = 35.5DA= -108;DF= 0.0000005中央子午经度:111以下为吉林蛟河市坐标系转换参数Dx=+1Dy=-129Da=-108Df=+0.0000005中央子午经度:129吉林省延边地区坐标转换参数:DX = 1DY = -129.4DZ = -48.2DA= -108;DF= 0.0000005中央子午经度:129黑龙江省牡丹江市东京城地区坐标转换参数:DX = 21DY = -155DZ = -78DA= -108;DF= 0.0000005中央子午经度:129坐标系转换问题对于坐标系的转换,给很多GPS的使用者造成一些迷惑,尤其是对于刚刚接触的人,搞不明白到底是怎么一回事。
部分各地WGS84坐标系转换BJ54坐标系参数
部分各地WGS84坐标系转换BJ54坐标系参数WGS84坐标系(World Geodetic System 1984)是由美国国防部制定的一种全球地理坐标系。
它通过地球表面的经纬度来表示位置,被广泛用于全球定位系统(GPS)和地理信息系统(GIS)等领域。
BJ54坐标系(Beijing 1954)是中国国家标准的地理坐标系,主要用于中国大陆境内的测绘和地理信息应用。
它是基于1954年在北京进行的地球物理大地测量所建立的。
在进行WGS84坐标系到BJ54坐标系的转换时,需要使用一组坐标转换参数,以确保精确的转换结果。
以下是部分各地区的WGS84到BJ54坐标系的转换参数:
1.北京地区:
-平移参数:
-旋转参数:
-尺度参数:-2.4989×10^-6
2.上海地区:
-平移参数:
-X轴偏移:-235.0米
-Y轴偏移:-85.0米
-Z轴偏移:-47.0米
-旋转参数:
-绕X轴旋转:-11.0秒
-绕Y轴旋转:-2.0秒
-绕Z轴旋转:-9.0秒
-尺度参数:0.994
3.广州地区:
-平移参数:
-X轴偏移:-235.6318米
-Y轴偏移:-85.6829米
-Z轴偏移:-69.6162米
-旋转参数:
-尺度参数:0.998
以上是部分地区WGS84坐标系到BJ54坐标系的转换参数。
不同地区
的参数可能略有不同,具体的转换参数可根据需要进行查询和获取。
使用
这些参数,可以将WGS84坐标系的经纬度转换为BJ54坐标系的平面坐标,以满足特定测绘和地理信息应用的需求。
WGS84和BJ54坐标转换源程序
WGS84和BJ54坐标转换源程序WGS84和BJ54坐标转换源程序两个坐标系转换一般需要平移,旋转,缩放共七参数。
Y=(1+k)*M(x,y,z)*X+dX;X,Y为3*1矩阵,M(x,y,z)为3*3的旋转矩阵.public class CoordTrans7Param{public double[,] values=new double[7,1];//{{dx},{dy},{dz},{rx},{ry},{rz},{k}};//public double dx,dy,dz,rx,ry,rz,k;public void Set4Param(double dx,double dy,double dz,double k){this.dx=dx;this.dy=dy;this.dz=dz;this.k=k;this.rx=this.ry=this.rz=0;}public void SetRotationParamRad(double rx,double ry,double rz){this.rx=rx;this.ry=ry;this.rz=rz;}public void SetRotationParamMM(double rx,double ry,double rz){SetRotationParamRad(rx*Math.PI/648000,ry*Math.PI/64800 0,rz*Math.PI/648000); }private double[,] GetMx(){double [,] Mx=new double[,]{{1,0,0},{0,Math.Cos(rx),Math.Sin(rx)},{0,-Math.Sin(rx),Math.Cos(rx)}};return Mx;}private double[,] GetMy(){double [,] My=new double[,]{{Math.Cos(ry),0,-Math.Sin(ry)},{0,1,0},{Math.Sin(ry),0,Math.Cos(ry)}};return My;}private double[,] GetMz(){double [,] Mz=new double[,]{{Math.Cos(rz),Math.Sin(rz),0},{-Math.Sin(rz),Math.Cos(rz),0},{0,0,1}};return Mz;}private double[,] GetM() //M=Mx*My*Mz? or M=Mz*My*Mx? {double [,] M=new double[3,3];MatrixTool.Multi(GetMz(),GetMy(),ref M);return M;}private double[,] GetMdx(){double[,] mt = {{ 0, 0, 0 },{ 0, -Math.Sin(rx), Math.Cos(rx) },{ 0, -Math.Cos(rx), -Math.Sin(rx) }};double[,] m=new double[3,3];MatrixTool.Multi(GetMz(),GetMy(),ref m); MatrixTool.Multi(m,mt,ref m);return m;}private double[,] GetMdy(){double[,] mt = {{ -Math.Sin(ry), 0, -Math.Cos(ry) }, { 0, 0, 0 },{ Math.Cos(ry), 0, -Math.Sin(ry) }};double[,] m=new double[3,3];MatrixTool.Multi(GetMz(),mt,ref m); MatrixTool.Multi(m,GetMx(),ref m);return m;}private double[,] GetMdz(){double[,] mt = {{ -Math.Sin(rz), Math.Cos(rz), 0 }, { -Math.Cos(rz), -Math.Sin(rz), 0 },{ 0, 0, 0 }};double[,] m=new double[3,3];MatrixTool.Multi(mt,GetMy(),ref m);return m;}private double[,] specialMulti(double[,] m,double[,] X){int rowNumM=m.GetLength(0);int colNumM=m.GetLength(1);int rowNumX=X.GetLength(0);int colNumX=X.GetLength(1);int lines=rowNumX/colNumM;double[,] mt=MatrixTool.Init(rowNumM,colNumX);double[,] subX=MatrixTool.Init(colNumM,colNumX);double[,] res=MatrixTool.Init(rowNumM*lines,colNumX);for(int i=0;i<lines;i++)< bdsfid="191" p=""></lines;i++)<> {MatrixTool.CopySub(X,i*colNumM,0,colNumM,colNumX,ref subX,0,0); MatrixT ool.Multi(m,subX,ref mt);MatrixTool.CopySub(mt,0,0,rowNumM,colNumX,refres,i*rowNumM,0); }return res;}private double[,] specialSub(double[,] m,double[,] X){int rowNumM=m.GetLength(0);int colNumM=m.GetLength(1);int rowNumX=X.GetLength(0);int colNumX=X.GetLength(1);int lines=rowNumX/rowNumM;double[,] subX=MatrixTool.Init(rowNumM,colNumX);double[,] res=MatrixTool.Init(rowNumX,colNumX);for(int i=0;i< bdsfid="207" p=""><>{MatrixTool.CopySub(X,i,0,rowNumM,colNumX,ref subX,0,0);MatrixTool.Sub(m,subX,ref subX);MatrixTool.CopySub(subX,0,0,rowNumM,colNumX,ref res,i,0); }return res;}private double[,] GetF(double[,] X,double[,] Y){double[,] f0;double[,] qx=MatrixTool.Init(X.GetLength(0),1);double[,] K={{-dx},{-dy},{-dz}};double[,] S={{1+k}};MatrixTool.Multi(X,S,ref qx);double [,] M=GetM();qx=specialMulti(M,qx);MatrixTool.Sub(qx,Y,ref qx);f0=specialSub(K,qx);return f0;}private double[,] GetB(double[,] X){int rowNum=X.GetLength(0);double[,] B=MatrixTool.Init(rowNum,7);double[,] M=GetM();double[,] Mdx=GetMdx();double[,] Mdy=GetMdy();double[,] Mdz=GetMdz();double[,] mi=MatrixTool.Ident(3);double[,] MX,MY,MZ,MK;MK=specialMulti(M,X);MX=specialMulti(Mdx,X);MY=specialMulti(Mdy,X);MZ=specialMulti(Mdz,X);for(int i=0;i< bdsfid="242" p=""><>MatrixTool.CopySub(mi,0,0,3,3,ref B,i,0);MatrixTool.CopySub(MX,0,0,rowNum,1,ref B,0,3); MatrixTool.CopySub(MY,0,0,rowNum,1,ref B,0,4); MatrixTool.CopySub(MZ,0,0,rowNum,1,ref B,0,5); MatrixTool.CopySub(MK,0,0,rowNum,1,ref B,0,6);return B;}private double[,] GetA(){double[,] M=GetM();double[,] I2=MatrixTool.Ident(3);double[,] A=MatrixTool.Init(3,6);MatrixTool.MutliConst(ref I2,-1);MatrixTool.MutliConst(ref M,(1+k));MatrixTool.CopySub(M,0,0,3,3,ref A,0,0);MatrixTool.CopySub(I2,0,0,3,3,ref A,0,3);return A;}private double[,] GetV(double[,] X,double[,] Y,CoordTrans7Param dpp) {int rowNum=X.GetLength(0);double[,] B,F,A,B2,B3,F2,V;double[,] AT=MatrixTool.Init(6,3);A=GetA();MatrixTool.AT(A,ref AT);MatrixTool.MutliConst(ref AT,1/(1+(1+k)*(1+k)));F=GetF(X,Y);B=GetB(X);B2=MatrixT ool.Init(3,7);B3=MatrixT ool.Init(3,1);F2=MatrixTool.Init(rowNum,1);for(int i=0;i<="" bdsfid="271" p="">{MatrixTool.CopySub(B,i*3,0,3,7,ref B2,0,0);MatrixTool.Multi(B2,dpp.values,ref B3);MatrixTool.CopySub(B3,0,0,3,1,ref F2,i*3,0);}MatrixTool.Sub(F,F2,ref F2);V=specialMulti(AT,F2);return V;}public double CalculateTrans7Param(double[,] X,double[,] Y) {int PtNum=X.GetLength(0)/3;double[,] B;double[,] F;double[,] BT=MatrixTool.Init(7,3*PtNum);double[,] BTB=MatrixTool.Init(7,7);double[,] BTF=MatrixTool.Init(7,1);//init pararmCoordTrans7Param dpp=new CoordTrans7Param();Set4Param(0,0,0,0);this.SetRotationParamMM(0,0,0);//debug//this.TransCoord(X[0,0],X[1,0],X[2,0],out x2,out y2,out z2); int round=0;while(round++<20){F=GetF(X,Y);B=GetB(X);MatrixTool.AT(B,ref BT);MatrixTool.Multi(BT,B,ref BTB);MatrixTool.Inv(BTB);MatrixTool.Multi(BT,F,ref BTF);MatrixTool.Multi(BTB,BTF,ref dpp.values);if (dpp.isSmall())break;elseMatrixTool.Add(this.values,dpp.values,ref this.values);}//this.TransCoord(X[0,0],X[1,0],X[2,0],out x2,out y2,out z2); double[,] V=GetV(X,Y,dpp);double vMax=-1;for(int i=0;i<v.getlength(0);i++)< bdsfid="312" p=""></v.getlength(0);i++)<>{if (Math.Abs(V[i,0])>vMax)vMax=Math.Abs(V[i,0]);}return vMax;}private bool isSmall(){double s=0;for(int i=0;i<7;i++)s+=Math.Abs(values[i,0]);if (s<0.0000001)return true;elsereturn false;}public void TransCoord(double x1,double y1,double z1,out double x2,out double y2,out double z2){double[,] Xi={{x1},{y1},{z1}};double[,] DX={{dx},{dy},{dz}};double[,] tY=new double[3,1];double[,] K={{1+k}};double [,] M=GetM();MatrixTool.Multi(Xi,K,ref tY);MatrixTool.Multi(M,tY,ref tY);MatrixTool.Add(tY,DX,ref tY);x2=tY[0,0];y2=tY[1,0];z2=tY[2,0];}public double dx{get{return values[0,0];}set{values[0,0]=value; }}public double dy {get{return values[1,0]; }set{values[1,0]=value; }}{get{return values[2,0]; } set{values[2,0]=value; } }public double rx { get{return values[3,0]; } set{values[3,0]=value; } }public double ry {get{return values[4,0]; }set{values[4,0]=value; }}public double rz {get{return values[5,0]; }set{values[5,0]=value; }}{get{return values[6,0];}set{values[6,0]=value;}}}理论部分可以参考本站"高精度gps测点到54/80坐标系的转换问题"矩阵计算程序public class MatrixTool{public static double[,] Init(int m,int n){double[,] M=new double[m,n];for(int i=0;i<m;i++)< bdsfid="416" p=""></m;i++)<>for(int j=0;j<n;j++)< bdsfid="418" p=""></n;j++)<>M[i,j]=0;return M;}public static double[,] Ident(int rank){double[,] m=new double[rank,rank];for(int i=0;i<rank;i++)< bdsfid="426" p=""></rank;i++)<> for(int j=0;j<rank;j++)< bdsfid="428" p=""></rank;j++)<> {if (i==j)m[i,j]=1.0;elsem[i,j]=0;}return m;}public static void MutliConst(ref double[,] m1,double c){for(int i=0;i<m1.getlength(0);i++)< bdsfid="440" p=""></m1.getlength(0);i++)<>for(int j=0;j<m1.getlength(1);j++)< bdsfid="442" p=""></m1.getlength(1);j++)<>{m1[i,j]*=c;}}public static void Copy(double[,] m1,ref double[,] m2){for(int i=0;i<m1.getlength(0);i++)< bdsfid="450" p=""></m1.getlength(0);i++)<>for(int j=0;j<m1.getlength(1);j++)< bdsfid="452" p=""></m1.getlength(1);j++)<>{m2[i,j]=m1[i,j];}}public static void CopySub(double[,] m1,int rowStart,int colStart,int rowNum,int colNum,ref double[,] m2,int rowStart2,int colStart2){for(inti1=rowStart,i2=rowStart2;i1<rowstart+rownum;i1++,i2++)< bdsfid="460" p=""></rowstart+rownum;i1++,i2++)<> for(intj1=colStart,j2=colStart2;j1<colstart+colnum;j1++,j2++)< bdsfid="462" p=""></colstart+colnum;j1++,j2++)<> {m2[i2,j2]=m1[i1,j1];}}public static void Multi(double[,] m1,double [,] m2,ref double [,] mout){int m1x,m1y,m2x,m2y,moutx,mouty;if (m1.Rank!=2 || m2.Rank!=2||mout.Rank!=2)throw new Exception("Multi 输入错误!");m1x=m1.GetLength(0);m1y=m1.GetLength(1);m2x=m2.GetLength(0);m2y=m2.GetLength(1);moutx=mout.GetLength(0);mouty=mout.GetLength(1);if (m1y!=m2x||m1x!=moutx||m2y!=mouty)throw new Exception("Multi 输入错误!");double[,] mtemp=new double[moutx,mouty];for(int i=0;i<m1x;i++)< bdsfid="482" p=""></m1x;i++)<>for(int j=0;j<m2y;j++)< bdsfid="484" p=""></m2y;j++)<>{mtemp[i,j]=0;for (int k=0;k<m1y;k++)< bdsfid="488" p=""></m1y;k++)<> mtemp[i,j]+=m1[i,k]*m2[k,j];}Copy(mtemp,ref mout);}public static void Add(double[,] m1,double [,] m2,ref double [,] mout) {int m1x,m1y,m2x,m2y;if (m1.Rank!=2 || m2.Rank!=2||mout.Rank!=2)throw new Exception("Matrix.Add 输入错误!");m1x=m1.GetLength(0);m1y=m1.GetLength(1);m2x=m2.GetLength(0);m2y=m2.GetLength(1);if (m1x!=m2x||m1y!=m2y)throw new Exception("Matrix.Add 输入错误!");if (mout.GetLength(0)!=m1x||mout.GetLength(1)!=m2y)throw new Exception("Matrix.Add 输入错误!");//mout=new double[m1x,m2y];for(int i=0;i<m1x;i++)< bdsfid="507" p=""></m1x;i++)<> for(int j=0;j<m2y;j++)< bdsfid="509" p=""></m2y;j++)<> mout[i,j]=m1[i,j]+m2[i,j];}public static void Sub(double[,] m1,double [,] m2,ref double [,] mout) {int m1x,m1y,m2x,m2y;if (m1.Rank!=2 || m2.Rank!=2||mout.Rank!=2)throw new Exception("Matrix.Sub 输入错误!");m1x=m1.GetLength(0);m1y=m1.GetLength(1);m2x=m2.GetLength(0);m2y=m2.GetLength(1);if (m1x!=m2x||m1y!=m2y)throw new Exception("Matrix.Sub 输入错误!");if (mout.GetLength(0)!=m1x||mout.GetLength(1)!=m2y)throw new Exception("Matrix.Sub 输入错误!");//mout=new double[m1x,m2y];for(int i=0;i<m1x;i++)< bdsfid="526" p=""></m1x;i++)<> for(int j=0;j<m2y;j++)< bdsfid="528" p=""></m2y;j++)<> mout[i,j]=m1[i,j]-m2[i,j];}public static void AT(double[,] m1,ref double [,] mout){for(int i=0;i<m1.getlength(0);i++)< bdsfid="534"p=""></m1.getlength(0);i++)<>for(int j=0;j<m1.getlength(1);j++)< bdsfid="536" p=""></m1.getlength(1);j++)<>{mout[j,i]=m1[i,j];}}public static void ATBA(double[,] m1,double [,] m2,ref double [,] mout) {int M,N;M=m1.GetLength(0);N=m1.GetLength(1);if(mout.GetLength(0)!=mout.GetLength(1)||mout.GetLength(0)!= M) throw new Exception("ATBA 输入错误!");for(int i=0;i<n;i++)< bdsfid="547" p=""></n;i++)<>for(int j=0;j<n;j++)< bdsfid="549" p=""></n;j++)<>{mout[i,j]=0;for (int r=0;r<m;r++)< bdsfid="553" p=""></m;r++)<>for(int k=0;k<m;k++)< bdsfid="555" p=""></m;k++)<>mout[i,j]=mout[i,j]+m1[k,i]*m2[k,r]*m1[r,j];}}public static void ABAT(double[,] m1,double [,] m2,ref double [,] mout) {int M,N;M=m1.GetLength(0);N=m1.GetLength(1);if(mout.GetLength(0)!=mout.GetLength(1)||mout.GetLength(0)!= M) throw new Exception("ATBA 输入错误!");for(int i=0;i<m;i++)< bdsfid="565" p=""></m;i++)<>for(int j=0;j<m;j++)< bdsfid="567" p=""></m;j++)<>{mout[i,j]=0;for (int r=0;r<n;r++)< bdsfid="571" p=""></n;r++)<>for(int k=0;k<n;k++)< bdsfid="573" p=""></n;k++)<>mout[i,j]=mout[i,j]+m1[i,k]*m2[k,r]*m1[j,r];}}public static void Inv(double[,] c) {double temp=0;int i,j,k,N=c.GetLength(0);//debugfor(i=1;i<n;i++)< bdsfid="582" p=""></n;i++)<>for(j=0;j<i;j++)< bdsfid="584" p=""></i;j++)<>c[i,j]=0;for(i=0;i<n;i++)< bdsfid="587" p=""></n;i++)<>{for(j=i;j<n;j++)< bdsfid="590" p=""></n;j++)<>{temp=c[i,j];for(k=0;k<i;k++)< bdsfid="594" p=""></i;k++)<>temp=temp-c[k,i]*c[k,j]/c[k,k]; if (j==i)c[i,j]=1/temp;elsec[i,j]=temp*c[i,i];}}for(i=0;i<n-1;i++)< bdsfid="602" p=""></n-1;i++)<> {for(j=i+1;j<n;j++)< bdsfid="605" p=""></n;j++)<> {temp=-c[i,j];for(k=i+1;k<j;k++)< bdsfid="609" p=""></j;k++)<> {temp=temp-c[i,k]*c[k,j];}c[i,j]=temp;}}for(i=0;i<n-1;i++)< bdsfid="617" p=""></n-1;i++)<> {for(j=i;j<n;j++)< bdsfid="620" p=""></n;j++)<> {if(j==i)temp=c[i,j];elsetemp=c[i,j]*c[j,j];for(k=j+1;k<n;k++)< bdsfid="627" p=""></n;k++)<> temp=temp+c[i,k]*c[j,k]*c[k,k];c[i,j]=temp;}}for(i=1;i<n;i++)< bdsfid="633" p=""></n;i++)<>for(j=0;j<i;j++)< bdsfid="635" p=""></i;j++)<>c[i,j]=c[j,i];}public static void DEBUG_DUMP(double[,] m1){int M,N;string buf;M=m1.GetLength(0);N=m1.GetLength(1);Debug.WriteLine("****************debugmatrix****************"); for(int i=0;i<m;i++)< bdsfid="645" p=""></m;i++)<>{buf="";for(int j=0;j<n;j++)< bdsfid="649" p=""></n;j++)<>{buf+=m1[i,j].T oString("0.000000");buf+=",";}Debug.WriteLine(buf);}Debug.WriteLine("**************** end ****************");}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GARMIN GPS60所测WGS84坐标
转换至北京54坐标或西安80坐标的方法
一、坐标转换
坐标表示方法有:经纬度和高程、空间直角坐标、平面坐标和高程等三种。
WGS-84坐标为经纬度和高程,北京54坐标是平面坐标和高程。
在同一个椭球里的坐标转换是严密的,而在不同的椭球之间的转换是不严密的。
WGS-84坐标和北京54坐标之间是不存在一套转换参数可以全国通用的,在每个地方会不一样,因为它们是两个不同的椭球基准。
两个椭球间的坐标转换:一般而言比较严密的是用七参数法(包括布尔莎模型,一步法模型,海尔曼特等),即X平移,Y平移,Z平移,X旋转,Y旋转,Z旋转,尺度变化K。
要求得七参数就需要在一个地区需要3个以上的已知点,如果区域范围不大,最远点间的距离不大于30Km(经验值),这可以用三参数(莫洛登斯基模型),即X平移,Y平移,Z 平移,而将X旋转,Y旋转,Z旋转,尺度变化K视为0,所以三参数只是七参数的一种特例。
在一个椭球的不同坐标系中转换可能会用到平面转换,现阶段一般分为四参数和平面网格拟合两种方法,以四参数法在国内用的较多。
另外,还有高程拟合的问题,大地水准面模型在国内用户中很少会用到,但在国际上已经是标准之一,本软件提供最常用的EGM96模型和Geoid99模型。
二、转换步骤
1.采集WGS84坐标
收集测区控制点坐标或明显地物标志点若干,用GARMIN GPS60测定测区的这些点的WGS84坐标。
2.计算GARMIN GPS60校正参数
①打开COORD GM程序
②新建坐标转换文件
③根据所测测区的WGS84坐标设定地图投影参数,设定中央子午线
④根据测区大小选定三参数法或七参数,并计算得到椭球转换参数
⑤保存转换参数,下次使用时,打开文件调入既可
3.将椭球转换参数输入GARMIN GPS60
①MENU→设置→单位→位置格式
选“自定义格式”,根据测区的经纬度坐标设定中央子午线,如: E 117°00.000′,其他用默认值
②MENU→设置→坐标系统
选“User”,DX,DY,DZ分别输入2、④中计算所得的X、Y、Z平移参数;
DA,DF分别是两个坐标系椭球体半径和曲率的差值,
WGS84转为北京54为:-108m,+0.00000050
WGS84转为西安80为:-3m,0(待查)
设定完毕后GARMIN GPS60所示坐标将与所用底图坐标系统完全统一。