我正在开发一个带有空间数据的应用程序。在这里,我需要找到从质心到一点的距离。可以知道如何在Java中将英里转换为度数吗?
4 回答
最终编辑:查看大圆距离和测地线,以发现您在这个问题中真正提出的问题的复杂性。诚然,这完全出于我对数学的熟悉程度。
[出于历史原因留下原始建议。虽然碎片可能对您有所帮助,但它们不会直接回答您的问题。]
有关此问题的答案,请参阅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)。
祝你好运。
如果这真的是一个直截了当的问题,我们应该忽略纬度和经度,只看两点的半径之间的角度,使得它们之间的距离,沿着包含这两个点的大圆,是 m 英里。
为了让它保持直截了当,我们应该假设地球是球形的,因此答案与位置无关。我使用的平均半径为 3,958.761 英里。
1 弧度是 3,958.761 英里长的线的角度,因此 m 英里长的线的角度是 m/3,958.761 弧度。如果您想要以度为单位的角度,请使用 Math.toDegrees。
用度数表示距离是不正确的方法,因为距离度数在地球上的所有位置上并不相等,并且纬度和经度的表示方式不同。
示例:赤道上的 1° 经度约为 70 英里,而在北极附近则为几英尺。
纬度不会在地球表面发生变化,但是不沿着子午线或平行线的距离呢?你会代表哪些措施?
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;
但是,这两种修正都可以忽略不计。