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

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

最终编辑 :查看大圆距离和测地线,以发现您在这个问题中真正要求的复杂性。 这无疑是出于我对数学的熟悉。

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

有关此问题的答案,请参阅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; 

更有可能的是,你需要知道南北和东西方向的距离(并将其带入“不直截了当”的境界。你可以看看毕达哥拉斯定理 。你知道“长边”三角形(c ^ 2)并且可以计算经度(a ^ 2)和纬度(b ^ 2)。

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

祝你好运。

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

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

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

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

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

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

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

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

代替:

纬度: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; 

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