Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在GPX文件中计算距离?_Java_Gpx - Fatal编程技术网

Java 如何在GPX文件中计算距离?

Java 如何在GPX文件中计算距离?,java,gpx,Java,Gpx,我正在学习初级CS课程,我的部分作业是编写一个GPX文件读取器,允许用户从菜单中选择一个选项,以显示总距离、高程增益和损失等。我已经了解了如何让用户输入文件以及如何创建菜单,但我不确定如何阅读文件来获取经纬度。要点。根据我的理解(如果我错了,请纠正我),您获取第一个坐标并计算第一个坐标与下一组坐标之间的距离,然后继续,直到到达文件中的最后一个坐标 然而,我在从文件中提取坐标时遇到了麻烦,这是我现在正在使用的代码,这样你们就可以知道我的技能水平。我知道它可能会完全关闭,但我真的非常感谢您的帮助,谢

我正在学习初级CS课程,我的部分作业是编写一个GPX文件读取器,允许用户从菜单中选择一个选项,以显示总距离、高程增益和损失等。我已经了解了如何让用户输入文件以及如何创建菜单,但我不确定如何阅读文件来获取经纬度。要点。根据我的理解(如果我错了,请纠正我),您获取第一个坐标并计算第一个坐标与下一组坐标之间的距离,然后继续,直到到达文件中的最后一个坐标

然而,我在从文件中提取坐标时遇到了麻烦,这是我现在正在使用的代码,这样你们就可以知道我的技能水平。我知道它可能会完全关闭,但我真的非常感谢您的帮助,谢谢

public static void distance(Scanner input) {
    while (input.hasNextLine()) {
        String longcheck = input.nextLine();
        if (longcheck.equals("lon")) {
            double lon1 = input.nextDouble();
            double lat1 = input.nextDouble();
下一位是我必须计算的距离(我已经为另一个作业测试了它,效果很好)


您的预期产出和实际产出是什么?欢迎来到SO。请邮寄。如果问题是读取文件,则距离计算无关。GPX文件使用XML格式。解析它最简单的方法是使用XML解析器(搜索)。@Henry谢谢,我查阅了有关XML解析器的资料,它远远超过了我们在课堂上学习的内容,但我会尽我所能找到它!
                lat1 = Math.toRadians(lat1);
                lon1 = Math.toRadians(lon1);
                lat2 = Math.toRadians(lat2);
                lon2 = Math.toRadians(lon2);

                double longdis = lon1 - lon2; //calculating longitudinal difference
                double angudis = Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(longdis);
                angudis = Math.acos(angudis); //converted back to radians
                angudis = angudis * 6372.795; //multiplied by the radius of the Earth
                System.out.println("The distance between the two points is " + angudis + "kilometers");
            }
        }
    }
}