科学网

 找回密码
  注册

tag 标签: 坐标转换

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

MapInfo/Discover(该软件新名字DatamineDiscover)中建立CGCS 2000坐标系
czhou28 2019-9-4 22:01
2 、在 MapInfo/Discover( 或者该软件新版的名字 DatamineDiscover) 中建立 CGCS 2000 坐标系 MapInfo/Discover( 软件新版名字 DatamineDiscover) 有绝大多数坐标系,但是尚没有 CGCS 2000 (或者简称 CGCS 2k )坐标系。无法直接处理中国的 GIS 数据。而中国的 GIS 工作又需要以 CGCS 2k 坐标提交。这就需要在其中建立 CGCS 2k 坐标系。此处按照自定义坐标系的方式在其中建立 CGCS 2k 方里网坐标系。 因为 CGCS 2k 和 WGS 84 的数学椭球体( Ellipsoid )几乎完全一样,只有扁率略有微小差异,其在当前测量精度水平(经纬度坐标测量精度在毫米级别)下, WGS 84 和 CGCS 2000 坐标系的扁率差异引起同一点在两个坐标系内的坐标变换可以忽略的。(扁率差异只会对大地高和纬度有影响,经度不受影响)。 故此可以借用 WGS 84 来做 CGCS 2k 的 Ellipsoid 和 Datum ,只是修改投影方式即可。即 1 )把 WGS 的 UTM 投影(如 UTM WGS 84 的 6 度带变换为 CGCS 2k 的 6 度带或者 3 度带,即修改中央经线 CM ), 2 )把 CM 的比例因子由 UTM WGS 84 的 0.9996 调整为 TM ( Gauss-Kruger )投影的 1 。 即在 MapInfo/Discover 下的坐标文件 MAPINFOW.prj 中加入如下行: ---Zhangjiakou CGCS2000 (WGS 84) --- Zhangjiakou_CM114_WGS 84, 8 , 999 , 28 , 0 , 0 , 0 , 7 , 114 , 0 , 1 , 500000 ,0 引 号里的是注释。以下是MapInfo的约定代号。 8 代表横轴墨卡托投影(即TM,从大类上讲,Gauss-Kruger和UTM都属于TM,UTM就是通用横轴墨卡托意思); 999 表示自定义 datum ,其后的 28 代表 MapInfo ® 中 WGS84 数学椭球体, 0, 0, 0 分别为 D x , D y 和 D z ,这样代表采用 WGS 84 的 Datum 。 7 代表方里网单位为 m ; 114 代表起始经线(对横轴墨卡托投影而言即为中央经线)为 114°E ;(本次的经度在 115 °11’ 附近,按照 3 度带,其中央经线是 114 °E ) 0 代表起始纬线为赤道; 1 代表比例因子为 1 ; 500000 代表东伪偏移 500,000 m ; 0 代表北伪偏移 0m 。 这样在 MapInfo/Discover 中便有了 CGCS 2k 坐标系,即 Zhangjiakou 地区的 CGCS2k 方里网。 然后把坐标数据 以 excel 表格式导入 MapInfo/Discover ,即可使用 该软件大批量转换坐标。 注:上表中的数据显示小数位少,实际小数位要多,只是显示的问题。只有选中时才显示全部位数。 对本 区的 6 度或者其他的中国其他地区的数据只需修改中央经线 CM 即可。也可以把中国所有的 6 度带和 3 度带都建立类似方法建立起来。 一旦在 MapInfoDiscover中 建立起CGCS2k坐标系,就可以使用MapInfoDiscover对上述数据进行众多坐标系之间随意变换了。 此处展示的是在 CGCS 2k 从经纬度转为方里网。反之依然。见我的其他博文。 自定义坐标系的建立及其坐标变换实现 http://blog.sciencenet.cn/blog-856115-912556.html UTM投影和Gauss-Krüger投影及其变换实现 http://blog.sciencenet.cn/blog-856115-839212.html
个人分类: GIS|5971 次阅读|0 个评论
2000坐标系(CGCS 2k)与WGS 84坐标系的对比
czhou28 2019-9-4 21:56
1 、 2000 坐标系简介及其与 WGS 84 坐标系的对比 2000 国家大地坐标系的 Z 轴由原点指向历元 2000.0 的地球参考极的方向,该历元的指向由国际时间局给定的历元为 1984.0 的初始指向推算,定向的时间演化保证相对于地壳不产生残余的全球旋转, X 轴由原点指向格林尼治参考子午线与地球赤道面 ( 历元 2000.0) 的交点, Y 轴与 Z 轴、 X 轴构成右手正交坐标系。采用广义相对论意义下的尺度。 2000 国家大地坐标系采用的地球椭球参数的数值为: 2000 国家大地坐标系采用的地球椭球参数如下 : 长半轴 a=6378137m 扁率  f=1/298.25722 2101 地心引力常数  GM=3.986004418×1014m 3 s -2 自转角速度  ω=7.292l15×10 -5 rad s -1 短半轴 b=6356752.31414m 极曲率半径 =6399593.62586m 第一偏心率 e=0.0818191910428 WGS 84 的 采用的基本参 数 长半径: a=6378137±2 ( m ) ; 扁率 f=0.003352810664=1/298.25722 3565 地球引力和地球质量的乘积: GM=3986005×108m 3 s -2 ±0.6×108m 3 s -2 ; 正常化二阶带谐系数: C20=-484.16685×10 -6 ±1.3×10 -9 ; 地球重力场二阶带球谐系数: J2=108263×10 -8 地球自转角速度: ω=7292115×10 -11 rads -1 ±0.150×10 -11 rads -1 中国 CGCS2000坐标系( China Geodetic Coordinate System 2000 )和 WGS84坐标系EPSG: CGCS2k 坐标系的方里网投影方法是 TM ( Gauss-Kruger 投影),分 3 度带和 6 度带两种。(以下的转换方法(见随后的2篇博文)以 3 度带为例( 6 度带方法完全一致),就是中央经线 CM 有区别)。 CGCS 2k和WGS 84经纬度可以说完全一致(毫米级别差别),但是二者的方里网坐标差别就大了去了。因为 1)二者中央经线在6度带时一样,CGCS 2k有3度带坐标,UTM WGS84只有6度带方里网坐标。 2)二者投影方法不一样,CGCS 2k是Gauss-Kruger 投影 TM投影,UTM WGS 84顾名思义当然是UTM投影了。 从下图可见两种投影方法的差别,差别还是很大的 TMGauss-Kruger 投影 UTM投影 上2图具体参见 UTM投影和Gauss-Krüger投影及其变换实现 http://blog.sciencenet.cn/blog-856115-839212.html
个人分类: GIS|28840 次阅读|0 个评论
技术随笔(六)计算不同历元的坐标
qianlivan 2017-1-20 19:05
算不同历元的坐标转换(从J2000到当前历元)我以前用以下代码。 star = ephem.FixedBody() star._ra = ra0 star._dec = dec0 star._epoch = '2000' star.compute(epoch=ephem.now()) print ephem.degrees(star.ra)/convert,ephem.degrees(star.dec)/convert 一直没发现有问题。直到今天发现J2000转B1950会出问题。 用NED的坐标转换测试了一下,下面的代码似乎是对的。 new = ephem.Equatorial(ra0, dec0, epoch=ephem.J2000) old = ephem.Equatorial(new, epoch=ephem.now()) print old.ra/convert,old.dec/convert
个人分类: 知识|4552 次阅读|0 个评论
基于SOFA与C#混合编程技术的ITRS与GCRS之间的坐标转换
热度 1 zhangyong1361 2013-1-3 20:26
摘要:在卫星导航等领域经常遇到国际地球参考系(ITRS)与地心天球参考系(GCRS)之间的坐标转换问题,这两个坐标系间的转换需要经过岁差与章动的旋转计算,其中岁差与章动参数的计算模型高达上千项,程序编写十分繁琐,一般采用由国际天文协会IAU提供的标准基本天文程序库SOFA进行转换,但是该程序库只有Fortran语言版和C语言版,而没有现在流行的C#语言版。针对上述问题,本文研究并采用混合编程的方式,在C#版中跨语言调用SOFA中的C版代码,实现ITRS与GCRS的坐标转换。利用IGS站提供的ITRS下的GPS卫星精密星历进行ITRS与GCRS之间的坐标转换,表明程序计算的正确性与混合编程技术的可行性。 本文《基于SOFA与C#混合编程技术的ITRS与GCRS之间的坐标转换》已被《测绘与空间地理信息》期刊录用,待刊。有兴趣的同行可以去下面地址下载,有问题大家可以交流 E-mail:zhangyong1361@163.com 下载地址: http://doc.sciencenet.cn/DocInfo.aspx?id=16133
个人分类: GNSS|3893 次阅读|1 个评论
Captain Dialog 2009-06-04 OpenGL坐标系实验
moustudio 2009-6-3 23:09
OpenGL坐标系实验 CaptainDialog2009-06-04 最近接触到OpenGL三维绘图的程序了,其中感觉最让人头晕的就是OpenGL中的那些个坐标以及他们之间的关系。搜索半天资料也是看个一知半解。最后还是决定自己通过实验系统来确认一下这些坐标系的转换关系。 今天主要测试了从 世界坐标系 - 规格化设备坐标系 的实验。通常实验OpenGL的绘图方式有多种,在不经过规格化坐标系的坐标变换的情况下,可以修改投影的参数达到视点坐标系的缩放,同样是达到了坐标系转换的效果,But这种缩放在处理变化的灵活性方面欠妥。但是,教材中经常用到得实例都是基于规格化坐标系的,即坐标变化范围为 。因此决定对此进行一个实验,验证可以对实际的三维坐标点数据进行坐标系转换后绘图。 下面是实验的结果图 针对实际3D和4D的数据绘制,将在以后的学习中继续各种实验和总结。 部分源代码: //绘制测点数据集 void COpenGL3D::drawSurveyPointMap() { //测试测点数据输入 CSurveyPoint ps ; ps .x=50; ps .y=200; ps .z=80; ps .x=100; ps .y=100; ps .z=90; ps .x=70; ps .y=200; ps .z=190; //数据分析 GLfloat iMax_X,iMax_Y,iMax_Z; GLfloat iMin_X,iMin_Y,iMin_Z; iMax_X=iMax_Y=iMax_Z=-99999; iMin_X=iMin_Y=iMin_Z=99999; for(int i = 0; i 3; i++) { if(iMax_Xps .x) iMax_X=ps .x; if(iMax_Yps .y) iMax_Y=ps .y; if(iMax_Zps .z) iMax_Z=ps .z; if(iMin_Xps .x) iMin_X=ps .x; if(iMin_Yps .y) iMin_Y=ps .y; if(iMin_Zps .z) iMin_Z=ps .z; } //坐标转换测试 GLfloat fMin_DC,fMax_DC; fMin_DC=-1.0; fMax_DC=1.0; GLfloat sX,sY,sZ; sX = (fMax_DC - fMin_DC) / (iMax_X - iMin_X); sY = (fMax_DC - fMin_DC) / (iMax_Y - iMin_Y); sZ = (fMax_DC - fMin_DC) / (iMax_Z - iMin_Z); //数据归一化 glClear(GL_COLOR_BUFFER_BIT); gluLookAt(1.0,1.0,0.50,0.0,0.0,0.0,0.0,1,0.0); //glDepthRange(0,1); for(int j = 0; j 3; j++) { ps .x = (ps .x - iMin_X)*sX + fMin_DC; ps .y = (ps .y - iMin_Y)*sY + fMin_DC; ps .z = (ps .z - iMin_Z)*sZ + fMin_DC; ps-drawPoint(0.03,ps .x,ps .y,ps .z); } //绘制坐标轴 glBegin(GL_LINES); glColor3f(1.0,0,0); glVertex3f(-1.0,0,0); glVertex3f(1.0,0,0); glEnd(); glBegin(GL_LINES); glColor3f(0.0,1.0,0); glVertex3f(0,-1.0,0); glVertex3f(0,1.0,0); glEnd(); glBegin(GL_LINES); glColor3f(0,0,1.0); glVertex3f(0,0,-1.0); glVertex3f(0,0,1.0); glEnd(); glFlush(); }
个人分类: 编程笔记|5764 次阅读|1 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-16 11:07

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部