gpt4 book ai didi

Java:读取和解析 GPS 数据

转载 作者:行者123 更新时间:2023-11-30 02:44:48 26 4
gpt4 key购买 nike

我有一个包含 GPS 数据的 .nmea 文件,我想从中获取纬度/经度信息。

文件如下所示:

$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 标签包含纬度/经度值。基本上是第三列和第五列。其余的都是不必要的,所以可以忽略。

我首先按如下方式读取文件:

    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 标签的行,并且我只想要第三和第五列。

我尝试添加 if 条件如下:

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();

但是,我仍然需要一些有关选择第三列和第五列数据的帮助。

最佳答案

你可以这样做:

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

关于Java:读取和解析 GPS 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40507420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com