我有一個.nmea
文件,裏面有GPS數據,我想從中獲取緯度/經度信息。Java:讀取和解析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
包含緯度/龍valuess標籤。基本上是第3和第5列。其餘的是不必要的,所以可以忽略。
我開始了與讀取文件,如下所示:
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();
}
然而這僅印刷第一個,然後什麼。
我錯在哪裏?
編輯: OK我發現了錯誤關於閱讀的線條,條件應該是這樣:
while (line != null) {
if (line.contains("$GPRMC"))
System.out.println(line);
line = br.readLine();
}
return sb.toString();
但是我仍然需要就採摘3和第5列數據的一些幫助。
有大量的Java NMEA解析器可用,只是做了快速搜索,並選擇一個你喜歡的。 – JimmyB