1

我正在开发一个带有空间数据的应用程序。在这里,我需要找到从质心到一点的距离。可以知道如何在Java中将英里转换为度数吗?

4

4 回答 4

21

最终编辑:查看大圆距离测地线,以发现您在这个问题中真正提出的问题的复杂性。诚然,这完全出于我对数学的熟悉程度。

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

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

纬度:1 度 = 110.54 公里

经度:1 度 = 111.320*cos(纬度)公里

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

纬度:1 公里 = 1 度/110.54 公里
经度:1 公里 = 1 度/(111.320*cos(纬度)公里)

应用

你的距离总是严格的东西向还是南北向?如果是这样,您应该可以说:

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;

很有可能,您需要知道南北和东西方向的距离(并将其带入“不直截了当”的领域)。您可以查看勾股定理。您知道“长边”的三角形(c^2),可以计算经度(a^2)和纬度(b^2)。

您应该能够应用我之前的部分代码片段来计算出
c = sqrt(a^2 + b^2)。

祝你好运。

于 2013-01-15T18:27:51.523 回答
5

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

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

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

于 2013-01-15T19:21:22.507 回答
2

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

示例:赤道上的 1° 经度约为 70 英里,而在北极附近则为几英尺。

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

于 2013-01-15T18:22:58.813 回答
2

dwight-degroff 的回答很好(谢谢,它帮助了我),但包含一个错误类型,这当然是非常不重要的。如果您想更正确(例如,您正在准备基于来自源的具有许多小数位的外部数据的测试),那么它应该是

纬度:1 公里 = 1 度/110.574 公里

代替:

纬度:1 公里 = 1 度/110.54 公里

因此对于纬度,它是:

    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;

但是,这两种修正都可以忽略不计。

于 2016-04-18T11:29:33.350 回答