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