从距离计算经度



找到了很多答案来回答如何通过纬度/纬度计算距离的问题,而对于"反向"问题则一无所知。

我在 X 和 Y 中有一个分布和一个 GPS 点(纬度/纬度),但需要计算新点的坐标。

使用公式:

double deltaLat = dy / EARTH_RADIUS; 
double deltaLon = dx / EARTH_RADIUS;
double lat = locLat + Math.signum(dy) * Math.toDegrees(deltaLat); // formula correct
double lon = locLon + Math.signum(dx) * Math.toDegrees(deltaLon);

它对于计算纬度是准确的,但对于经度,我得到大约 10-15% 的误差。有人有同样的问题吗?有什么可能的公式可以通过位移计算经度吗?

你得到 10-15% 的经度误差的原因是,对于经度,你不能使用地球的半径来计算你的位移。 相反,您需要使用相应纬度处的"圆"半径。 因此,使用您的公式,您的经度计算应该更像

double deltaLon = dx / (EARTH_RADIUS * cos(locLat))

但是,这可能会在极点周围给您带来不希望的结果,因为cos(locLat)将接近 0,因此您可能希望为极点(甚至它们周围)设置一些特殊情况。 从逻辑上讲,如果你考虑一下,如果你在极点,沿着x轴移动任何距离无论如何都不会让你到达任何地方。

最简单但不是最好的解决方案是:

double deltaLat = dy / EARTH_RADIUS; // up-down
double deltaLon = dx / EARTH_RADIUS ; // left-right
double lat = locLat + Math.signum(dy) * Math.toDegrees(deltaLat); // formula correct
double lon = locLon + Math.signum(dx) * Math.toDegrees(deltaLon * 1.195);

最新更新