一个简单的小实验,还有很多地方需要改进。
一、实验工具:
①C++ builder
②Google earth——定位和获取校准点的经纬度,界定截图的大致范围
③Getscreen——配合Google earth的小插件,获得合适的拼接大地图
④绘图工具——确定像素点坐标,以便于计算像素点间距离与经纬度之间的比例关系
⑤USB接口的GPS接收机,包括相应的驱动,pc机上查看连接收集数据的软件sirfdemo_NMEA
二、GPS数据
1、数据的采集
GPS信号的数据采集,参数提取及存储系统设计采用了基于Windows操作平台上的面向对象的程序设计。
启动GPS信号接收机,从GPS信号中提取“经度”、“纬度”、“速度”、“日期”等数据,以 NMEA-0813格式保存数据,提取数据。
使用GPS接收机采集数据时,将GPS接收机连接到移动电脑上,启动接收机,开始接收数据。
大多数GPS 接收机都能输出符合NEMA0183 标准的ASCII码形式的各种数据信息,NEMA0183通信标准格式是美国国家海洋局电子协会制定的,语句达数十种之多,各种数据句型均以“$”开头,数据主要由帧头、帧尾和帧内数据组成,主要语句有GPGGA,GPVTG,GPRMC等。
数据提取:此实验中,GPS参数纬度、经度、速度信息均由GPRMC提出。由于每行数据均是由“$”加标志符开头,在从原始采集数据提取上述数据中,以“$”和标志符的组合来判断信息来源。由于每项数据项均是以“,”作为分隔符,数据的位数通常是变长的,但每类数据的相对位置不变,因此在查找经度纬度等的时候,只需查找并记录“,”的个数,即能将各类参数提取出来。从原始数据中将经度、纬度、速度信息经过一次提取,并将之存于另一存储文件中,以便于在轨迹重现中能够更快更有效地将提出来的数据用于重现轨迹。在存储时,在考虑到轨迹重现时从此存储文件中进行二次提取数据不易将各类数据项识别开来,遂将每个定点的每项数据用一个字母结束,以便作为第二次参数提取时的分隔符。
2、数据保存记录的数据保存为TXT格式的文本文件,保存格式为:
$ GPGGA ,……(时间),……(纬度),……(北纬),……(经度),……(东经),……
$ GPRMC,…………
………………………………
以及高度、速度等数据。如:
$GPRMC,025957,A,3037.8723,N,10404.8260,E,000.0,000.0,271004,001.1,W*6C
$GPGGA,025957,3037.8723,N,10404.8260,E,1,06,1.5,507.4,M,-32.1,M,,*63
$GPGSA,A,3,01,,06,14,16,20,,25,,,,,2.6,1.5,2.1*31
$GPGSV,3,1,09,01,73,016,51,03,04,182,,06,19,068,48,14,32,118,47*7B
$GPGSV,3,2,09,16,66,206,49,20,36,293,44,23,15,314,39,25,57,016,52*7C
$GPGSV,3,3,09,30,03,041,,,,,,,,,,,,,*45
三、实验步骤①大致流程:(天线)GPS接收机——连接笔记本(通过串口USB)——(数据处理、保存并留作再处理)GPS数据采集——
按数据确定地图范围并截取——界面设计(C++builder)并开始编程——数据存储(第一次提取按标准格式存储)
——二次提取数据并轨迹重现(校准)
②GPS数据的采集: 使用GPS接收机和PC机实现移动坐标点数据采集
1、安装Driver.exe驱动程序;
2、插上接收机;
3、重启系统;
4、检测到新硬件提示——有效;
5、运行 sirfdemo_NMEA.exe;
6、在“数据源”选项中,设置端口号 COM1~COM4 (根据具体情况调整);
7、运行“连接”,看见数据即可;
8、点击“磁盘符号”设置保存数据文件位置(先停止连接,设置好文件名称后再连接,屏幕数据应有变化);
9、使用“资源管理器”,不停地打开该文件,检查文件容量是否在增加,最后面的数据是否在变化,若都在变,说明采集的GPS数据正不停地存入指定文件。
10、上面的内容弄好后,就可以出去测数据了
③截取地图:这里要用到工具Google earth、Getscreen、绘图工具。可以采用类似工具替换,比如用百度地图。
参考点坐标在Google earth上得到,像素点在绘图工具上得到。至于大地图的拼接,先打开Google earth,在用与它配套的小插件Getscreen可以得到范围很大,有一定经度的拼图,由于我的电脑超过250M的图片不能读取,所以我在250M以下,规定范围内尽可能截出精确的小比例图。
地图由Google Earth截取的成都市卫星地图。截下的图像精度较高,道路清晰。Google Earth可以让用户旋转角度来观看地形和建筑物,为地图增添注释。
④一次数据提取:大致流程如下,其中K统计了循环的次数,既有多少组数据
1、定义经纬度、速度高度等变量
2、指定采集数据的文件路径
3、数据以"$GPRMC"开头则继续读后面的数据,否则读下一行
4、指针向前提取纬度、速度、经度,是以"$GPGGA"*开头则提取高度
5、继续进入循环(第3步)直到文件结束
6、将纬度,经度,速度分别赋值个相应的文本输出,第一次提取结束