Java:读取和解析GPS数据
我有一个Java:读取和解析GPS数据,java,Java,我有一个.nmea文件,里面有GPS数据,我想从中获取横向/纵向信息 文件的外观如下所示: $GPRMC,215110,A,6427.3436,N, 151.3059,E,0.174946,180.000000,040816,,*37 $GPGGA,215110,9427.3436,N, 351.3059,E,1,00,0.0,-10.126627,M,0.0,M,,*79 $GPGSA,A,3,,,,,,,,,,,,,0.0,0.0,0.0*32 $GPRMC,215111,A,327.343
.nmea
文件,里面有GPS数据,我想从中获取横向/纵向信息
文件的外观如下所示:
$GPRMC,215110,A,6427.3436,N, 151.3059,E,0.174946,180.000000,040816,,*37
$GPGGA,215110,9427.3436,N, 351.3059,E,1,00,0.0,-10.126627,M,0.0,M,,*79
$GPGSA,A,3,,,,,,,,,,,,,0.0,0.0,0.0*32
$GPRMC,215111,A,327.3438,N, 751.3059,E,0.174946,351.730930,040816,,*38
$GPGGA,215111,1427.3438,N, 151.3059,E,1,00,0.0,-10.062418,M,0.0,M,,*79
$GPGSA,A,3,,,,,,,,,,,,,0.0,0.0,0.0*32
如您所见,$GPRMC
的标记包含Lat/Long值。基本上是第三列和第五列。其余部分完全没有必要,因此可以忽略
我开始阅读该文件,如下所示:
public static String readFile() throws IOException {
URL url = GpsReadear.class.getResource("data.nmea");
File file = new File(url.getPath());
BufferedReader br = new BufferedReader(new FileReader(file));
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
System.out.println(line);
line = br.readLine();
}
return sb.toString();
} finally {
br.close();
}
}
}
我得到输出,文件被读取(并根据我的要求打印)。现在我想过滤它,因为我只需要包含$GPRMC
标记的行,并且只需要第3列和第5列
我尝试添加,如果条件如下:
while (line != null && line.contains("$GPRMC")) {
System.out.println(line);
line = br.readLine();
}
然而,这只打印了第一个,然后什么也没有
我哪里弄错了
编辑:好的,我发现了读这些行的错误,条件应该是:
while (line != null) {
if (line.contains("$GPRMC"))
System.out.println(line);
line = br.readLine();
}
return sb.toString();
但是,关于选择第3列和第5列数据,我仍然需要一些帮助。您可以像这样做:
while (line != null && line.contains("$GPRMC")) {
String[] data= br.readLine().split(",");
String latStr = data[3];
String longStr = data[5];
}
long
不能用作变量名。data[]
索引应该是2和4,因为它从0开始。除此之外,谢谢。编辑,我会接受你的答案。仍然是3和4:0=“$GPRMC”或否?[0:$GPRMC”、1:$215110”、2:“A”、3:“6427.3436”、4:“N”、5:“151.3059”…]是的,应该是3和5,有很多Java NMEA解析器可用,只需快速搜索并选择一个您喜欢的。