ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

理解大地坐标系:从椭球基准到坐标转换的底层逻辑

理解大地坐标系:从椭球基准到坐标转换的底层逻辑 搞测绘和GIS的朋友一定遇到过这种场景甲方发来一个坐标文件里面只有经纬度问是什么坐标系对方答“就是经纬度啊WGS84的吧”。等你导入软件一看点位跟影像差了老远仔细一查才发现那是80西安坐标系的经纬度表示硬当WGS84用当然要出问题。我常说一句话坐标背后不是一串数而是一整套约定。大地坐标系就是这个“约定”的底层地基。这篇先不发公式、不上代码咱们把大地坐标系的来龙去脉彻底捋一遍理清楚“为什么同一个点会有这么多坐标”“经纬度到底是怎么定义的”“不同坐标系之间差在哪”。这些概念搞不懂后面学转换、学投影、学七参数四参数全都是在空中盖楼。这套内容我计划分几篇写这是第一篇主要讲原理和概念。第二篇再讲坐标转换的具体算法和实操流程。这篇适合测绘专业的学生、刚入行的GIS开发以及在工地现场天天摸RTK但没系统学过坐标系原理的兄弟们看完你对“坐标”这两个字的理解会上一个台阶。1. 为什么需要一套“坐标系”先搞懂定位这件事1.1 没有参照系就没有坐标我们在学校里学过确定一个点的位置需要三个量经度、纬度、高程。但问题来了纬度是怎么测出来的经度从哪里起算高程的“高”是相对于哪个面的高这些问题不回答清楚坐标就是无源之水。打个比方你跟朋友约见面地点说“在人民广场东侧100米”这句话成立的前提是你们俩对“人民广场”的地理位置有共识。如果一个人理解的人民广场是A处另一个人理解的是B处那这100米就是两码事。坐标系干的事情就是在全球或某个区域内约定一个统一的、可复现的“起点”和“方向”让每个点都有一个唯一的身份标识。具体到大地坐标系这个约定包括两件事用什么样的椭球去逼近地球以及椭球如何在地球内部放置。前者决定了你坐标计算的数学基础后者决定了坐标值跟物理地面之间的关系。1.2 地球不是球是一个“扁”的椭球地球的真实形状非常不规整有高山有海沟整体上是个赤道略鼓、两极略扁的旋转椭球体。赤道半径大概是6378公里极半径大概是6357公里差了大约21公里。可别小看这21公里如果全当成正球体去算高纬度地区的经线长度就会算错定位误差能到十几公里。所以测绘行业用了一个数学化的逼近模型旋转椭球。一个椭圆绕短轴旋转一周就得到一个旋转椭球。描述它只需要两个参数长半轴a和短半轴b或者用长半轴a和扁率f其中f (a - b) / a。目前全球主流椭球的扁率都在1/298.25左右相当接近一个正圆但这点“扁”对高精度测量来说意义重大。这里要注意椭球是“人为选择的数学曲面”不是地球本身。你选择不同尺寸的椭球同一个地面点在数学面上的投影位置就不一样。这就为后面坐标系的差异埋下了伏笔。1.3 椭球、基准面和坐标系别混成一锅粥我见过太多人把椭球和坐标系划等号这是个大坑。椭球只是提供了一个“模具”但模具放到哪里、如何旋转、如何缩放才是关键这部分叫基准面Datum。举个例子克拉索夫斯基椭球和WGS-84椭球参数接近但并不同可就算你用同一个椭球只要原点位置定得不一样同一地面点反算出的经纬度照样不同这就是“基准”在起作用。完整的坐标系定义大致包含三样东西参考椭球提供长短半轴和扁率等几何参数定位与定向决定椭球中心在地球内部的坐标以及坐标轴的方向参考框架通过一系列地面控制点的坐标来具体实现让理论定义落到实处。日常工作中说“北京54坐标系”指的是“基于克拉索夫斯基椭球采用特定定向和原点的一套基准及其框架”说“CGCS2000”则是指向地心、与全球卫星定位系统兼容的新一代基准。同一个点在不同坐标系下经纬度数值不同不是谁算错了而是基准不同。2. 经纬度到底在说什么三个数字背后的底层逻辑2.1 经度以本初子午线为起点的二面角经度这个概念大家不陌生但它的严格定义是这样的过地面上某点的子午面也就是包含该点铅垂线方向与地轴的平面与起始子午面之间的二面角单位为度。国际上统一用经过英国格林尼治天文台旧址的子午线作为0°经线向东量0°到180°叫东经向西量0°到180°叫西经。实操中有个细节经常惹麻烦经度是一个“角度量”但它可以表示成十进制度数比如120.1234°也可以表示成度分秒比如120°07′24.24″。同一个数值单位写法不同差出去一个点可能就在图上偏开几十米到几百米。很多GIS新手在Excel里直接把“度分秒”格式当作“十进制度”去计算结果点位错得离谱。我建议所有外业数据在入库之前统一把坐标格式写清楚甚至直接处理成十进制度能省掉后面大量的沟通成本。2.2 纬度为什么不是简单的“夹角”纬度的定义比经度稍微绕一点。大地纬度B的定义是过地面点的椭球面法线与赤道面的夹角。注意关键词是法线方向不是“地心与该点的连线方向”。这就引出了一个经典的易混淆概念大地纬度和地心纬度。地心纬度是地面点与椭球中心连线同赤道面的夹角而大地纬度用的是“法线”方向。因为地球是个椭球而非正球法线并不指向地心所以两者之间存在一个差值。这个差值在赤道和两极是0°在中纬度地区达到最大大约在0.19°约11′多一点儿的样子。对于搞导航、搞遥感定位的来说这个差别不能忽视。一个点用大地纬度表示和用地心纬度表示在南北方向上能差出十几公里。好在日常测绘使用的大地坐标系统一定义的是大地纬度只要你别在哪个角落里看到“地心纬度”时犯迷糊一般不会出问题。2.3 高程还有“椭球高”和“海拔高”经纬度定的是点在椭球面上的“水平”位置第三个维度是大地高定义为从地面点沿椭球面法线方向到椭球面的距离。注意GPS/RTK直接量出来的高程就是这个大地高。而我们在工程图纸上看到的“海拔高”或“正常高”是从似大地水准面或大地水准面起算的这两个面都不是规则的椭球面。大地水准面是重力等位面它受地球内部质量分布影响坑坑洼洼不规则似大地水准面则是一个与正常重力场有关的参考面数字化之后可以在一定区域内给出起伏值。所以GPS测出的椭球高跟水准测量得到的正常高差一个量叫高程异常在某些山区可能达到几十米。每次外业回来都得提醒新手RTK手簿里显示的那个“高程”不是海拔高度它需要经过高程异常改正才能作为日常用的正常高。你要是直接把椭球高当海拔画到图纸上那高程点全线都会被抬高或压低验收的时候数据一查就穿帮。2.4 大地坐标与天文坐标方向基准不同还有人会把“经纬度”和天文坐标混在一起。天文经度和天文纬度是通过天文观测测出来的以铅垂线方向为基准而大地经纬度以椭球面法线为基准。铅垂线受重力异常的影响并不严格垂直于椭球面两者之间的偏差叫垂线偏差平原地区一般只有几秒到十几秒山区可能大到几十秒。放到实际作业里这就意味着你用天文测量方法得到的经纬度跟用卫星定位解出的大地经纬度之间会有一个小的角度差。这个差值虽然不大但在高精度的控制测量中必须考虑。我们做控制网平差时如果既有天文观测值又有GPS观测值就得处理垂线偏差的影响。普通工程项目可以不操心这个但概念要清楚不然看精度报告时会一头雾水。3. 绕不开的几个椭球为什么同一个点会有这么多坐标3.1 全球常用的几个椭球与参数实际工作中你会反复碰到四个椭球参数。我把它们列成表建议你直接存下来备查椭球名称长半轴a米扁率分母1/f常见坐标系备注克拉索夫斯基6378245298.3北京5420世纪50年代从苏联引入偏古典IAG-756378140298.257西安80我国1975年国际椭球用于1980西安坐标系WGS-846378137298.257223563WGS-84美GPS系统采用的全球地心坐标系CGCS20006378137298.2572221012000国家大地坐标系我国现行法定地心坐标基准看这个表你会发现WGS-84和CGCS2000的长半轴完全相同扁率的差别也小到小数点后第六位以后。可千万别据此以为“CGCS2000就是WGS-84”两个坐标系在框架实现上还有差别普通精度项目可以近似混用但要较真的话二者之间的差异在某些区域可以达到厘米到分米级这在精密工程、地籍测量里是绝对不能忽略的。3.2 椭球相近坐标系却不同很多人不理解参数表上就差了那么一丁点为什么同一个点在北京54和西安80下的经纬度能差出大几十米关键不在于椭球参数本身而在于基准定义。北京54坐标系的原点在苏联的普尔科沃通过联测方式传到我国椭球面与我国大地水准面的拟合程度有限整体偏差较大西安80坐标系则采用多点定位原理让椭球面在我国境内与大地水准面尽量贴合重新确定了原点、定向和尺度。这两个基准之间既有椭球形状差异又有空间位置的重置所以同一点坐标自然会出现系统性差异。我拿一个实际例子来说明同一栋建筑在西安80坐标系下的坐标值与在北京54下相比平面位置可能差出几十米甚至上百米。如果你手上有一批80坐标的老图纸又有一批54坐标的旧控制点对到一起全凭“猜坐标系”是不行的必须要做基准转换。3.3 从北京54到CGCS2000坐标系的迭代我国大地坐标系的发展脉络在实际项目里特别有用因为它解释了你手上的历史数据可能是哪种坐标系。较早的一段时期我们在工作中普遍使用北京54坐标系它由苏联1942年坐标系发展而来在很长一段时间内支撑了基础测绘和经济建设。后来为提高精度和适应国家范围又建立并推广1980西安坐标系在一段时间内与新老数据并存。再往后随着卫星定位技术普及我国于2008年正式启用2000国家大地坐标系CGCS2000这是一个地心坐标系原点在地球质心与服务全球的卫星导航系统天然兼容。按照行业要求新的测绘成果统一使用CGCS2000存量数据逐步转换。实际感受是这几年的项目基本都在CGCS2000上作业但大量的历史图件、控制点资料还保留在54或80坐标下。所以每个从业者都必须具备“坐标系识别-转换”的基本功这个系列接下来几篇会展开讲。4. 为什么会有坐标转换从“一个点两套数字”说起4.1 不同坐标系的差异从哪里来坐标转换这件事根本原因是同一个物理点在不同基准下会有不同的坐标表达。差异来源主要可以归为三类椭球参数不同长半轴、扁率变了椭球面的几何形状就变了一个点在新椭球上的投影位置自然不同原点/定位不同椭球中心在地球内部的位置不同相当于整个坐标参考物平移了定向/尺度不同坐标轴方向可能旋转尺度因子也可能有细微差异。这个差异是一个整体性的空间变换不是简单的加减常数。转换的核心思路就是通过公共点求解出这两个坐标系之间的平移参数、旋转参数和尺度参数然后把一个坐标系下的坐标换算到另一个坐标系下。4.2 转换不是套公式这么简单这里要澄清一个非常普遍的误解坐标转换公式不能百度一个就往里套。不同区域、不同控制点分布解算出的转换参数是不同的。举个例子同一个WGS-84到CGCS2000的转换有人在华东地区算了一套七参数有人在西北地区又算了一套七参数两套参数大概率不一样。因为转换参数是区域拟合的结果覆盖范围越大、控制点越少拟合误差越大。更麻烦的是有些地方做54转80时采用的是一个简化近似参数换一个区域就不适用了。所以拿到别人给的转换参数时一定要问清楚这套参数覆盖哪个范围使用了哪些公共点解算残差多大是否经过严密的精度检核否则你转出来的成果可能完全经不起与实地检测对比。4.3 给接下来的实操留个钩子在后续文章里我会重点展开四参数和七参数的计算流程包括怎么选公共点、怎么用最小二乘解算参数、怎么评价转换精度以及常见的坐标格式转换比如度分秒转十进制度、经纬度转高斯平面坐标。这些内容都是项目上反复用到的东西。但无论算法多复杂核心原则永远是先明确源坐标系和目标坐标系再动手。很多人出问题不是公式不会而是第一步就搞错了。哪怕转换精度再高你把CGCS2000当成WGS-84去处理转得越精细错得越离谱。5. 新手避坑指南与实操心得5.1 拿到坐标后先问一句“什么坐标系”我参与过很多次数据交接最常见的问题就是甲方不知道自己的坐标是什么坐标系或者随意写个“经纬度”就完事。这里有三个最基本的排查方式看数据来源如果是手持GPS导出的大概率是WGS-84经纬度如果是本地RTK测的问问基准站设置里用的什么椭球和坐标系看坐标数值规律同一个点在省级范围内北京54和西安80的经纬度差异通常能达到角秒级甚至更大对照已知控制点就能初步判断看元数据正规成果文件一般都会写坐标系、投影、中央子午线养成查看元数据的习惯。如果实在拿不准宁可重新测一个已知点去比对也不要靠猜。5.2 度分秒、十进制度、坐标投影三区分很多人对这个简单问题反复踩坑。十进制度是小数形式度分秒是角度单位拆开表示两者可以用公式互化十进制度 度 分/60 秒/3600。别以为这很简单我见过不少程序里把度分秒直接当小数算结果一个点位就飘出几公里。另外要区分“经纬度坐标”和“投影坐标”。经纬度是大地坐标系下的三维球面坐标表达而我们在图纸上常用的高斯平面坐标X、Y是把椭球面上的经纬度按一定投影规则展开到平面上的结果。很多人说“坐标转换”其实同时夹杂了基准转换和投影计算两件事。这个细节非常关键我会在实操篇里一并讲清楚。5.3 新手常见问题速查现象常见原因处理建议点位与影像偏移几十米到上百米坐标系认错54/80当WGS-84用先确定源坐标再做基准转换点位整体偏斜方向大致对中央子午线或投影参数设错查看投影设置确认中央经线同一批点相对位置对但整体偏移不知道转换参数或用了错误区域参数重新用公共点解算参数高程整体偏低或偏高用椭球高代替正常高做高程异常改正手簿数据转换后形状被拉伸变形转换参数未做尺度校验控制点检核重算参数5.4 几件越早知道越好的小事眼镜在外面跑外业多带上一个已知点的手簿文件随时可以自检坐标系统是否设对。CAD和GIS里的坐标系概念并不同CAD里可能只是一个图纸坐标GIS里则涉及地理坐标系和投影坐标系两个软件之间互换数据时一定要先统一坐标系再打开。网上的在线坐标转换工具可以用来做粗查但不建议用于正式成果。正式项目里每一步转换都要记录参数和残差这样才能在质量检查时解释清楚坐标来源。在野外工作时要养成“随手记录坐标系统和中央子午线”的习惯。可能当时觉得多此一举但三个月后你再回头看这批数据就会感谢当初那个认真记录的自己。从原理到实操从椭球选择到坐标转换这是一个不断积累的过程。今天先把大地坐标系的概念理顺下一篇咱们就开始接触真正的转换操作。记住一句话坐标转换这件事七分在准备三分在计算。把源坐标系搞清楚把公共点选好后面的事就顺理成章了。
返回列表