GPSデータを含む.nmea
ファイルがあります。これからLat/Long情報を取得したいと思います。あなたは緯度/経度valuessが含まれてい$GPRMC
のタグがある見ることができるように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
:
これは、ファイルがどのように見えるかです。基本的に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();
}
しかしこれは何も、その後、最初のものを印刷しません。
ここで私は間違っていますか?
EDIT:私はラインを読みについて間違いを発見OK、条件がそうでなければなりません:
while (line != null) {
if (line.contains("$GPRMC"))
System.out.println(line);
line = br.readLine();
}
return sb.toString();
私はまだ3番目と5番目の列のデータを取り出すに関するいくつかの助けが必要ですが。
をJavaのNMEAパーサーの多くは、単に迅速な検索を行うと、あなたが好きなものを選んで、利用可能があります。 – JimmyB