ARTICLE DETAIL

资讯详情

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

坐标转换实战:搞懂椭球基准与七参数,解决CAD到GIS数据对接难题

坐标转换实战:搞懂椭球基准与七参数,解决CAD到GIS数据对接难题 做测绘或者GIS这行肯定绕不开坐标转换。尤其是手上拿着CAD图纸、控制点成果或者从公开渠道下载的矢量数据坐标系不一样叠在一起就能错出去几百米甚至更远。我入行头两年最头疼的就是处理不同椭球基准下的坐标转换搞不清楚北京54、西安80、WGS84和CGCS2000这几种基准的差别结果在项目里反复返工。这篇文章就从实操角度把这些事掰开了讲清楚重点说怎么在不同椭球基准之间做转换以及从CAD到GIS常见的6位坐标怎么处理。先说清楚这东西到底为什么烦人。地球上每个点都可以用经纬度表示但问题是地球并不是一个完美的球体甚至不是一个完美的椭球。不同国家、不同时期定义的椭球大小、形状、中心位置都不一样同一个物理点在不同的椭球基准下经纬度数值就不一样。这就好比同样一件衣服用英制尺子量和用公制尺子量读数不一样但衣服没变。坐标转换的核心就是找到不同尺子之间的换算关系。这套东西听起来枯燥但真到项目里不掉链子靠的就是把这几个概念抠明白。我前阵子刚帮一个朋友处理过一批CAD地形图转GIS的活他拿到的图纸用的是西安80坐标而GIS底图用的是WGS84经纬度如果不做转换所有房屋、道路、管线直接错到河对岸去。这篇文章就从概念讲到实操把参数选择、转换流程、精度检验这些我实际踩过的坑都写出来方便你直接照着做。1. 椭球基准到底是什么为什么会有不同基准1.1 椭球基准描述地球形状的标准尺子地球的真实形状是一个不规则的椭球体表面有高山、海沟还因为质量分布不均导致重力场不规则。为了在数学上描述地球上的点位测绘行业用了一个近似模型——旋转椭球面。这个椭球由长半轴a和短半轴b或者扁率f定义不同的椭球参数就构成了不同的椭球基准。举个生活化的例子地球像一颗不小心被捏了一下的篮球它不是完美的圆球测量时我们用一个数学上的椭圆绕短轴旋转生成一个光滑的椭球面去逼近真实地球表面。不同的椭球就像不同尺码的衣服有的偏大有的偏小有的中心位置还不一样。常见的椭球有克拉索夫斯基椭球是用来支撑北京54坐标系的IAG-75椭球对应西安80坐标系WGS84椭球是GPS卫星定位用的CGCS2000椭球则是目前我国国家大地坐标系的标准。这几种椭球的长半轴和扁率都有差别更重要的是它们定义的椭球中心也有差异。北京54椭球的中心并不是严格的地球质心而是按苏联的地球椭球定位方式来的WGS84和CGCS2000则是地心坐标系椭球中心和地球质心基本重合。中心差个几十米甚至上百米反映到地面点的坐标上就是整体偏移。1.2 地理坐标系、投影坐标系和图上坐标的三角关系搞坐标转换之前必须先分清一个东西地理坐标和投影坐标。地理坐标经纬度是基于椭球面的角度坐标单位是度。投影坐标是将椭球面按某种数学法则展开成平面后的坐标单位是米。我国常用的高斯-克吕格投影就是典型的一种。回到CAD和GIS的数据上。CAD图纸常见的6位坐标通常是投影坐标比如X3548200Y516300去掉带号后单位是米。而GIS底图里如果存的是经纬度WGS84那就是地理坐标。从CAD到GIS的转换涉及两步先把CAD里的投影坐标转成对应的地理坐标比如西安80高斯投影坐标→西安80经纬度再通过基准转换把西安80经纬度转成WGS84经纬度。如果底图是CGCS2000的就要做CGCS2000和西安80之间的转换。很多入门者容易把投影换带和椭球基准转换混在一起其实这是两码事。投影换带是同一个椭球基准下从3度带换到6度带或中央经线换了坐标值会变但对应的物理位置没变因为椭球基准没变。而椭球基准转换是换了尺子比如北京54和WGS84之间即使经纬度同名代表的地面物理点也不是同一个。所以做坐标转换时先想清楚我是在换投影还是在换基准还是两者都要做。1.3 我国常用的几种坐标参考框架目前工程和科研里接触最多的有四种北京54坐标系基于克拉索夫斯基椭球属于参心坐标系椭球中心与地球质心不重合。多用于老的测绘成果、历史地形图、部分存量CAD数据。西安80坐标系基于IAG-75椭球也是参心坐标系。上世纪80年代后建立的国家大地控制网成果大量地形图、地籍图都用它。WGS84坐标系GPS卫星定位采用的协议地球坐标系地心坐标广泛用于全球导航定位和互联网地图数据。CGCS2000坐标系我国现行法定的大地坐标系地心坐标与国际地球参考框架ITRS保持一致精度高于WGS84的定义值。从趋势看国家要求新生产的测绘成果统一使用CGCS2000。但存量数据不会凭空消失CAD图纸、老控制点、历史航片这些还在用北京54和西安80所以不同椭球基准间的转换在未来很长一段时间里都是刚需。真正在项目里干活的人不是单纯挑一个坐标系就能完事而是要在一堆历史包袱和现行标准之间找到一条可控的转换路径。2. 坐标转换的核心原理与参数模型2.1 三参数、四参数、七参数分别解决什么问题坐标转换的参数模型本质上是描述两个椭球之间空间关系的一组数字。实际工程中最常用的有三种三参数、四参数、七参数。三参数3-Parameter假设两个椭球之间只有X、Y、Z三个平移量的差异实际上还有旋转和尺度差异但在小范围内旋转和尺度影响很小所以只用三个平移参数做近似转换。精度一般在米级到数十米适合精度要求不高的场景、范围小的区域或者手上只有控制点粗略坐标的情况。四参数4-Parameter主要用在平面坐标转换比如两个坐标系在同一投影带内只考虑X平移、Y平移、旋转角和一个尺度比。注意四参数转换的前提是两个坐标系都已经位于同一椭球基准下或者误差能够接受精度在小范围内能到厘米级甚至毫米级。七参数7-Parameter包含三个平移、三个旋转绕X轴、Y轴、Z轴旋转的角度和一个尺度因子两个椭球间的比例差。最完整的空间相似变换模型适用于大范围、高精度的三维坐标转换。这里有个实际选择逻辑如果你手里的源坐标是北京54平面坐标投影坐标目标也是平面坐标比如CGCS2000高斯投影坐标常见的做法是先在各自的椭球下转成地理坐标做七参数基准转换再投影到目标平面坐标。如果区域范围小比如一个县城、一个园区平面四参数也能满足要求前提是公共点分布均匀且转换后检核点在精度范围内。2.2 从数学角度理解七参数空间直角坐标的刚体变换七参数转换的标准模型是基于空间直角坐标X, Y, Z模型长得像这样Xt Xs Tx m * R * Xs其中Xs是源坐标系下的空间直角坐标向量Xt是目标坐标系下的空间直角坐标向量Tx是平移向量Tx, Ty, Tzm是尺度误差通常以ppm为单位即百万分之一R是由三个旋转角α, β, γ构成的旋转矩阵。实际计算流程是先将经纬度和椭球高换算成空间直角坐标用源椭球的参数套用七参数模型得到目标椭球下的空间直角坐标再反算回目标椭球下的经纬度最后根据需要投影成平面坐标。很多人第一次看七参数公式看不懂其实换个思路就明白了想象一个刚体在空间里挪动。你先把它平移三个平移量再绕着轴转一下三个旋转角最后整体缩小或放大一点点尺度因子。地球上某个区域用北京54椭球描述和用WGS84椭球描述就相当于同一个物体在不同的测量尺子摆放位置下读数七参数就是把物体从一种摆放挪到另一种摆放的操作说明。2.3 参数从哪里来公共点选择和质量评估的关键七参数的精度完全取决于公共点。所谓公共点就是同一物理位置在两个坐标系下都有坐标的控制点。公共点选择有几个讲究数量必须大于参数个数。七参数至少需要3个公共点每个点可以列3个方程但实际至少用6到10个以上多余观测可以提高可靠性。点位要均匀分布在整个转换区域内不能只集中在一个角落。想象你要给整个省做一个转换结果控制点全在一个市远处误差会大得离谱。控制点本身的精度要可靠。如果源成果本身是低精度测绘的再好的算法也救不了。求解参数一般用最小二乘法。如果有多个公共点列出误差方程解算求得最或然参数同时可以得到单位权中误差、各点改正数等精度指标。如果某个点改正数特别大先别急着用查一下是不是点号标错了或坐标抄错了我遇到过好几次这种看似是参数问题实际是原始坐标里混了一个别的坐标系的数据。参数求解时还要注意旋转角的单位弧度还是角秒、尺度因子是ppm还是无量纲比例不同软件默认值不一样用错就全盘皆输。建议在同一个软件里从头做到尾中途不要换参数单位。3. CAD到GIS实战从平面6位坐标到地理坐标的全流程3.1 场景还原拿到的CAD坐标到底处于哪个椭球基准CAD图纸里的坐标多数情况下是平面坐标常见的有这几种可能性北京54高斯投影坐标Y坐标即东坐标通常带带号比如38开头表示3度带第38带。西安80高斯投影坐标特征和北京54类似但数值略有不同。地方独立坐标系有的地方项目为了减少投影变形会自定义中央经线和坐标原点。这类坐标转换起来最麻烦需要找到原定义参数。判断的关键办法是同一区域内找控制点成果表看坐标值和已知坐标系下的位置是否吻合。没有控制点就先问项目来源如果是老设计院出的图北京54和西安80都有可能别猜拿到书面说明最好。很多人拿到CAD图就直接用坐标不对就手动挪一下这是最危险的做法。你手动挪了图表面上位置对齐了但图形内部的尺度、角度可能已经发生了变化后续叠加测绘图、算面积都会出问题。正确做法是先搞清楚图纸的椭球基准和投影再走标准的转换流程。3.2 标准流程从CAD坐标到GIS经纬度的一次完整转换从CAD坐标转到GIS的WGS84经纬度标准流程分四步。第一步提取CAD坐标并确认带号。在CAD里用查询命令选中特征点道路交叉口、房角点记录X、Y值。注意CAD的X坐标通常是北方向Y经度方向与数学里的X轴方向不同。确认Y坐标经度方向是否带带号如果约等于500000附近是去掉了带号如果后面带两位数3位数的带号要去掉或保留但要正确解析投影参数。**第二步选择源椭球和投影带。**根据判断结果确定是北京54还是西安80确定是3度带还是6度带中央经线是多少。比如西安80、3度带第38带中央经线就是114度3 * 38 - 1.5 112.5等一等3度带中央经线3nn为带号所以38带中央经线为114度。这里一定要算对中央经线错1度平面坐标就会偏几公里。**第三步做椭球基准转换。**用七参数把西安80经纬度转成WGS84经纬度。如果没有已知的七参数可以在小范围区域内用公共点重新求取如果范围很小且精度要求不高可以用三参数近似平移。**第四步将WGS84经纬度作为GIS图层的坐标系。**在GIS软件里新建要素类定义坐标系为WGS84地理坐标系EPSG 4326然后导入转换后的点、线、面数据。这里提醒一下如果目标不是WGS84而是CGCS2000的投影坐标系那流程类似只需要把第二步和第三步的目标椭球替换成CGCS2000椭球即可。CGCS2000和WGS84在多数工程场景下差值很小厘米到分米级但如果做精度要求高的测量工作还是应该走正规转换流程。3.3 参数解算实操如何用公共点求取七参数假设你手里有6个公共点既有西安80的平面坐标或经纬度又有WGS84的经纬度或CGCS2000坐标。现在要在GIS软件或专业坐标转换工具里求取七参数步骤如下将公共点的源坐标如西安80平面坐标转换成西安80椭球下的经纬度如果软件支持平面坐标可以直接带投影参数反算。将源经纬度换算成空间直角坐标X1, Y1, Z1。将公共点的目标坐标如WGS84经纬度或CGCS2000经纬度换算成空间直角坐标X2, Y2, Z2。利用多组X1, Y1, Z1和X2, Y2, Z2在软件中求解七参数。软件输出包括Tx, Ty, Tz, 三个旋转角和一个尺度因子以及残差信息。查看残差单点残差大的先剔除或检查该点原始坐标是否正确。实际操作里我建议用至少7到8个公共点解算后保留残差较小的点重新计算。如果一个点残差明显拉高整体精度不用硬留。解出来的参数需要保存好标注清楚使用的公共点、日期和适用范围。坐标转换参数一旦用于生产后续换点或调参的成本很高别嫌麻烦。3.4 换带计算同一个椭球基准下的投影坐标转换有时候就算椭球基准相同比如都是西安80但CAD图纸用的是3度带而GIS数据要求的是6度带坐标这时候就需要换带计算。换带计算有两种情况同椭球换带直接用高斯投影正反算即可。把平面坐标先反算成经纬度再用新带参数正算成平面坐标。内部没有椭球基准变化简单可靠。跨椭球换带先做椭球基准转换七参数再在新椭球基准下做投影正算。这种情况下实际上是基准转换换带的复合问题与上一节的基本流程一致。换带的典型应用场景是CAD图是3度带坐标而某个公开图层或控制点成果用的是6度带坐标。这时先反算经纬度再用正确的中央经线投到目标带比直接手动加减数值靠谱得多。3.5 CAD里坐标数值与GIS坐标的常见差异实操中最让我头疼的反而是坐标数值的表述差异而不是椭球基准差异。有的CAD图上坐标是用户自定义的任意坐标比如建筑总平面图很多时候直接用相对坐标原点在图的左下角。这种情况下没有椭球基准可言没法做正规的基准转换只能通过公共点做四参数配准。还有一类常见情况是CAD坐标把带号去掉了Y方向是6位或8位数比如Y482532.1236位或Y38482532.1238位前者是去掉带号38后的值后者是保留带号38再加500公里偏移后的值。转GIS的时候如果目标是带带号的坐标系统必须在转换时正确设置带号否则投影坐标会错位几十公里。所以我反复强调拿到CAD数据的第一件事是核对坐标的表述方式而不是急着转换。值域分析是很有效的判断手段北京54/西安80的Y坐标经度方向如果约6位大概率带号已去除如果约8位大概率带号在。X坐标纬度方向一般在7位左右代表到赤道的距离单位米。4. 常见问题与排查技巧实录4.1 坐标偏差几百米先查这5个地方坐标转换做完之后叠加GIS底图发现点位偏移一两百米甚至更远排查顺序很重要。带号是否解析正确。Y坐标38 500000这种值如果软件里没设带号38而默认0那东坐标就差了几十公里这是最大的来源。中央经线是否算错。3度带和6度带的中央经线不一致差一点点就会让平面坐标出现几百到几公里的偏移。椭球基准是否选错。西安80和北京54之间平面坐标差几十米到一百多米如果根本没做基准转换偏差也会到这个量级。源坐标的X、Y是否颠倒了。CAD和GIS里关于X、Y的定义往往相反CAD里X对应经度方向东GIS里X对应纬度高程方向搞反了就是对称位置的错误。尺度参数是否有问题。七参数解算时尺度因子如果单位设定错误ppm和mm/m混淆会造成大面积位移通常表现为离公共点越远偏差越大。排查建议选两个相距较远的已知点计算转换后两点间的距离与真实距离对比。距离对得上、位置整体平移说明旋转和尺度基本正确问题多半在平移或带号距离对不上就要查旋转和尺度参数。4.2 公共点残差过大别急着调参数用公共点解算七参数或者四参数时如果某个点的残差特别大不要急着把它剔除只为了满足数据漂亮。我吃过这个亏有一年做一个县的存量数据转换为了把残差压到最小把5个残差大的控制点全部剔除剩下的点都集中在一个乡镇结果在县城的另外一边转换误差达到了几米。正确做法是先检查这个公共点在源坐标系和目标坐标系下的记录是否一致是否有点号记错、坐标抄错。再检查该点是否位于转换区域的边缘。边缘点残差大可能说明参数模型本身不够强硬剔除导致后续外推误差更大。如果确认该点原始数据可靠、也在区域内部那么保留它看整体解算精度是否满足项目要求。多点带残差参与解算比强行用少数几个点干净参数要稳妥。4.3 一个被低估的细节中央经线在小区域内的影响很多人以为区域范围小就不用管坐标转换的精度这个认知是错的。即便在一个几十平方公里的县如果中央经线选错1度高斯投影变形带来的平面坐标偏差也可能超过几十米。我在处理一个园区级项目时甲方提供的CAD图虽然是西安80坐标但他们原始数据是从邻省项目直接拷贝过来的中央经线用的是邻省的到我这边就差了近100米。后来一查原始文件里的坐标注记和椭球信息才定位到这个问题。所以做任何平面坐标转换之前哪怕范围再小也一定要确认中央经线和带号。不确定的时候可以通过公共点反推中央经线取一个已知经纬度的点比较它在不同中央经线下的投影坐标与源CAD坐标的差异能反推出大概的中央经线参数。4.4 CGCS2000与WGS84转换的必要性判断经常有人问CGCS2000和WGS84到底要不要做转换先说结论在多数中小比例尺应用和互联网地图叠加场景下两者差异在厘米到分米级肉眼几乎看不出差别可以直接视为同一坐标系使用。但在高精度测量、变形监测、工程控制网等场景必须严格区分。原因在于CGCS2000定义的时候参考框架是ITRF972000.0历元而WGS84在后来经过多次精化其当前实现与CGCS2000的定义值在历元上的差别很小但具体到某个年份、某个板块运动速度场差异还是会积累。对我国境内来说两者偏差一般在5厘米以内对GIS展示和多数管线普查足够对高精度施工放样则需要用精确的转换参数。判断要不要转建议看项目精度要求精度在0.5米以上直接当同一个用问题不大精度在0.1米到0.5米有条件就做转换没有条件也至少确认使用的底图和成果坐标系一致精度在厘米级必须做严密的七参数转换并考虑历元和板块运动改正。4.5 一套可靠的坐标转换操作流程可直接套用做完这么多项目我的坐标转换流程已经稳定下来分享给你直接套用数据体检用CAD或GIS打开源数据检查坐标值域、带号、单位确定源椭球基准和投影参数如果不能确定找甲方要书面说明。收集公共点在转换区域内均匀收集至少6个控制点点位信息包含源坐标和目标坐标并确认两套坐标的精度和可靠来源。解算转换参数用专业工具如Coord、GeoTrans、ArcGIS的Create Custom Geographic Transformation等解算七参数或四参数查看残差并评估精度。做转换按第3节的标准流程先反算经纬度再做基准转换再投影到目标坐标系。有条件的话在GIS里建立自定义地理变换保证后续数据都能复用同一个参数。精度验证用未参与参数解算的独立检查点验证转换精度。检查点至少3个均匀分布在区域内部和边缘。统计点位中误差满足要求才正式出成果。记录归档把源坐标系、目标坐标系、转换参数、公共点表、转换日期、软件版本全部记录下来写进项目技术总结。别偷懒等半年后项目复查时你就知道这个记录有多重要了。这套流程看起来繁琐但每一步都是为了减少返工。坐标转换这种事差不多就是差很多一步到位比事后弥补省时间得多。5. 我踩过的一些坑以及最终沉淀下来的心得做坐标转换这几年我最大的感受是工具和公式都不难难的是判断数据来源和参数选择。很多所谓转换错误追根到底是在前面某一环节信息没确认清楚。一个特别典型的例子有一回朋友发来一批规划红线CAD图标注是西安80坐标结果我拿到后发现他图纸里的Y坐标值域比正常西安80小了整整1000公里仔细一看是设计院把中央经线设错了整体图形往西挪了1000多公里。这种图谈不上转换只能通过公共点做仿射纠正。好在项目区域里有3个高精度控制点四个参数硬拉回来最终精度勉强到了1米内但这是个教训数据源头的坐标系说明不可尽信一定要主动做值域分析和交叉验证。还有一个经验在GIS软件里定义自定义地理变换时最好把参数名称写得详细一点例如Xian80_to_WGS84_7para_2023包含椭球、方法、参数来源年份这样多个项目共用数据时所有人一眼就能看出适用范围。我有一次就是因为用了别人建好的转换参数没细看说明结果那个参数是用在另一个省份的到我这直接偏了50米。后来养成习惯所有转换参数都自建自验并且用独立检查点验证。提到检查点验证还有一个细节检查点一定不能和求参公共点完全重合否则就是自我验证没有说服力。最好在参数解算完成后去实地采集几个特征点坐标或者找项目区域内已知坐标的独立点来做检核。检查点的分布也要考虑区域边缘因为任何参数模型在控制点覆盖范围之外误差都可能快速放大。最后说一点对坐标转换的整体认识它不只是一个数学过程更是一个数据管理的流程问题。先把源数据搞清楚再把目标需求搞清楚中间选择合适的模型和参数最后用检查点把关。顺序不能乱。我也见过同行为了省事直接用网上找的固定参数做全局转换结果局部地区精度崩了最后全部重做。坐标转换没有一步到位的万能药只有适合自己的、验证过的方案才靠谱。你手里的数据和区域条件不一样参数自然不同老老实实走流程反而是最省时间的路。
返回列表