【问题标题】:How to get accurate altitude above mean sea level with NASA's EGM96.java?如何使用 NASA 的 EGM96.java 获得平均海平面以上的准确高度?
【发布时间】:2023-03-22 11:56:01
【问题描述】:

当我尝试运行 EGM96.java 时,它总是抛出一个 IO 异常。

public static void main(String[] args) {
    // TODO Auto-generated method stub
    EGM96 egm = new EGM96("config/EGM96.dat");
    LatLon latlon = LatLon.fromDegrees(1.4, 103.9);
    double offset = egm.getOffset(latlon.getLatitude(),latlon.getLatitude());
}

这会导致 IO 异常。

但是,当 IO 异常消失时

public static void main(String[] args) {
    // TODO Auto-generated method stub
    EGM96 egm = new EGM96("config/EGM96.dat");
    LatLon latlon = LatLon.fromDegrees(1.4, 103.9);
    double offset = egm.getOffset(latlon.getLatitude(),latlon.getLatitude());
    double offset = egm.getOffset(latlon.getLatitude(),latlon.getLatitude());
}

但我不能有 2 个同名变量。如果我尝试更改其中一个变量,则 IO 异常会再次出现。

EGM96.java 可在http://worldwind31.arc.nasa.gov/svn/trunk/WorldWind/src/gov/nasa/worldwind/util/EGM96.java 获得

【问题讨论】:

  • 你把EMG96.dat文件放到config目录了吗?
  • 是的,我做到了。 “config/EGM96.dat”@guido
  • 当您说“这将导致 IO 异常”时,您的意思是您在代码运行时获得了异常堆栈跟踪吗?再一次,你说当你两次声明偏移量时异常消失了。此代码(修复 IO ex 的代码)甚至无法编译。你确定你得到的是代码运行时抛出的异常而不是编译器错误吗?
  • @prabugp 这是编译器错误
  • @guido 对于这种用于大地水准面高度的代码还有其他建议吗?

标签: java geolocation altitude


【解决方案1】:

如果您遇到编译器错误,这意味着 EGM 代码可能会在运行时引发异常,您应该处理它。这通常通过 try-catch 块来完成,您可以在其中捕获异常并打印错误消息或进行一些其他自定义处理。请查看this 了解整个过程如何运作的详细信息。

【讨论】:

  • EGM 构造函数:public EGM96(String offsetsFilePath) 抛出 IOException。好像是故意扔的?
  • 那么......处理有什么问题吗?您是否可以尝试捕获它或重新抛出并至少运行一次应用程序以查看它对您的工作方式?与处理编译器错误相比,我们可以更好地处理错误堆栈跟踪。
猜你喜欢
  • 2012-03-04
  • 2018-07-07
  • 1970-01-01
  • 1970-01-01
  • 2017-03-14
  • 2022-08-14
  • 2020-10-24
  • 1970-01-01
  • 2012-05-24
相关资源
最近更新 更多