基于Google Earth的GPS导航系统
扫描二维码
随时随地手机看文章
1 绪论
随着科技的发展车辆的普及,人们对GPS实时导航的需求变的越来越突出。随之出现了,许多GPS实时导航系统,这其中有软硬件集成一体的GPS导航设备,也有基于其他GPS设备的软件系统。而所有的这些GPS导航几乎都是以线框图为主。线框图的方式比较适用于城市内部的导航,当有需要去郊区或者山地野外去探险等活动时,这种方式就显得力不从心了。
因为这些地方的地图信息少,图示比较粗糙,其次,它提供的时线框的方式去描述地理,显然不能很深刻的反应该地的地貌特征,比如海拔,山野等。而且为了及时更新维护这些线框图带来的代价也时很大的。而这些需求的信息可以在卫星地图上找到。
与此同时Google公司在近些年出来的Google Earth软件,是一款十分优秀的卫星地图服务软件,它免费提供的卫星地图精度很高。大部分地区的地区都比较清晰,特别是各个城市的照片,可以清晰的看到马路上的车辆。在中国卫星图像里,一线城市以2009、2010年拍摄的为主,二、三线城市以05、06年的库存图片为主,能较好地满足导航的要求。
在Google Earth Plus以上的收费版本中还提供了GPS接口,能实时地显示当前位置的地图和移动轨迹。而在免费版本中不带这个功能。因此,设计一个基于Google Earth的GPS导航系统也是很有实际意义的。通过该系统,完成对Google Earth软件的控制,从而达到基于GPS的实物图导航的目的。
此外近期, 基于Google Earth的开发已经很多了, 例如, 利用Google官方提供的3D图形绘制工具,绘制各种建筑或者树木等物品,可以上传摆置在Google Earth上面作为产品展出,也可以设计各种树木摆放到山林的平面卫星照片上,从而勾勒出具有3D特性的卫星地图,便于防止森林火灾抢救等应用。
2 需求分析
2.1 功能需求
本系统由如下的四部分构成:
1)GPS导航系统与GPS设备的通讯模块。
2)WEB服务器,接受来至于Google Earth的Network Link的请求,响应当前的坐标及轨迹信息。
3)预定轨迹的导航,根据预定轨迹对位置进行检测,实现偏离预定轨迹时的报警功能。
4)提供轨迹管理和与其他GPS数据交换的工具。
2.2 数据流分析
如图1,在整个系统中,数据的流动比较的重要,各个功能之间的数据信息的交互都是数据的流动。GPS硬件设备是个数据源,不停的接受来自卫星的信号,通过计算,组织成有格式的数据流传递到本系统,而本系统对这些GPS信息进行读取,并与系统内部的其他的功能配合完成一系列功能。由于系统要控制Google Earth来完成卫星地图的导航功能,所以必须要有一个可以控制Google Earth软件的方式来完成这个任务。这个功能需要把之前从GPS硬件设备读取的信息以某种方式来控制Google Earth。此外,系统的轨迹管理功能也需要与其他功能配合才能完成一系列的管理功能。
图1 数据流图
3 系统设计
3.1 系统模型
图2 系统模型图
完成GPS导航的整个系统的模型如图2所示。这其中包含了很多外部硬件设备和软件系统,而我们的GPS导航系统是安装在用户的PC机或笔记本电脑中的。
首先GPS设备不断的接受来至于各个卫星的无线信号,通过它本身的固件计算得出当前的坐标等相关地理信息。然后与计算机进行蓝牙通讯传送这些地理信息,而在计算机中,操作系统底层把蓝牙通讯模拟成基本的串口通讯,供应用程序调用。本GPS导航系统,自动识别当前计算机中的被模拟为串口的端口号,并不断的读取来至于GPS设备的地理信息。再通过Google Earth控制模块,控制Google Earth的显示,若当前的地图信息还未加载,Google Earth会根据当前的网络情况,连接Google Earth服务器获取对应坐标视角的地图信息。用户一般都是在驾车行驶的时候需要这种导航,所以一般可能的话,可以通过笔记本无线网络连接Google Earth服务器,正如图2所示。
3.2 功能模块划分
整个系统由四大模块组成。分别为GPS设备通讯模块,WEB服务器模块,预定轨迹导航模块,用户图形界面。
1)GPS设备的通讯模块根据操作系统底层对蓝牙的模拟串口,读取GPS设备发送过来的地理信息,并过滤无用信息,动态的更新到自定义的数据结构中去。
2)WEB服务器模块接受来至于Google Earth的Network Link的请求,结合之前更新在结构体中的坐标信息,生成用来改变Google Earth显示的KML文件,并响应Google Earth.
3)预定轨迹导航模块先加载KML文件,获得预定的轨迹信息。启动导航功能之后,实时地根据预定轨迹对当前位置检测,并在当前位置偏离预定轨迹时,提供报警功能。
4)用户图形界面为了便于用户的快捷使用,本系统提供类似与金山快译的工具条按钮组,所有的功能全都由工具条上的几个形象的按钮完成。十分便利。
3.3 核心模块分析
3.3.1 GPS模块
图3 GPS模块分析
这里GPS模块的输入是来至于GPS硬件设备发送过来的地理信息,而它的输出是对这些地理信息解析提取出来的坐标和轨迹信息,传递给GoogleEarth控制模块。内部完成串口数据的接受与坐标轨迹的提取。
3.3.2 Google Earth控制模块
图4 Google Earth控制模块分析
这个Google Earth控制模块,有两个输入,一个是外部输入,就是来自于Google Earth的请求,一个是用于构造响应这个请求时用到的坐标与轨迹信息,这些信息来至于GPS模块,对外输出就是响应Google Earth的KML文件。
3.3.3 串口通讯模块分析
图5 串口通讯模块
在这个过程中,首先GPS设备不断的接受来至于各个卫星的无线信号,通过它本身的固件计算得出当前的坐标等相关地理信息。然后与计算机进行蓝牙通讯传送这些地理信息,而在计算机中,操作系统底层把蓝牙通讯模拟成基本的串口通讯,供应用程序调用。我们的GPS导航系统,自动识别当前计算机中的被模拟为串口的端口号,并开启线程,不断的读取来至于GPS设备的地理信息。这里并不是所有的地理信息在本系统都是有用的,通过程序过滤,提取出当前坐标点经纬度、速度、方向等几个基本的数据信息。把这些信息存储到结构体中,并通过与之前的坐标点的累加,可以构造出一连串的坐标,从而构成行驶轨迹。
3.3.4 WEB服务器模块分析
WEB服务器模块中首先开启HTTP服务线程, 等待来至于GoogleEarth的Network Link的请求,结合之前更新在结构体中的坐标信息,生成用来改变Google Earth显示的KML文件,并响应Google Earth.这里有三个KML文件,其中Network Link中的URL直接指向http://127.0.0.1:5080/index.kml.这里的5080是WEB服务器注册的端口号。
3.3.5 预定轨迹导航模块分析
图6 预定轨迹导航及越界警报模块
预定轨迹导航及越界警报模块中,首先在导航之前要加载预定轨迹。
为了便于绘制和存储,我们就采用Google Earth中对轨迹的存储的KML轨迹文件作为预定轨迹的载体。在加载完预定轨迹之后就可以开启GPS导航,串口通讯模块不断的读取当前坐标信息,而系统专门启动一个线程定时的去检测当前坐标与预定轨迹之间的距离,当超出设置的预定轨迹的范围的时候,即偏离预定轨迹时,启动警报系统,发出声音警报,提醒用户当前坐标已经偏离预定的轨迹范围了。若是没有偏离预定轨迹,则线程睡眠一段时间,再次检测当前位置与预定轨迹之间的距离,开始下一轮的检测与警报。