如何将距离(英里)转换为度?

时间:2013-01-15 18:18:26

标签: java geometry gis

我正在使用Spatial数据处理应用程序。在这里,我需要找到从质心到点的距离。可以知道如何在Java中将里程转换为度数吗?

4 个答案:

答案 0 :(得分:20)

最终修改:查看Great Circle DistanceGeodesics,了解您在此问题中真正提出的问题的复杂性。这无疑是出于对数学的熟悉。

[出于历史原因留下原始建议。虽然碎片可能对你有所帮助,但它们不会直接回答你的问题。]

有关此问题的答案,请参阅https://stackoverflow.com/a/1253545/1964221

  

纬度:1度= 110.54公里

     

经度:1度= 111.320 * cos(纬度)km

要走向另一个方向,我想知道我们是否可以这样做(我的代数生锈了):

纬度:1 km = 1 deg / 110.54 km
经度:1 km = 1 deg /(111.320 * cos(纬度)km)

<强>应用

您的距离是否始终是严格的东西或南北?如果是这样,您应该能够说:

Integer latTraveledMiles = 100;
Double latTraveledKM = 100 * 0.621371;
Double latTraveledDeg = (1 / 110.54) * latTraveledKM;

Double currentLat = 74.0064;
Integer longTraveledMiles = 100;
Double longTraveledKM = 100 * 0.621371;
Double longTraveledDeg = (1 / (111.320 * Math.cos(currentLat))) * longTraveledKM;

很可能,您需要知道南北和东西方向的距离(并将其带入“不直接”的范围。)您可以查看Pythagorean Theorem。知道三角形的“长边”(c ^ 2),可以计算经度(a ^ 2)和纬度(b ^ 2)。

您应该可以应用我以前的代码段的部分内容来弄清楚 c = sqrt(a ^ 2 + b ^ 2)。

祝你好运。

答案 1 :(得分:5)

如果这确实是一个直截了当的问题,我们应该忽略纬度和经度,只看半径与两点之间的角度,使它们之间的距离,沿着包含两个点的大圆,是m英里。 / p>

为了保持真正的直线,我们应该假设地球是球形的,因此答案与位置无关。我使用的平均半径为3,958.761英里。

一个弧度是3,958.761英里长的线的角度,因此长度为m英里的线的角度为m / 3,958.761弧度。如果您想要以度为单位的角度,请使用Math.toDegrees。

答案 2 :(得分:2)

以度数表示距离是一种不正确的方法,因为地球上所有位置的距离度表示不相等,并且纬度和经度的表达方式不同。

实施例: 赤道上的1°经度约为70英里,而北极周围则为几英尺。

纬度不会在地球表面发生变化,但是不是沿着子午线或平行线的距离呢?你会用哪种方法代表那些?

答案 3 :(得分:2)

dwight-degroff的答案很棒(谢谢,它对我有帮助),但是包含一个错误类型,当然这个错误很重要。如果你想更正确(例如你根据源自多个小数位的来源的外部数据准备测试),那么它应该是

  

纬度:1 km = 1 deg / 110.574 km

而不是:

  

纬度:1 km = 1 deg / 110.54 km

因此对于纬度而言:

    Integer latTraveledMiles = 100;
    Double latTraveledKM = 100 * 0.621371;
    Double latTraveledDeg = (1 / 110.574) * latTraveledKM;

实际上,经度是111.319而不是111.320,所以:

    Double currentLat = 74.0064;
    Integer longTraveledMiles = 100;
    Double longTraveledKM = 100 * 0.621371;
    Double longTraveledDeg = (1 / (111.319 * Math.cos(currentLat))) * longTraveledKM;

但是,两次更正都可以忽略不计。