坐标转换:从WGS-84到国内坐标系(GCJ-02&BD-09)

目录

🍅点击这里查看所有博文

  随着自己工作的进行,接触到的技术栈也越来越多。给我一个很直观的感受就是,某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了,只有经常会用到的东西才有可能真正记下来。存在很多在特殊情况下有一点用处的技巧,用的不多的技巧可能一个星期就忘了。

  想了很久想通过一些手段把这些事情记录下来。也尝试过在书上记笔记,这也只是一时的,书不在手边的时候那些笔记就和没记一样,不是很方便。

  很多时候我们遇到了问题,一般情况下都是选择在搜索引擎检索相关内容,这样来的也更快一点,除非真的找不到才会去选择翻书。后来就想到了写博客,博客作为自己的一个笔记平台倒是挺合适的。随时可以查阅,不用随身携带。

  同时由于写博客是对外的,既然是对外的就不能随便写,任何人都可以看到。经验对于我来说那就只是经验而已,公布出来说不一定我的一些经验可以帮助到其他的人。遇到和我相同问题时可以少走一些弯路。

  既然决定了要写博客,那就只能认真去写。不管写的好不好,尽力就行。千里之行始于足下,一步一个脚印,慢慢来 ,写的多了慢慢也会变好的。权当是记录自己的成长的一个过程,等到以后再往回看时,就会发现自己以前原来这么菜😂。

  本系列博客所述资料均来自互联网,并不是本人原创(只有博客是自己写的)。出于热心,本人将自己的所学笔记整理并推出相对应的使用教程,方面其他人学习。为国内的物联网事业发展尽自己的一份绵薄之力,没有为自己谋取私利的想法。若出现侵权现象,请告知本人,本人会立即停止更新,并删除相应的文章和代码。

前言

  随着全球化的加速,国际间的技术交流和合作日益频繁。在地理信息领域,WGS-84坐标系作为一种国际通用的地心坐标系,被广泛应用于全球定位系统(GPS)以及其他卫星导航系统中。然而,在国内,我们更多地使用北京54坐标系或西安80坐标系。这些坐标系虽然在特定区域内具有较高的精度,但在与国际数据对接时,就需要进行坐标转换。

  坐标转换不仅仅是技术上的转换,它还涉及到数据的精度、可靠性和一致性。例如,在农业智能化领域,精准农业需要精确的地理信息来指导播种、施肥和灌溉等操作。如果坐标转换不准确,可能会导致设备的定位偏差,从而影响农业生产效率和作物产量。因此,掌握坐标转换的原理和方法,对于提高地理信息的准确性和实用性具有重要意义。

WGS-84坐标系简介

  WGS-84 坐标系(World Geodetic System 1984 Coordinate System)是一种国际上采用的地心坐标系。它的坐标原点位于地球的质心,地心空间直角坐标系的 Z 轴指向国际时间服务机构(BIH)1984.0 定义的协议地球极(CTP)方向,X 轴指向 BIH 1984.0 的零子午面和 CTP 赤道的交点,Y 轴与 Z 轴、X 轴垂直,构成右手坐标系。这种坐标系的建立,为全球定位系统(GPS)提供了统一的参考框架。

  WGS-84 坐标系的一个显著特点是它的全球适用性。由于其以地球质心为原点,因此可以有效地避免因局部地区地形变化而引起的坐标偏差。此外,WGS-84坐标系还具有较高的精度,能够满足大多数高精度定位需求。然而,需要注意的是,WGS-84坐标系并不是完美无缺的。由于地球形状的不规则性以及测量技术的局限性,WGS-84坐标系在某些地区仍然可能存在微小的偏差。

国内坐标系及其与WGS-84坐标系的差异

  在国内,我们常用的坐标系主要有GCJ-02坐标系和BD-09坐标系。这两种坐标系都是基于我国的地理特征和测量需求而建立的,尤其是在互联网地图和导航服务中得到了广泛应用。

  GCJ-02坐标系,通常被称为火星坐标系,是由中国国家测绘局制定的,基于WGS-84坐标系进行加密处理。它的主要目的是为了保护国家的地理信息安全,因此在GCJ-02坐标系中,位置会相对于WGS-84坐标系进行一定的偏移。这种坐标系广泛应用于高德地图和腾讯地图等导航服务。

  BD-09坐标系是百度地图使用的坐标系,基于GCJ-02进行了进一步的加密处理。BD-09坐标系在GCJ-02的基础上增加了更多的偏移量,以提高数据的安全性和隐私保护。这使得BD-09坐标系在百度地图中具有独特的定位方式,但也导致了与其他坐标系之间存在一定的转换误差。

  尽管GCJ-02和BD-09坐标系在国内的应用非常广泛,但它们都是基于WGS-84进行转换而来的,因此在全球范围内并不具有通用性。在使用这些坐标系时,需要特别注意它们的转换和精度问题,以确保定位的准确性。

  由于 WGS-84 坐标系与国内坐标系之间的差异,当我们将 GPS 测量的 WGS-84 坐标数据转换为国内坐标系时,就需要进行复杂的坐标转换计算。这个过程不仅需要考虑坐标系之间的几何关系,还需要考虑测量误差、数据精度以及已知点的分布等因素。

GNSS坐标转换与误差分析

  在常规情况下,全球导航卫星系统(GNSS)模块输出的坐标数据通常采用 WGS-84 坐标系。这意味着,为了将这些坐标应用于国内的地图服务或其他地理信息系统,必须经过坐标转换的过程。然而,这一转换过程并非总是完美无误,它可能引入一定的误差。该误差的大小主要取决于已知参考点的精度以及这些参考点的分布情况。

  例如,在笔者之前的测试中,所打印出的定位结果以经纬度的格式呈现,具体为 ddmm.mmmm:3149.25718,11707.03023。在进行坐标转换时,首先需要将这种格式转换为 dd.dddd 格式,即 31.820953,117.117170500。这种格式转换是坐标转换的第一步,确保数据能够被正确处理。

  WGS-84 坐标在谷歌地图上定位时,数据的准确性相对较高。用户可以通过输入转换后的坐标,轻松地在谷歌地图上找到对应的位置,显示效果良好。

输入图片说明

  然而,当同样的坐标输入到百度地图时,定位的误差却明显增大。这种情况在实际应用中并不少见,尤其是在国内的地图服务中,因不同坐标系的使用和地理信息处理算法的差异,可能导致用户在使用时遇到定位偏差的问题。

输入图片说明

  为了应对这一问题,通常需要使用纠偏算法来进行位置修正。用户可以通过访问相关网站点此访问,输入上述经纬度信息,便可以看到在百度地图以及高德地图中的纠偏结果。这种纠偏技术能够有效减少由于坐标转换带来的误差,提高定位的准确性和可靠性。

在这里插入图片描述

坐标转换的方法与步骤

平面坐标转换

  平面坐标转换是坐标转换中最常见的部分。其基本思路是将GNSS测量的WGS-84坐标投影到平面坐标系中,然后通过已知控制点进行二维相似变换。具体步骤如下:

  1. 投影变换:将WGS-84坐标系下的地理坐标(经度、纬度)投影到平面坐标系中。常用的投影方法有墨卡托投影、兰伯特投影等。投影变换的目的是将地球表面的曲面坐标转换为平面坐标,以便于后续的计算。

  2. 计算转换参数:在平面坐标系中,通过已知的控制点坐标,计算二维相似变换的四参数。这四个参数包括平移参数、旋转参数和缩放参数。平移参数用于调整坐标系的原点位置;旋转参数用于调整坐标轴的方向;缩放参数用于调整坐标的比例尺。通过这四个参数,可以将WGS-84坐标系下的平面坐标转换为国内坐标系下的平面坐标。

  3. 坐标转换计算:利用计算得到的转换参数,对所有待转换的坐标点进行坐标转换计算。公式如下:

X_China = a * X_WGS84 - b * Y_WGS84 + t_x 
Y_China = b * X_WGS84 + a * Y_WGS84 + t_y 

其中:

  • X_China 和 Y_China 是转换后的国内坐标系下的平面坐标。
  • X_WGS84 和 Y_WGS84 是 WGS-84 坐标系下的平面坐标。
  • a和b 是旋转和缩放参数。
  • t_x 和t_y是平移参数

高程转换

  高程转换与平面坐标转换有所不同。由于地球表面的高程变化较为复杂,因此高程转换通常需要采用拟合模型来进行计算。常用的拟合模型包括平面拟合和二次曲面拟合。具体步骤如下:

  1. 选择拟合模型:根据已知水准点的分布情况和高程变化特征,选择合适的拟合模型。如果高程变化较为平缓,可以选择平面拟合模型;如果高程变化较为复杂,可以选择二次曲面拟合模型。
  2. 计算拟合参数:通过已知水准点的高程数据,利用最小二乘法等数学方法,计算拟合模型的参数。这些参数可以用来描述高程变化的规律。
  3. 高程转换计算:利用拟合模型和计算得到的参数,对所有待转换的坐标点进行高程转换计算。通过这种方式,可以将WGS-84坐标系下的高程转换为国内坐标系下的高程。

  例如平面拟合或二次曲面拟合。以平面拟合为例,公式如下公式如下:

H_China = H_WGS84 + A * X_WGS84 + B * Y_WGS84 + C

其中:

  • H_China 是转换后的国内坐标系下的高程。
  • H_WGS84 是 WGS-84 坐标系下的高程。
  • ABC是拟合参数,通过已知水准点计算得到。

坐标转换的实际应用与案例分析

农业智能化中的坐标转换

  在农业智能化领域,精准农业技术的应用越来越广泛。例如,自动驾驶拖拉机、自动灌溉系统等都需要精确的地理信息来实现自动化操作。这些设备通常使用 GPS 进行定位,获取的坐标数据是 WGS-84 坐标系下的。然而,为了与国内的农业信息系统进行对接,就需要将这些坐标数据转换为国内坐标系。

  精准农业的核心在于通过精确的地理信息指导农业生产活动,例如播种、施肥和灌溉等操作。如果坐标转换不准确,可能会导致设备的定位偏差,从而影响农业生产效率和作物产量。例如,在自动驾驶拖拉机中,如果坐标转换存在误差,拖拉机可能会偏离预定的播种路线,导致作物种植不均匀,进而影响产量。

  通过坐标转换,可以将 GPS 测量的 WGS-84 坐标数据准确地转换为国内坐标系下的坐标数据。这样,农业智能化设备就可以根据国内坐标系下的坐标数据进行精确的操作,从而提高农业生产效率和作物产量。例如,自动灌溉系统可以根据转换后的坐标数据,精确地控制灌溉区域,确保每一寸土地都能得到适量的水分。

导航定位中的坐标转换

  在导航定位领域,坐标转换同样具有重要意义。例如,在百度地图和高德地图中,用户输入的起点和终点坐标数据通常是基于 WGS-84 坐标系的。然而,地图数据本身是基于国内坐标系的。因此,为了实现准确的导航定位,就需要将用户输入的坐标数据转换为国内坐标系下的坐标数据。

  在实际应用中,由于 WGS-84 坐标系与国内坐标系之间的差异,可能会导致导航定位出现偏差。例如,当用户在百度地图上输入一个地点的经纬度时,如果直接使用 WGS-84 坐标,可能会发现定位结果与实际位置存在偏差。这种偏差可能会影响用户的出行体验,甚至导致用户迷失方向。

  为了解决这个问题,一些地图服务提供商采用了纠偏算法。通过输入 WGS-84 坐标数据,纠偏算法可以自动计算出在百度地图和高德地图中的准确位置。这种纠偏技术能够有效减少由于坐标转换带来的误差,提高定位的准确性和可靠性。

地理信息系统(GIS)中的坐标转换

  地理信息系统(GIS)是一种用于收集、存储、分析和展示地理信息的系统。在 GIS 中,坐标转换是数据整合和分析的关键步骤。例如,当需要将来自不同数据源的地理信息(如卫星图像、地形图和地理调查数据)整合到一个 GIS 项目中时,必须将这些数据的坐标系统一转换为相同的坐标系。

  以城市规划为例,规划人员需要将不同来源的地理数据(如土地利用图、交通网络图和人口分布图)整合到一个 GIS 系统中,以便进行综合分析。这些数据可能来自不同的坐标系,例如 WGS-84、北京 54 或西安 80 坐标系。通过坐标转换,可以将这些数据统一到一个坐标系下,从而实现数据的无缝对接和分析。

  那么本篇博客就到此结束了,这里只是记录了一些我个人的学习笔记,其中存在大量我自己的理解。文中所述不一定是完全正确的,可能有的地方我自己也理解错了。如果有些错的地方,欢迎大家批评指正。如有问题直接在对应的博客评论区指出即可,不需要私聊我。我们交流的内容留下来也有助于其他人查看,说不一定也有其他人遇到了同样的问题呢😂。

<think>嗯,用户想了解Excel中的VLOOKUP函数的用法和参数含义。首先,我需要回忆一下VLOOKUP的基本结构。VLOOKUP是垂直查找函数,用于在表格的首列查找指定的值,然后返回该行中指定列的数据。它的四个参数分别是查找值、表格范围、列索引号和匹配模式。 接下来,我得确认每个参数的具体作用。第一个参数是lookup_value,也就是用户要查找的值,比如产品ID或者姓名。第二个参数是table_array,即查找的范围,这里要注意的是,查找值必须位于这个范围的第一列,否则函数无法正确工作。第三个参数是col_index_num,也就是用户想要返回的数据在表格范围中的第几列,这个列数是从表格范围的第一列开始算起的,不是整个工作表的列。第四个参数是range_lookup,决定是精确匹配还是近似匹配,通常用FALSE或0来指定精确匹配,避免错误。 然后,用户可能需要一个具体的例子来理解如何使用。比如,假设有一个产品价格表,用户想根据产品ID查找对应的价格。这时候,VLOOKUP就可以在ID列查找,然后返回价格列的数据。同时,要提醒用户注意表格范围最好使用绝对引用,比如$A$2:$C$100,这样在拖动公式时范围不会变化。 可能遇到的问题也需要考虑。比如,如果查找值不在表格的第一列,或者列索引号超过了表格的列数,函数会返回错误。此外,数据格式不一致也可能导致问题,比如查找值是数字,而表格中是文本格式的数字,这时候需要统一格式。还有,当出现#N/A错误时,可能是查找值不存在,或者匹配模式设置不正确,需要检查参数是否正确。 用户可能还会问到如何避免常见的错误,比如部分数据匹配出错的情况。这时候需要检查是否有多余的空格,或者数据格式不一致,或者表格范围没有锁定导致拖动时偏移。此外,XLOOKUP作为VLOOKUP的升级版,可能在某些情况下更方便,比如可以向左查找或者返回多列数据,这也是可以提及的内容。 最后,整理步骤,从基础语法到参数说明,再到具体案例,逐步引导用户理解如何使用VLOOKUP函数。同时,提供常见错误和解决方法,帮助用户在实际应用中避免问题。如果有必要,还可以比较VLOOKUP和其他查找函数的区别,比如HLOOKUP或XLOOKUP,但根据用户的问题,主要集中在VLOOKUP本身即可。</think>### Excel VLOOKUP函数详解 #### 一、基础语法与参数说明 VLOOKUP函数的语法为: $$=VLOOKUP(lookup\_value, table\_array, col\_index\_num, [range\_lookup])$$ 包含4个参数: 1. **lookup_value**(必填):要查找的值(如单元格引用或具体值) 2. **table_array**(必填):包含数据的表格范围(必须包含查找列和返回列) 3. **col_index_num**(必填):返回值所在列的序号(从table_array第一列开始计数) 4. **range_lookup**(可选):匹配类型 - `TRUE`/`1`:近似匹配(默认值,需数据升序排列) - `FALSE`/`0`:精确匹配(常用选项) [^1][^2] #### 二、使用步骤演示(工资表查询案例) 假设需要根据员工编号查询工资: 1. 建立查询单元格(如`B12`) 2. 输入公式: ```excel =VLOOKUP(A12, $A$2:$D$100, 4, 0) ``` - `A12`:待查询的员工编号 - `$A$2:$D$100`:锁定数据区域(绝对引用) - `4`:返回第4列(工资列) - `0`:精确匹配 [^2][^3] #### 三、常见错误与解决方法 | 错误现象 | 原因 | 解决方案 | |---------|------|---------| | #N/A | 查找值不存在 | 检查数据源或改用`IFERROR`容错 | | #REF! | 列序号超出范围 | 确认col_index_num ≤ 表格列数 | | 部分匹配失败 | 数据格式不一致 | 统一数值/文本格式 | | 结果错位 | 表格未锁定 | 使用`$`符号固定区域引用 | [^3][^4] #### 四、进阶技巧 1. **多条件查询**: 使用辅助列合并多个条件字段 ```excel =VLOOKUP(A2&B2, $D$2:$F$100, 3, 0) ``` 2. **通配符匹配**: `"*"`匹配任意字符,`"?"`匹配单个字符 ```excel =VLOOKUP("张*", $A$2:$C$100, 3, 0) ``` 3. **跨表查询**: 引用其他工作表数据 ```excel =VLOOKUP(A2, Sheet2!$A$2:$D$100, 4, 0) ``` [^1][^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遇雪长安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值