【发布时间】:2010-10-11 12:59:18
【问题描述】:
在我的代码中,我必须在成对的纬度/经度值之间进行大量距离计算。
代码如下所示:
double result = Math.Acos(Math.Sin(lat2rad) * Math.Sin(lat1rad)
+ Math.Cos(lat2rad) * Math.Cos(lat1rad) * Math.Cos(lon2rad - lon1rad));
(lat2rad 例如纬度转换为弧度)。
我已将此功能确定为我的应用程序的性能瓶颈。有什么办法可以改善吗?
(我不能使用查找表,因为坐标是变化的)。我还查看了this question,其中建议使用网格之类的查找方案,这可能是一种可能性。
感谢您的宝贵时间! ;-)
【问题讨论】:
-
你应该知道,这个算法只有在你假设地球是一个完美的球体并且近似值和真实答案之间的差异可能非常显着(至少在我的世界里)时才是正确的。 en.wikipedia.org/wiki/WGS84
-
确实如此。您可能真的需要计算大圆路线。
-
是的,我知道,但对于我的情况,近似值是可以的。据我所知,由于地球自转,赤道附近的偏差最大。
-
如果(正如您在我的回答的 cmets 中所说)该行需要 分钟 才能运行 - 还有其他事情!
标签: c# geolocation