如何将距离(英里)转换为度?
我正在使用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;
但是,两次更正都可以忽略不计。