GPS数据处理 JAVA实现
内容要求:
NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Electronics Associa-tion)制定的一套通讯协议。GPS接收机根据NMEA-0183协议的标准规范,将位置、速度等信息通过串口传送到PC机、PDA等设备。
NMEA-0183协议是GPS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协议,大多数常见的GPS接收机、GPS数据处理软件、导航软件都遵守或者至少兼容这个协议。
NMEA-0183协议定义的语句非常多,但是常用的或者说兼容性最广的语句只有 G P G G A 、 GPGGA、 GPGGA、GPGSA、 G P G S V 、 GPGSV、 GPGSV、GPRMC、 G P V T G 、 GPVTG、 GPVTG、GPGLL等。
其中$GPRMC语句的格式如下:
$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,A*50
这里整条语句是一个文本行,行中以逗号“,”隔开各个字段,每个字段的大小(长度)不一,这里的示例只是一种可能,并不能认为字段的大小就如上述例句一样。
字段0:$GPRMC,语句ID,表明该语句为Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐最小定位信息
字段1:UTC时间,hhmmss.sss格式
字段2:状态,A=定位,V=未定位
字段3:纬度ddmm.mmmm,度分格式(前导位数不足则补0)
字段4:纬度N(北纬)或S(南纬)
字段5:经度dddmm.mmmm,度分格式(前导位数不足则补0)
字段6:经度E(东经)或W(西经)
字段7:速度,节,Knots
字段8:方位角,度
字段9:UTC日期,DDMMYY格式
字段10:磁偏角,(000 - 180)度(前导位数不足则补0)
字段11:磁偏角方向,E=东W=西
字段16:校验值
这里,“”为校验和识别符,其后面的两位数为校验和,代表了“$”和“”之间所有字符(不包括这两个字符)的异或值的十六进制值。上面这条例句的校验和是十六进制的50,也就是十进制的80。
提示:运算符的作用是异或。将$和*之间所有的字符做运算(第一个字符和第二个字符异或,结果再和第三个字符异或,依此类推)之后的值对65536取余后的结果,应该和*后面的两个十六进制数字的值相等,否则的话说明这条语句在传输中发生了错误。注意这个十六进制值中是会出现A-F的大写字母的。另外,如果你需要的话,可以用Integer.parseInt(s)从String变量s中得到其所表达的整数数字;而Integer.parseInt(s, 16)从String变量s中得到其所表达的十六进制数字
现在,你的程序要读入一系列GPS输出,其中包含$GPRMC,也包含其他语句。在数据的最后,有一行单独的
END
表示数据的结束。
你的程序要从中找出 G P R M C 语 句 , 计 算 校 验 和 , 找 出 其 中 校 验 正 确 , 并 且 字 段 2 表 示 已 定 位 的 语 句 , 从 中 计 算 出 时 间 , 换 算 成 北 京 时 间 。 一 次 数 据 中 会 包 含 多 条 GPRMC语句,计算校验和,找出其中校验正确,并且字段2表示已定位的语句,从中计算出时间,换算成北京时间。一次数据中会包含多条 GPRMC语句,计算校验和,找出其中校验正确,并且字段2表示已定位的语句,从中计算出时间,换算成北京时间。一次数据中会包含多条GPRMC语句,以最后一条语句得到的北京时间作为结果输出。
你的程序一定会读到一条有效的$GPRMC语句。
输入格式:
多条GPS语句,每条均以回车换行结束。最后一行是END三个大写字母。
输出格式:
6位数时间,表达为:
hh:mm:ss
其中,hh是两位数的小时,不足两位时前面补0;mm是两位数的分钟,不足两位时前面补0;ss是两位数的秒,不足两位时前面补0。
输入样例:
$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,A*50
END
输出样例:
10:48:13
代码如下
package gps;import java.util.*;public class GPS {public static void main(String[] args) {int hour = 0, minute=0, second=0;char time[] = new char[25];//储存时间Scanner reader = new Scanner(System.in);while (true) {String s = reader.nextLine();if (s.equals("END"))break;int comma = 0; // 逗号if (s.indexOf("$GPRMC") == 0 && s.charAt(18) == 'A') {int i = 3;int buf = s.charAt(1) ^ s.charAt(2);//异或while (s.charAt(i) != '*') {buf = buf ^ s.charAt(i);i++;}buf%=65536;i++;//十六进制转换↓int n1, n2, n;if (s.charAt(i) >= 'A' && s.charAt(i) <= 'F') {n1 = 10 + (s.charAt(i) - 'A');} elsen1 = s.charAt(i) - '0';if (s.charAt(i + 1) >= 'A' && s.charAt(i + 1) <= 'F') {n2 = 10 + (s.charAt(i + 1) - 'A');} elsen2 = s.charAt(i + 1) - '0';n = n1 * 16 + n2;//十六进制转换↑if (buf != n) //验证continue;for (int j = 0; j < s.length(); j++) {if (s.charAt(j) == ',')++comma;if (comma == 0) {int t = j + 1;for (int j2 = 0; j2 < 6; j2++) {time[j2] = s.charAt(t + 1);t++;}} // 拿到时间}hour = ((time[0] - '0') * 10 + time[1] - '0' + 8) % 24;minute = 10 * (time[2] - '0') + time[3] - '0';second = 10 * (time[4] - '0') + time[5] - '0';//改变时间}}reader.close();System.out.printf("%02d:%02d:%02d", hour, minute, second);}
}
GPS数据处理 JAVA实现相关推荐
- 第6周 使用对象 1 单词长度(5分) 2 GPS数据处理(5分)
第6周 使用对象 By yangbo 2021/04/18 6.1 字符类型 字符也是Java中基础的数据类型之一,Java采用Unicode16表达字符,在所有的机器上,不管CPU.操作系统和本地语 ...
- 滴滴驾驶行为开放数据集:GPS数据处理
滴滴驾驶行为开放数据集 重要提示 1.数据集介绍 1.1 驾驶行为基础信息:driver_accident_base_data 1.2 GPS&IMU数据 1.3 数据申请 2. GPS数据处 ...
- python gps数据处理_GPS数据处理简述(上)
前前言最近在上海出差,有对数据挖掘和机器学习的实践感兴趣,想要面基的小伙伴可以联系我. 联系方式在 Resume 里面,也可以看一下我的介绍,到时候咱们可以面基面的更有针对性. 困死了,实在写不下去了 ...
- c语言程序设计 cap 翁恺,GPS数据处理 翁恺老师C语言程序设计CAP第10章编程题
NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine Elect ...
- 单词长度和GPS数据处理——程序设计入门C语言
1.单词长度(4分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这里的单词与语言无关,可以包括各种符号,比如"it's& ...
- 中海达数据怎么转rinex_中海达GPS数据处理软件包使用手册-(36页)-原创力文档...
Word Word 资料 HDS2003 GPS数据处理软件包使用手册 HDS2003 GPS数据处理软件包使用手册 9- 9- PAGE # 第九章项目管理 HDS2003数据处理软件是面向项目进行 ...
- GPS数据处理_C语言
题目内容: NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine ...
- MOOC 浙江大学 翁恺 程序设计入门C GPS数据处理
GPS数据处理 题目内容: NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The Nationa ...
- 编程题 gps数据处理c语言,第八周指针与字符串编程练习/课堂作业 单词长度+GPS数据处理《程序设计入门——C语言》第七期 浙江大学 翁恺...
1.单词长度(4分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这里的单词与语言无关,可以包括各种符号,比如"it's& ...
最新文章
- 最大连续子序列和-动态规划
- VTK:网格之DeformPointSet
- 设计模式五: 原型模式(Prototype)
- linux curl 多线程,CURL多线程不执行一直在请求
- 数据结构--队列Queue--打印杨辉三角
- python3安装json库-python库json快速入门
- echarts 折线图数据太多会导致卡顿_重新定义数据图表,还有比这个更厉害的吗?...
- document.body.scrollTop值为0的解决方法[转]
- php生成gif动态图片_PHP绘制GIF动态图片
- 简单的多线程操作示例
- leetcode刷题日记-两数之和系列
- nodejs实战mysql_node.js实战:手把手教你使用mysql
- 关于期权的若干硬知识,知道这些就不那么担心了
- 桌面超简单小代码 bat形式
- 智慧电力信息化系统建设整体方案
- 中标麒麟操作系统离线安装nginx
- ActivityManager 管理Activity
- 小程序轮播图swiper,自定义的指示点
- Java jdk的下载与安装
- php网站挂马,网页挂马详细教程