2016-11-09 20 views
1

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番目の列のデータを取り出すに関するいくつかの助けが必要ですが。

+0

をJavaのNMEAパーサーの多くは、単に迅速な検索を行うと、あなたが好きなものを選んで、利用可能があります。 – JimmyB

答えて

2

あなたはそれが好きですかできます。

while (line != null && line.contains("$GPRMC")) { 
    String[] data= br.readLine().split(","); 
    String latStr = data[3]; 
    String longStr = data[5]; 
} 
+1

'long'は変数名として使用できません。 – Fildor

+0

'data []'インデックスは0から始まるので、2と4でなければなりません。しかしそれ以外は、ありがとう。編集して、私はあなたの答えを受け入れるでしょう。 –

+0

@Fildorこれを指摘してくれてありがとう。答えを更新しました。 –

関連する問題