精华内容
下载资源
问答
  • 坐标系统

    2018-11-06 21:28:15
    opengl-坐标系统概述局部空间世界空间观察空间裁剪空间投影正射投影透视投影组合 研究坐标系,把握住以下三点:1、原点;2、坐标轴正方向;3、坐标单位 物体的 顶点 在最终转化为 屏幕坐标 之前还会被变换到多个坐标...

    研究坐标系,把握住以下三点:1、原点;2、坐标轴正方向;3、坐标单位

    物体的 顶点 在最终转化为 屏幕坐标 之前还会被变换到多个坐标系统(Coordinate System)。

    将物体的坐标变换到几个 过渡坐标系(Intermediate Coordinate System) 的优点在于,在这些特定的坐标系统中,一些操作或运算更加方便和容易

    • 局部空间(Local Space,或者称为物体空间(Object Space))
    • 世界空间(World Space)
    • 观察空间(View Space,或者称为视觉空间(Eye Space))
    • 裁剪空间(Clip Space)
    • 屏幕空间(Screen Space)

    概述

    将坐标从一个坐标系变换到另一个坐标系,需要用到几个变换矩阵

    最重要的几个分别是 模型(Model)观察(View)投影(Projection) 三个矩阵( MVP )

    在这里插入图片描述

    • 局部坐标是对象相对于局部原点的坐标,也是物体起始的坐标。
    • 下一步是将局部坐标变换为世界空间坐标,世界空间坐标是处于一个更大的空间范围的。这些坐标相对于世界的全局原点,它们会和其它物体一起相对于世界的原点进行摆放。
    • 接下来我们将世界坐标变换为观察空间坐标,使得每个坐标都是从摄像机或者说观察者的角度进行观察的。
    • 坐标到达观察空间之后,我们需要将其投影到裁剪坐标。裁剪坐标会被处理至-1.0到1.0的范围内,并判断哪些顶点将会出现在屏幕上。
    • 最后,我们将裁剪坐标变换为屏幕坐标,我们将使用一个叫做视口变换(Viewport Transform)的过程。视口变换将位于-1.0到1.0范围的坐标变换到由glViewport函数所定义的坐标范围内。最后变换出来的坐标将会送到光栅器,将其转化为片段。

    在这里插入图片描述

    注意,OpenGL只定义了裁剪坐标系、规范化设备坐标系和屏幕坐标系,而局部坐标系(模型坐标系)、世界坐标系和照相机坐标系都是为了方便用户设计而自定义的坐标系

    Alt

    局部空间

    局部空间是指物体所在的坐标空间,即对象最开始所在的地方

    模型的所有顶点都是在局部空间中:它们相对于你的物体来说都是局部的

    世界空间

    世界空间中的坐标正如其名:是指顶点相对于(游戏)世界的坐标.

    物体的坐标将会从局部变换到世界空间;该变换是由模型矩阵(Model Matrix)实现的.

    在OpenGL中,世界坐标系是以 屏幕中心 为原点(0, 0, 0),且是始终不变的。你面对屏幕,你的右边是x正轴,上面是y正轴,屏幕指向你的为z正轴

    右手坐标系

    Alt

    观察空间

    观察空间经常被人们称之 OpenGL的摄像机(Camera) (所以有时也称为 摄像机空间(Camera Space)视觉空间(Eye Space)

    观察空间是将世界空间坐标转化为用户视野前方的坐标而产生的结果。因此观察空间就是从摄像机的视角所观察到的空间

    通过OpenGL中相机,改变视角,例如要观察-z轴方向的一个立方体的右侧面,可以有两种方式:

    立方体不动,让相机绕着+y轴,旋转+90度,此时相机镜头朝向立方体的右侧面,实现目的。
    相机不动,让立方体绕着+y轴,旋转-90度,此时也能实现同样的目的。注意这时相机没有转动。
    

    OpenGL中采用方式2的观点来解释视变换

    裁剪空间

    在一个顶点着色器运行的最后,OpenGL期望所有的坐标都能落在一个特定的范围内,且任何在这个范围之外的点都应该被裁剪掉(Clipped)。被裁剪掉的坐标就会被忽略,所以剩下的坐标就将变为屏幕上可见的片段。这也就是 裁剪空间(Clip Space) 名字的由来。

    所有顶点都为 标准化设备坐标(Normalized Device Coordinate, NDC) 。也就是说,每个顶点的x,y,z坐标都应该在-1.0到1.0之间,超出这个坐标范围的顶点都将不可见

    为了将顶点坐标从观察空间变换到裁剪空间,我们需要定义一个 投影矩阵(Projection Matrix) ,它指定了一个范围的坐标,比如在每个维度上的-1000到1000。投影矩阵接着会将在这个指定的范围内的坐标变换为标准化设备坐标的范围(-1.0, 1.0)。所有在范围外的坐标不会被映射到在-1.0到1.0的范围之间,所以会被裁剪掉。在上面这个投影矩阵所指定的范围内,坐标(1250, 500, 750)将是不可见的,这是由于它的x坐标超出了范围,它被转化为一个大于1.0的标准化设备坐标,所以被裁剪掉了。

    投影

    Alt

    正射投影

    正射投影矩阵定义了一个类似立方体的 平截头箱,它定义了一个裁剪空间,在这空间之外的顶点都会被裁剪掉。创建一个正射投影矩阵需要指定可见平截头体的宽、高和长度。在使用正射投影矩阵变换至裁剪空间之后处于这个平截头体内的所有坐标将不会被裁剪掉。

    glm::ortho(0.0f, 800.0f, 0.0f, 600.0f, 0.1f, 100.0f);
    

    前两个参数指定了平截头体的 左右坐标,第三和第四参数指定了平截头体的 底部和顶部。通过这四个参数我们定义了近平面和远平面的大小,然后第五和第六个参数则定义了 近平面和远平面的距离

    透视投影

    透视 : 离你越远的东西看起来更小,越近越大

    透视投影矩阵 : 模拟透视的效果

    投影矩阵将给定的 平截头体范围映射到裁剪空间,除此之外还 修改 了每个顶点坐标的 w 值,从而使得离观察者越远的顶点坐标w分量越大.被变换到裁剪空间的坐标都会在-w到w的范围之间(任何大于这个范围的坐标都会被裁剪掉)

    OpenGL要求所有 可见的坐标 都落在 -1.0到1.0 范围内,作为顶点着色器最后的输出,因此,一旦坐标在裁剪空间内之后,透视除法就会被应用到裁剪空间坐标上

    Alt

    顶点坐标的每个分量都会除以它的w分量,距离观察者 越远顶点坐标就会越小。这是也是w分量非常重要的另一个原因,它能够帮助我们进行透视投影。最后的结果坐标就是处于标准化设备空间中的

    正射投影矩阵和透视投影矩阵是如何计算:

    http://www.songho.ca/opengl/gl_projectionmatrix.html

    https://blog.csdn.net/zhanghua1816/article/details/23121735

    glm::mat4 proj = glm::perspective(glm::radians(45.0f), (float)width/(float)height, 0.1f, 100.0f);
    

    第一个参数定义了fov的值,它表示的是 视野(Field of View) ,并且设置了观察空间的大小。如果想要一个真实的观察效果,它的值通常设置为45.0,第二个参数设置了宽高比,由 视口的宽除以高 所得。第三和第四个参数设置了平截头体的 近和远平面 。我们通常设置近距离为0.1f,而远距离设为100.0f。所有在近平面和远平面内且处于平截头体内的顶点都会被渲染

    屏幕宽高比 是一个必要的参数,因为我们要在一个宽高相等的单位化的盒子内展示所有的坐标系,而通常屏幕的宽度是大于屏幕的高度的,所以需要在水平方向上的轴线上布置更加密集的坐标点,竖直方向上相对稀疏。这样经过变换,我们就可以在保证看到更宽阔屏幕图像的需求下,根据X轴在单位盒子空间内的比例,在X方向上添加更多的X坐标

    组合

    Alt

    Z缓冲

    OpenGL存储深度信息在一个叫做Z缓冲(Z-buffer)的缓冲中,它允许OpenGL决定何时覆盖一个像素而何时不覆盖。通过使用Z缓冲,我们可以配置OpenGL来进行深度测试

    glEnable(GL_DEPTH_TEST);
    
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    

    练习

    • 对GLM的projection函数中的FoV和aspect-ratio参数进行实验。看能否搞懂它们是如何影响透视平截头体的。
    • 将观察矩阵在各个方向上进行位移,来看看场景是如何改变的。注意把观察矩阵当成摄像机对象。
    • 使用模型矩阵只让是3倍数的箱子旋转(以及第1个箱子),而让剩下的箱子保持静止
    展开全文
  • 百度地图坐标系统解析

    万次阅读 2019-06-22 14:55:52
    在地球上我们通过经纬度来描述某个位置,而经过投影之后的地图也有自己的坐标系统,本篇文章就来详细介绍在百度地图API中涉及的各种坐标体系。 在百度地图API中,你需要了解如下坐标系: 经纬度:通过经度...

    微信搜索:“二十同学” 公众号,欢迎关注一条不一样的成长之路       

    我们都知道地球是圆的,电脑显示器是平的,要想让位于球面的形状显示在平面的显示器上就必然需要一个转换过程,这个过程就叫做投影(Projection)。在地球上我们通过经纬度来描述某个位置,而经过投影之后的地图也有自己的坐标系统,本篇文章就来详细介绍在百度地图API中涉及的各种坐标体系。

    在百度地图API中,你需要了解如下坐标系:

    • 经纬度:通过经度(longitude)和纬度(latitude)描述的地球上的某个位置。
    • 平面坐标:投影之后的坐标(用x和y描述),用于在平面上标识某个位置。
    • 像素坐标:描述不同级别下地图上某点的位置。
    • 图块坐标:地图图块编号(用x和y描述)。
    • 可视区域坐标:地图可视区域的坐标系(用x和y描述)。
    • 覆盖物坐标:覆盖物相对于容器的坐标(用x和y描述)。

    别被这么多的坐标系吓着,看完了后面的讲解相信你会逐渐理解它们。

    经纬度

          这个就不多说了,不熟悉的可以翻翻地理书。但需要注意的是即便同是经纬度坐标也可能属于不同的坐标体系。一般GPS设备获取的经纬度属于WGS84坐标系,这是一个比较通用的坐标体系。由于某些原因国内不能直接使用WGS84坐标,因此百度地图API的经纬度是经过加密偏移的。

    平面坐标

          前面说过,球面上的形状需要经过投影才能变换为平面上的形状,变换后就需要有一个平面坐标系统来描述地图上某个位置。百度地图API默认使用墨卡托投影(Mercator Projection),同样需要注意的是由于投影参数不同,同样是墨卡托投影也会有所差别。

          平面坐标系的原点与经纬度的原点一致,即赤道与0度经线相交的位置:

    0f9f47ec256410b02e2e2112

           在百度地图API中,平面坐标是以最大级别18级为基准的。就是说在18级下,平面坐标的一个单位就代表了屏幕上的1个像素。平面坐标与地图所展示的级别没有关系,也就是说在1级和18级下,天安门位置的平面坐标都是一致的。那么如何知道某个位置的平面坐标呢?可通过BMap.MercatorProjection类来完成,该类提供经纬度与平面坐标互相转换的方法。例如天安门的经纬度大约为116.404, 39.915,经过转换即可得到平面坐标:

    var projection =new BMap.MercatorProjection();
    var point = projection.lngLatToPoint(new BMap.Point(116.404, 39.915));
    alert(point.x +", "+ point.y);

    结果如下:

    07c0c4197b9d101bdbb4bd1d

    这个就是平面坐标。你可以这样理解它的含义:第18级下,天安门距离坐标原点的位置差为:12958175, 4825923.77,单位为像素。

    像素坐标

    在第18级下,我们直接将平面坐标向下取整就得到了像素坐标,而在其他级别下可以通过如下公式进行换算(这里取整为向下取整):

    像素坐标 = |平面坐标 × 2 zoom -18|

    比如经过计算,在第4级天安门位置的像素坐标是:790, 294

    25c9ed092446bae3d0581bef

    不同级别下,同一个地理位置的像素坐标是不一样的,它与当前地图的级别相关。

    图块坐标

           百度地图API在展示地图时是将整个地图图片切割成若干图块来显示的,当地图初始化或是地图级别、中心点位置发生变化时,地图API会根据当前像素坐标计算出视野内需要的图块坐标(也叫图块编号),从而加载对应的图块用以显示地图。

    百度地图的图块坐标原点与平面坐标一致,从原点向右上方开始编号为0, 0:

    833962df022ded72485403eb

    如何知道某个位置的图块坐标呢?通过如下公式计算即可(这里为向下取整):

    图块坐标 =|像素坐标 ÷ 256|

          256实际上是每个图块的宽度和高度,我们用像素坐标除以这个数就知道图块坐标了。还以天安门为例,在第4级下天安门所在的图块编号为:3, 1,而在第18级下,图块编号为:50617, 18851

    可视区域坐标

          地图都是显示在确定大小的矩形框中的,这个矩形框通常是开发者在初始化地图传入的某个容器元素。这个矩形框也有自己的坐标系,在百度地图API中称之为可视区域坐标系,它的原点位于矩形的左上角。

    7eac4ccf8a67b95cf9dc61f7

    通过Map类的pointToPixel和pixelToPoint方法可以相互转换经纬度坐标与可视区域坐标。

    覆盖物坐标

           覆盖物在实现上就是若干DOM元素,这些元素会被放在若干覆盖物容器内(具体请参考地图API开发指南),那么覆盖物的坐标实际上就是相对于这些覆盖物容器的坐标。在地图初始化完成后,覆盖物容器的左上角与地图可视区域左上角位置相同,一旦地图被移动、缩放,覆盖物容器位置就会发生变化。在自定义覆盖物的时候API提供经纬度信息,而开发者需要自行将经纬度转换为覆盖物的像素坐标,从而覆盖物才能显示在正确的位置上。这个转换过程可以通过Map的pointToOverlayPixel和overlayPixelToPoint两个方法来实现。 

    展开全文
  • 【Qt】2D绘图之坐标系统

    万次阅读 2021-03-23 17:31:15
    Qt中每一个窗口都有一个坐标系统,默认的,窗口左上角为坐标原点,水平向右依次增大,水平向左依次减小,垂直向下依次增大,垂直向上依次减小。原点即为(0,0)点,以像素为单位增减。 02. 开发环境 Windows系统:...

    00. 目录

    01. 概述

    Qt中每一个窗口都有一个坐标系统,默认的,窗口左上角为坐标原点,水平向右依次增大,水平向左依次减小,垂直向下依次增大,垂直向上依次减小。原点即为(0,0)点,以像素为单位增减。

    02. 开发环境

    Windows系统:Windows10

    Qt版本:Qt5.15或者Qt6

    03. Qt坐标系统

    程序示例

    void Widget::paintEvent(QPaintEvent *)
    {
        QPainter painter(this);
    
        painter.setBrush(Qt::red);
        painter.drawRect(0, 0, 100, 100);
    
        painter.setBrush(Qt::yellow);
        painter.drawRect(-50, -50, 100, 100);
    }
    
    

    执行结果
    在这里插入图片描述

    04. 坐标系统变换

    默认的,QPainter在指定设备的坐标系统上进行绘制,在进行绘图时,可以使用QPainter::scale()函数缩放坐标系统;使用QPainter::rotate()函数顺时针旋转坐标系统;使用QPainter::translate()函数平移坐标系统;还可以使用QPainter::shear()围绕原点来扭曲坐标系统。如下图所示。
    在这里插入图片描述

    坐标系统的2D变换由QTransform类实现,我们可以使用前面提到的那些便捷函数进行坐标系统变换,当然也可以通过QTransform类实现。

    05. 平移变换

    程序示例

    //平移变换
    void Widget::paintEvent(QPaintEvent *)
    {
        QPainter painter(this);
    
        painter.setBrush(Qt::yellow);
        painter.drawRect(0, 0, 50, 50);
    
        //相当于将(100,100)设为原点
        painter.translate(100, 100);
        painter.setBrush(Qt::red);
        painter.drawRect(0, 0, 50, 50);
    
        //相当于在原来原点的基础之上减去(100, 100)当做新的原点
        painter.translate(-100, -100);
        painter.drawLine(0, 0, 20, 20);
    }
    

    执行结果
    在这里插入图片描述

    这里先在原点(0, 0)绘制了一个宽、高均为50的正方形,然后使用translate()函数将坐标系统进行了平移,使(100, 100)点成为了新原点,所以我们再次进行绘制的时候,虽然drawRect()中的逻辑坐标还是(0, 0)点,但实际显示出来的却是在(100, 100)点的红色正方形。可以再次使用translate()函数进行反向平移,使原点重新回到窗口左上角。

    06. 缩放变换

    程序示例

    //缩放变换
    void Widget::paintEvent(QPaintEvent *)
    {
        QPainter painter(this);
    
        painter.setBrush(Qt::yellow);
        painter.drawRect(0, 0, 100, 100);
    
        //放大两倍
        painter.scale(2, 2);
        painter.setBrush(Qt::red);
        painter.drawRect(50, 50, 50, 50);
    
    }
    

    执行结果
    在这里插入图片描述

    可以看到,当我们使用scale()函数将坐标系统的横、纵坐标都放大两倍以后,逻辑上的(50, 50)点变成了窗口上的(100, 100)点,而逻辑上的长度50,绘制到窗口上的长度却是100。

    07. 扭曲变换

    程序示例

    //扭曲变换
    void Widget::paintEvent(QPaintEvent *)
    {
        QPainter painter(this);
        painter.setBrush(Qt::yellow);
        painter.drawRect(0, 0, 50, 50);
    
        //纵向扭曲变换
        painter.shear(0, 1);
        painter.setBrush(Qt::blue);
        painter.drawRect(50, 0, 50, 50);
    }
    
    

    执行结果
    在这里插入图片描述

    shear()有两个参数,第一个是对横向进行扭曲,第二个是对纵向进行扭曲,而取值就是扭曲的程度。比如程序中对纵向扭曲值为1,那么就是红色正方形左边的边下移一个单位,右边的边下移两个单位,值为1就表明右边的边比左边的边多下移一个单位。大家可以更改取值,测试效果。

    08. 旋转变换

    程序示例

    //旋转变换
    void Widget::paintEvent(QPaintEvent *)
    {
        QPainter painter(this);
        painter.drawLine(0, 0, 100, 0);
    
        //以原点为中心 顺时针旋转30°
        painter.rotate(30);
    
        painter.drawLine(0, 0, 100, 0);
    
        painter.translate(100, 100);
        painter.rotate(30);
        painter.drawLine(0, 0, 100, 0);
    }
    
    

    执行结果
    在这里插入图片描述

    程序示例二:

    //旋转变换
    void Widget::paintEvent(QPaintEvent *)
    {
        QPainter painter(this);
        painter.drawLine(0, 0, 100, 0);
    
        //以原点为中心 顺时针旋转30°
        painter.rotate(30);
        painter.drawLine(0, 0, 100, 0);
    
        //反向旋转
        painter.rotate(-30);
        painter.translate(100, 100);
        painter.drawLine(0, 0, 100, 0);
    
        painter.rotate(30);
        painter.drawLine(0, 0, 100, 0);
    }
    

    执行结果:
    在这里插入图片描述

    这次我们在移动原点以前先将坐标系统反向旋转,可以看到,第二次旋转也是从水平方向开始的。

    其实,前面讲到的这几个变换函数都是如此,他们改变了坐标系统以后,如果不进行逆向操作,坐标系统是无法自动复原

    09. 附录

    源码下载:【Qt】2D绘图之坐标系统.rar

    展开全文
  • 常用地理坐标系统和投影坐标系统

    千次阅读 2018-05-27 16:48:52
    坐标系统 一、WGS84坐标系统 WGS84:全称为World Geodetic System 1984,是为GPS全球定位系统使用而建立的坐标系统。通常是指我们用手持GPS所读出来的经纬度。 二、北京54坐标系统 BJZ54:全称为北京54坐标系。...
                               坐标系统


       一、WGS84坐标系统


        WGS84:全称为World Geodetic System 1984,是为GPS全球定位系统使用而建立的坐标系统。通常是指我们用手持GPS所读出来的经纬度。
       二、北京54坐标系统
        BJZ54:全称为北京54坐标系。北京54坐标系为参心大地坐标系,它是以克拉索夫斯基椭球为基础,经局部平差后产生的坐标系。
        北京54坐标系的特征:
        a.属参心大地坐标系;
        b.采用克拉索夫斯基椭球的两个几何参数;
        c.  大地原点在原苏联的普尔科沃;
        d.采用多点定位法进行椭球定位;
        e.高程基准为 1954年青岛验潮站求出的黄海平均海水面;
        f. 高程异常以原苏联 1955年大地水准面重新平差结果为起算数据
        椭球坐标参数:
        长半轴a=6378245m;
        短半轴=6356863.0188m;
        扁率α=1/298.3。
        随着测绘新理论、新技术的不断发展,人们发现该坐标系存在如下缺点:
        1、 椭球参数有较大误差。克拉索夫斯基椭球差数与现代精确的椭球参数相比,长半轴约大109m。
        2、 参考椭球面与我国大地水准面存在着自西向东明显的系统性的倾斜,在东部地区大地水准面差距最大达+60m。这使得大比例尺地图反映地面的精度受到影响,同时也对观测量元素的归算提出了严格的要求。
        3、 几何大地测量和物理大地测量应用的参考面不统一。我国在处理重力数据时采用赫尔默特1900~1909年正常重力公式,与这个公式相应的赫尔默特扁球不是旋转椭球,它与克拉索夫斯基椭球是不一致的,这给实际工作带来了麻烦。
        4、 定向不明确。椭球短半轴的指向既不是国际普遍采用的国际协议(原点)CIO(Conventional International Origin),也不是我国地极原点JYD1968.0;起始大地子午面也不是国际时间局BIH(Bureau International de I Heure)所定义的格林尼治平均天文台子午面,从而给坐标换算带来一些不便和误差。
          为此,我国在1978年在西安召开了“全国天文大地网整体平差会议”,提出了建立属于我国自己的大地坐标系,即后来的1980西安坐标系。但时至今日,北京54坐标系仍然是在我国使用较为广泛的坐标系
        三、西安80坐标系统
        1978年4月在西安召开全国天文大地网平差会议,确定重新定位,建立我国新的坐标系。为此有了1980年国家大地坐标系。1980年国家大地坐标系采用地球椭球基本参数为1975年国际大地测量与地球物理联合会第十六届大会推荐的数据。该坐标系的大地原点设在我国中部的陕西省泾阳县永乐镇,位于西安市西北方向约60公里,故称1980年西安坐标系,又简称西安大地原点。基准面采用青岛大港验潮站1952-1979年确定的黄海平均海水面(即1985国家高程基准)
    西安80是为了进行全国天文大地网整体平差而建立的。根据椭球定位的基本原理,在建立西安80坐标系时有以下先决条件
        (1)大地原点在我国中部,具体地点是陕西省泾阳县永乐镇;
        (2)西安80坐标系是参心坐标系,椭球短轴Z轴平行于地球质心指向地极原点方向,大地起始子午面平行于格林尼治平均天文台子午面;X轴在大地起始子午面内与 Z轴垂直指向经度 0方向;Y轴与 Z、X轴成右手坐标系;
        (3)椭球参数采用IUG 1975年大会推荐的参数,因而可得西安80椭球两个最常用的几何参数为:
        长半轴a=6378140±5(m)
        短半轴b=6356755.2882(m)
        扁 率α=1/298.257
        第一偏心率平方 =0.00669438499959 第二偏心率平方=0.00673950181947
    椭球定位时按我国范围内高程异常值平方和最小为原则求解参数。
        (4)多点定位;
        (5)基准面采用青岛大港验潮站1952-1979年确定的黄海平均海水面(即1985国家高程基准)。
        四、2000坐标系统
        2000国家大地坐标系,是我国当前最新的国家大地坐标系,英文名称为China Geodetic Coordinate System 2000,英文缩写为CGCS2000。
        2000国家大地坐标系是全球地心坐标系在我国的具体体现,其原点为包括海洋和大气的整个地球的质量中心。Z轴指向BIH1984.0定义的协议极地方向(BIH国际时间局),X轴指向BIH1984.0定义的零子午面与协议赤道的交点,Y轴按右手坐标系确定。2000国家大地坐标系采用的地球椭球参数如下:
        长半轴 a=6378137m
        扁率 f=1/298.257222101
        地心引力常数 GM=3.986004418×1014m3s-2
        自转角速度ω=7.292l15×10-5rad s-1
        现行的大地坐标系由于其成果受技术条件制约,精度偏低、无法满足新技术的要求。空间技术的发展成熟与广泛应用迫切要求国家提供高精度、地心、动态、实用、统一的大地坐标系作为各项社会经济活动的基础性保障。从技术和应用方面来看,现行坐标系具有一定的局限性,已不适应发展的需要。主要表现在以下几点
        1.二维坐标系统。1980西安坐标系是经典大地测量成果的归算及其应用,它的表现形式为平面的二维坐标。用现行坐标系只能提供点位平面坐标,而且表示两点之间的距离精确度也比用现代手段测得的低10倍左右。高精度、三维与低精度、二维之间的矛盾是无法协调的。比如将卫星导航技术获得的高精度的点的三维坐标表示在现有地图上,不仅会造成点位信息的损失(三维空间信息只表示为二维平面位置),同时也将造成精度上的损失。
        2.参考椭球参数。随着科学技术的发展,国际上对参考椭球的参数已进行了多次更新和改善。1980西安坐标系所采用的IAG1975椭球,其长半轴要比国际公认的WGS84椭球长半轴的值大3米左右,而这可能引起地表长度误差达10倍左右。
        3.随着经济建设的发展和科技的进步,维持非地心坐标系下的实际点位坐标不变的难度加大,维持非地心坐标系的技术也逐步被新技术所取代。
        4.椭球短半轴指向。1980西安坐标系采用指向JYD1968.0极原点,与国际上通用的地面坐标系如ITRS,或与GPS定位中采用的WGS84等椭球短轴的指向(BIH1984.0)不同。
    天文大地控制网是现行坐标系的具体实现,也是国家大地基准服务于用户最根本最实际的途径。面对空间技术、信息技术及其应用技术的迅猛发展和广泛普及,在创建数字地球、数字中国的过程中,需要一个以全球参考基准框架为背景的、全国统一的、协调一致的坐标系统来处理国家、区域、海洋与全球化的资源、环境、社会和信息等问题。单纯采用参心、二维、低精度、静态的大地坐标系统和相应的基础设施作为我国现行应用的测绘基准,必然会带来愈来愈多不协调问题,产生众多矛盾,制约高新技术的应用。
    若仍采用现行的二维、非地心的坐标系,不仅制约了地理空间信息的精确表达和各种先进的空间技术的广泛应用,无法全面满足当今气象、地震、水利、交通等部门对高精度测绘地理信息服务的要求,而且也不利于与国际上民航与海图的有效衔接,因此采用地心坐标系已势在必行。
        2000坐标系的意义
       1.采用2000国家大地坐标系具有科学意义,随着经济发展和社会的进步,我国航天、海洋、地震、气象、水利、建设、规划、地质调查、国土资源管理等领域的科学研究需要一个以全球参考基准为背景的、全国统一的、协调一致的坐标系统,来处理国家、区域、海洋与全球化的资源、环境、社会和信息等问题,需要采用定义更加科学、原点位于地球质量中心的三维国家大地坐标系。
        2.采用2000国家大地坐标系可对国民经济建设、社会发展产生巨大的社会效益。采用2000国家大地坐标系,有利于应用于防灾减灾、公共应急与预警系统的建设和维护。
        3.采用2000国家大地坐标系将进一步促进遥感技术在我国的广泛应用,发挥其在资源和生态环境动态监测方面的作用。比如汶川大地震发生后,以国内外遥感卫星等科学手段为抗震救灾分析及救援提供了大量的基础信息,显示出科技抗震救灾的威力,而这些遥感卫星资料都是基于地心坐标系。
        4.采用2000国家大地坐标系也是保障交通运输、航海等安全的需要。车载、船载实时定位获取的精确的三维坐标,能够准确地反映其精确地理位置,配以导航地图,可以实时确定位置、选择最佳路径、避让障碍,保障交通安全。随着我国航空运营能力的不断提高和港口吞吐量的迅速增加,采用2000国家大地坐标系可保障航空和航海的安全。
        5.卫星导航技术与通信、遥感和电子消费产品不断融合,将会创造出更多新产品和新服务,市场前景更为看好。现已有相当一批企业介入到相关制造及运营服务业,并可望在形成较大规模的新兴高技术产业。卫星导航系统与GIS的结合使得计算机信息为基础的智能导航技术,如车载GPS导航系统和移动目标定位系统应运而生。移动手持设备如移动电话和PDA已经有了非常广泛的使用。


    投影系统


        UTM投影
        UTM投影全称为"通用横轴墨卡托投影"UNIVERSAL TRANSVERSE MERCATOR PROJECTION ,是一种"等角横轴割圆柱投影",椭圆柱割地球于南纬80度、北纬84度两条等高圈,投影后两条相割的经线上没有变形,而中央经线上长度比0.9996。UTM投影是为了全球战争需要创建的,美国于1948年完成这种通用投影系统的计算。与高斯-克吕格投影相似,该投影角度没有变形,中央经线为直线,且为投影的对称轴,中央经线的比例因子取0.9996是为了保证离中央经线左右约180km处有两条不失真的标准经线。
        UTM投影分带方法与高斯-克吕格投影相似,将北纬84度至南纬80度之间按经度分为60个带,每带6度.从西经180度起算,两条标准经线距中央经线为180KM左右,中央经线比例系数为0.9996.

        高斯—克吕格投影
        我国大中比例尺地图均采用高斯-克吕格投影,其通常是按6度和3度分带投影,1:2.5万-1:50万比例尺地形图采用经差6度分带,1:1万比例尺的地形图采用经差3度分带。具体分带法是:6度分带从本初子午线开始,按经差6度为一个投影带自西向东划分,全球共分60个投影带,带号分别为1-60;3度投影带是从东经1度30秒经线开始,按经差3度为一个投影带自西向东划分,全球共分120个投影带。为了便于地形图的测量作业,在高斯-克吕格投影带内布置了平面直角坐标系统,具体方法是,规定中央经线为X轴,赤道为Y轴,中央经线与赤道交点为坐标原点,x值在北半球为正,南半球为负,y值在中央经线以东为正,中央经线以西为负。由于我国疆域均在北半球,x值均为正值,为了避免y值出现负值,规定各投影带的坐标纵轴均西移500km,中央经线上原横坐标值由0变为500km。为了方便带间点位的区分,可以在每个点位横坐标y值的百千米位数前加上所在带号,如20带内A点的坐标可以表示为YA=20 745 921.8m。
            高斯-克吕格(Gauss-Kruger)投影与UTM投影(Universal Transverse Mercator,通用横轴墨卡托投影)都是横轴墨卡托投影的变种,目前一些国外的软件或国外进口仪器的配套软件往往不支持高斯-克吕格投影,但支持UTM投影,因此常有把UTM投影当作高斯-克吕格投影的现象。从投影几何方式看,高斯-克吕格投影是 “等角横切圆柱投影”,投影后中央经线保持长度不变,即比例系数为1;UTM投影是“等角横轴割圆柱投影”,圆柱割地球于南纬80度、北纬84度两条等高圈,投影后两条割线上没有变形,中央经线上长度比0.9996。从计算结果看,两者主要差别在比例因子上,高斯-克吕格投影中央经线上的比例系数为1, UTM投影为0.9996,高斯-克吕格投影与UTM投影可近似采用 X[UTM]=0.9996 * X[高斯],Y[UTM]=0.9996 * Y[高斯],进行坐标转换(注意:如坐标纵轴西移了500000米,转换时必须将Y值减去500000乘上比例因子后再加500000)。从分带方式看,两者的分带起点不同,高斯-克吕格投影自0度子午线起每隔经差6度自西向东分带,第1带的中央经度为3°;UTM投影自西经180°起每隔经差6度自西向东分带,第1带的中央经度为-177°,因此高斯-克吕格投影的第1带是UTM的第31带。此外,两投影的东伪偏移都是500公里,高斯-克吕格投影北伪偏移为零,UTM北半球投影北伪偏移为零,南半球则为10000公里。
    高斯-克吕格投影与UTM投影坐标系
        高斯- 克吕格投影与UTM投影是按分带方法各自进行投影,故各带坐标成独立系统。以中央经线(L0)投影为纵轴X,赤道投影为横轴Y,两轴交点即为各带的坐标原点。为了避免横坐标出现负值,高斯- 克吕格投影与UTM北半球投影中规定将坐标纵轴西移500公里当作起始轴,而UTM南半球投影除了将纵轴西移500公里外,横轴南移10000公里。由于高斯-克吕格投影与UTM投影每一个投影带的坐标都是对本带坐标原点的相对值,所以各带的坐标完全相同,为了区别某一坐标系统属于哪一带,通常在横轴坐标前加上带号,如(4231898m,21655933m),其中21即为带号。


                                 心得体会

        通过这些资料的整理,我将自己的心得总结如下,希望后面和我有相同困惑的人能有一点体会:
        1、我们反映在地图上的网格,无论是经纬度还是公里网(直角坐标),均是投影坐标系,因为在我理解,真正的坐标系统是三维的,而我们反映在平面上的是二维的坐标。
        2、WGS84、北京54,、西安80、2000坐标系统,属于不同的椭球系统,其反映出来的经纬度坐标并不是相同的,可能WGS84和2000坐标系统在经纬度方面有一致性,因为其都属于地心坐标系,椭球参数是及其相似的,这也是为什么我国要向2000坐标系发展的原因,为了与国际坐标系统相统一。
        3、我们通常所说的54坐标,80坐标是直角坐标,其实是一种投影坐标,对于54坐标,应该是既有经纬度,又有直角坐标,同样,80坐标也是一样的。
        4、现阶段,我们对于WGS84坐标转化为北京54坐标的参数(七参数)是公开的,我们的野外记录本后面就有这样的参数,但是对于80坐标的转化,现阶段参数还没有公开,需要我们自己去收集,不过现阶段5万的地形图大多数还是54坐标。
        5、手持GPS中读出的经纬度坐标为WGS84的经纬度坐标,并不是54或者80的经纬度坐标,另外根据GPS中设置参数的不同,其读出的坐标可能是54的,也可能是80的,具体要根据设定的参数来判断,现阶段,如果是根据野外记录本后面的参数设定的,均为北京54坐标,而且是6°带的(云南省)。


     


        以上是本人的一点陋识,也是为了在以后的学习工作中能够有所提高,如果所说的有什么错误,希望批评指正。谢谢。
    展开全文
  • 公路坐标系统

    2012-04-20 16:46:28
    公路测量 坐标系统 公路坐标系统 公路坐标系统 公路坐标系统
  • SVG坐标系统

    2019-06-24 22:58:41
    文章目录世界坐标系统最初坐标系统用户坐标系统转换坐标系统SVG transfromSVG transfrom与CSS transform相似之处不同之处SVG transform translate位移语法参数说明特别说明 世界坐标系统 即左上角为坐标原点,从...
  • 坐标系统模型

    2020-05-04 12:18:20
    坐标系统-->声呐,激光等距离方向传感器多采用极坐标系统 笛卡尔坐标系统--->移动机器人位姿[x=(x,y,theater)T],环境特征位置mi = (xi,yi)和传感器位置xi= (xi,yi), ...
  • ArcGIS中坐标系统详解.doc ArcGIS中坐标系统详解.doc ArcGIS中坐标系统详解.doc ArcGIS中坐标系统详解.doc ArcGIS中坐标系统详解.doc ArcGIS中坐标系统详解.doc
  • Shader 坐标系统

    2018-09-06 15:24:40
    一、OpenGL 坐标系统 转换公式: 二、纹理坐标系统
  • Qt 坐标系统

    2020-01-02 19:36:25
    坐标系统 以屏幕的左上角为原点即(0, 0)点,从左向右为x轴正向,从上向下为y轴正向,这整个屏幕的坐标系统就用来定位顶层窗口; 此外,窗口内部也有自己的坐标系统,它依然以左上角作为原点,从左向右为x轴正向,...
  • Gis坐标系统

    2020-02-29 13:58:25
    GIS系统的基本数据是空间数据,同时在软件开发和数据处理中也常用到坐标系,我在这儿对坐标系统做了汇总整理,并加上自己的一些理解和经验
  • 投影坐标系统是基于地图投影而建立的。投影坐标系统和地图投影可以交替使用。【地理信息系统导论;陈健飞】 概念 地图投影是把地球表面的任意点,利用一定数学法则,转换到地图平面上的理论和方法。 由于地球是一...
  • Qt坐标系统

    千次阅读 2018-07-11 16:20:01
    Qt的坐标系统是由QPainter类控制的,而QPainter是在绘图设备上进行绘制的。一个绘图设备的默认坐标系统中,原点(0,0)在其左上角,x坐标向右增长,y坐标向下增长。 QPainter的逻辑坐标与绘图设备的物理坐标之间的...
  • ROS坐标系统

    2016-09-03 11:25:59
    ROS坐标系统
  • android 坐标系统

    2017-08-17 09:26:30
    Android坐标系统 1. android应用坐标系,坐标系原点在屏幕左上角; 2. android opengl坐标系,坐标系原点在屏幕中心;
  • 坐标系统与坐标变换 坐标系统与坐标变换 坐标系统与坐标变换 坐标系统与坐标变换
  • 三、经纬坐标如何将地球经纬度坐标系统转换成平面2D坐标的? 经纬度坐标转bai平面二维du坐标,是通过坐标投影zhi,将经dao纬度的曲面坐zhuan标值,投影变换为平面shu格网坐标。 大地坐标(即经纬度)通过投影的方式...
  • Apollo坐标系统定义

    千次阅读 2019-07-15 16:33:24
    Apollo坐标系统 我们欢迎每一位开发者加入Apollo开发平台。Apollo系统涉及到了多种坐标系。在本文档中,我们将讨论在Apollo系统中使用的各个坐标系的定义。 1. 全球地理坐标系统 在Apollo系统中,我们采用全球...
  • osg坐标系统

    千次阅读 2016-10-23 15:48:27
    在osg中实际上也是一样的,只不过漫游器在设置视点时把视点设置在了y轴负方向并朝向y轴正向,导致这二者看起来坐标系统不一致。 感觉像是OpenGL坐标系统沿着x轴逆时针翻转90度。并且osg提供的模型数据的顶点坐标也都...
  • Qt中的坐标系统

    2020-02-19 10:07:39
    文章目录1 Qt中的坐标系统1.1 坐标系统的概念1.2 Qt中的坐标系统 1 Qt中的坐标系统 1.1 坐标系统的概念 GUI操作系统都有特定的坐标系统,图形界面程序在坐标系统中进行窗口和部件的定位。 定位类型: 顶级窗口部件...
  • 笛卡尔坐标系统

    2018-04-21 01:09:40
    笛卡尔坐标系统1. 1D数学数字体系和计数概念:自然数,整数,有理数,实数。其实在实际编程中short,int,float,double数据类型都是离散的,选择度量单位的关键是选择离散的精度。如何选择精度,参考计算机图形学第...
  • QT之坐标系统

    2018-03-18 18:22:19
    GUI操作系统都有其特定的坐标系统;我们本节要在坐标系统中进行窗口和部件的定位,定位类型分为3种: 1、顶级窗口部件的定位 2、窗口内部件的定位 3、窗口部件的大小设置 Qt 使用同一的坐标系统定位窗口部件的位置...
  • 自适应坐标系统

    2015-10-27 10:14:31
    在动态曲线的绘制过程中,经常会遇动态曲线的数量级变化较大的情况,这是如果坐标系统是一个固定的范围,就会使曲线的对比度过小,或者超出坐标系统的范围的情况,自适应坐标系统可以根据曲线的数值范围,确定一个...
  • 百度地图拾取坐标系统

    千次阅读 2019-10-30 16:17:58
    百度地图拾取坐标系统
  • 球面uvn坐标系统

    2019-11-04 22:45:16
    刚在在那个那个tank程序里利用书上的球面uvn坐标系统弄了一下 我觉得球面uvn系统好在什么地方呢, 即假设xz为地平面情况下 用每次都从世界坐标系Z轴为基准开始变 n向量先绕世界坐标系X轴转再绕世界坐标系Y轴转。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,309
精华内容 6,923
关键字:

坐标系统