作者:中科院物理所新媒体中心
审核:罗会仟 中国科学院物理研究所 研究员
注意看,这个小编有一天打开了某团APP想点个外卖,突然发现身在北京的小编的手机显示的定位在通辽!?这是怎么一回事呢?手机是如何显示你的定位的呢?小编也很好奇,一起来了解了解手机地图定位背后的原理吧!
卫星定位
我们在数学中都学过,建立一个坐标系,给出一个点的坐标也就知道了这个点的位置,坐标实际上是相对于原点的位置。
同样的,在实际定位中,我们也需要一个参考物体,我们描述的任何一个物体的位置都是相对于参照物的。
我们不妨先看一下在平面中如何定位一个物体。一般来说,确定两个物体间的直线距离是非常容易的,比如说物体A可以给物体W发射一束电磁波,记录一下物体W接收到电磁波所需要的时间,即可得到A,W间的距离。
但是在只知道距离的情况下,W所处的位置可以在以A为圆心,以距离S为半径的圆上。所以为了进一步确定物体W的位置,我们可以再选取更多的参照物B,C,同样可以测量B,C到物体W之间的距离,由此得到两个圆,通过三圆定位即可确定物体W在平面上的具体位置。
依照这个思想,卫星定位实际上就是在三维空间中确定地面上一个物体的位置。而卫星就是我们要选取的参照物,所以卫星定位实际上就是在求解卫星与地面物体间距离的过程。在实际应用过程中,卫星通过向地面的接收机发射电磁信号而实现定位。
根据前面二维平面中的定位的讨论,我们可以推广发现,在卫星定位过程中,只需要三颗卫星就可以确定接收机只可能出现在两个位置。其中一个位置在地球上,另一个位置一般处在地球空间之外,所以理论上通过三颗卫星即可实现定位。
但是由于相对论中的时间膨胀效应,卫星在地球上空以很高的速度飞行,所以卫星中的时间相比于地球上的时间会变慢,导致通过发射电磁波确定距离会存在很大的误差。还需要再使用一颗卫星来校正时间,所以至少需要四颗卫星才能定位地球上的接收器[1]。
在真实的卫星定位情景下还会存在各种影响定位精度的因素,比如卫星和地面间的时间误差,卫星和地球运动带来的星历误差,地球电离层和对流层对电磁波的时空干扰产生的误差等。
要消除这些误差对卫星定位的影响,一般采用差分GNSS定位的方法。
这个方法是可以在一个区域里设置很多接收机,每个接收机测量到的定位参数显然存在上述所说的误差成分。这时选取其中一个接收机作为基准,称为基站。事先可以精确确定基站在地面上所处的位置,由此可以得到基站与卫星间的精确距离,将这个真实的几何距离与测量距离做比较,就可以得到测量误差的程度。
随后基站可以将这个测量误差发送到我们用户手中的流动接收机上,这样流动的接收机可以根据这个误差自动校正其测量到的卫星距离值,从而提高流动接收机的定位精度[2]。
在这里我们可以尝试解答一下开头遇到的问题:
不管北斗卫星导航系统或者GPS的卫星都可以完全覆盖到整个地球,但是如果我们身处比如比较深的地下室,或者周围楼房遮挡比较密集,又或者在野外离接收基站很远,这些情况可能会导致我们能接收到信号的卫星数目不足,或者接收到的距离参数误差很大,就会导致定位不准确。
2. 地理信息图像
我们日常生活中所使用的地图更像是纸质地图的电子版,通过放大地图可以显示山川形貌,街道、街景之类的真实影像,这些都是怎么做到的呢?
在现代遥感技术和信息技术实现以前,广大的测绘工作者们就通过长期辛勤的工作绘制了各种精确完整的比例尺地图。通过这个方式可以将各种地理信息参数化输入到计算终端,进一步实现数字地形图矢量图绘制。或者直接进行扫描处理,将已有的纸质地图扫描成数字地图。
进一步地,为了提高地图数据采集效率,通过卫星遥感影像也可以有效获得高分辨率的地面图像。
所谓遥感就是通过卫星或航天飞机向地面发射电磁波,电磁波被地面物体反射或吸收(注:遥感没法分析被折射到地面介质里面的电磁波),通过分析返回的电磁波的信息可以感知到地面物体的具体形状,主要物质组成等信息。
可以将遥感过程理解成对地面大范围的拍照过程,不同的是使用的电磁波不仅仅局限于可见光,同时包括微波,红外波等电磁波,同时拍照的范围更加广大。
遥感扫描到的图像还要进一步地进行信息处理最终变成我们熟悉的数字地图,这个过程涉及到计算机图像处理、计算机视觉、人工智能以及模式识别等技术[3]。
遥感图像的地理信息提取过程如下:
首先要对遥感扫描的图像进行平滑、去噪、增强对比度以及几何纠正等预处理。其次通过分析图像中灰度、纹理、颜色、或做傅里叶变换分析局部频谱特征识别图像中的不同物体,并对其进行图像分割。
随后可以提取这些物体各自明显地一些特征,比如形状、边缘、灰度、方向等特征。再其次就是对得到的各种物体进行分类汇总。然后是采集到的图像栅格数据进行矢量处理。最后通过人工方法检验图像的正确性,并进行错误修改和补充[3]。
对于更加细节的我们日常生活中感兴趣的饭店、商场、加油站、居民区等实景,则是需要在道路上开车用摄像机去记录。(很朴实简单的过程呢)。
地图算法
当定位和实际地图的问题解决后,接下来一个问题就是,如何使用这些信息来方便我们的生活呢?比如说我想去一个地方,地图是如何帮助我规划路线呢?或者我定位在一个位置,想去吃饭,地图如何帮助我搜索周围有哪些餐厅呢?
一个基本的地图算法就是地图匹配算法,可以帮助我们规划一个较好的交通路线。
实现地图匹配的基本思想有[4]:
构建道路结构的空间拓扑关系帮助实现实时行进路线,也就是是将GPS定位点和道路抽象成点-线连接的结构图。
图:道路拓扑图 图源:参考文献[4]
在诸如道路拐角、十字路口和曲线路段时,可以引入相关性算法,也就是将当前的行进轨迹和将要行驶的路线轨迹进行预测匹配,选择匹配性最高的路线作为实际行驶路线。或者通过当前的行进轨迹在电子地图数据库中推测建立一个可能行进区间,在这个区间里优化将要行驶的道路路线。
至于寻找感兴趣的地点,则可以理解成一个索引过程,比如说从数据库中找到我当前定位一千米以内的餐馆。
在地图上显示的定位数据一般是二维数据,比如一个位置的经纬度,可以通过Geohash编码的方法将二维数据进行降维处理,映射为一维数据,接下来进行排序索引就会简单的多。
Geohash编码的基本思想为:把地球沿经度和纬度方向不断地交替进行二分,每次二分称为一次划分,用0,1表示每次划分的区域,之后,将每5次划分的二进制编码转换成32进制编码。这样得到的编码是具有唯一性的,每个单元网格都唯一对应地图上的一个空间区域,每个字符串编码对应一个确定的经纬度。可以看到,编码长度越短,网格包含的空间区域越大[5]。
图:Geohash编码过程及区域数据查询模型 图源:参考文献[5]
随后在索引过程中,就可以基于用户查询目标所在的空间位置和空间范围大小,得到Geohash编码层级,进而快速搜索需求目标。
4,结语
一个我们日常生活中早已熟悉的手机地图功能,一次很平常的点外卖过程,其背后居然凝聚了从发射卫星到走街串巷,从勘探测绘到计算机编程中无数的原理、技术,其中的每一项都是人类智慧的结晶,这也是正是科学的意义!
参考文献
[1] 简单说人话,卫星定位就是这么一回事 - 知乎 (zhihu.com)
[2] 北斗/GPS 双模差分定位技术的研究及实现,刘琳,北京交通大学硕士论文,2013年
[3] 基于地图及遥感影像的地理信息提取研究,杨云,解放军信息工程大学博士论文,2008年
[4] 智能交通系统中GPS地图匹配算法设计与实现,罗杰涛,北京交通大学硕士论文,2012年
[5] 基于Geohash的面数据区域查询, 金安等,地理与地理信息科学,2013年第29届第5期
文章由科普中国-星空计划(创作培育)出品,转载请注明来源
来源: 星空计划
内容资源由项目单位提供