2

所以,我需要计算两点之间的距离(经纬对)。我在Movable Type Scripts中阅读了有关 Haversine 公式和 Equirectangular approximation 的内容。

由于我只想计算短距离(小于 4 公里),Equirectangular 公式是一个很好的近似值吗?

另外,我在 Google Developers 文档中阅读了 MySQL 数据库中的 lat-lon 存储,他们实现了像这样的 Haversine 公式:

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;

我的最后一个问题是,过滤 sql 查询中的点(如示例中)和通过代码过滤它们之间是否存在很大的性能差异?

4

1 回答 1

2

当我在更大的距离(英国境内 1000 公里)上测试 haversine v equirectangular 时,差异约为 0.1%。因此,对于 4 公里或更短的距离,除非您需要最大精度,否则您最好使用 equirectangular 来获得速度。

于 2014-05-20T09:04:42.287 回答