所以,我需要计算两点(经纬度对)之间的距离。我在 Movable Type Scripts 中读到过半正矢公式和等角柱近似.
由于我只想计算短距离(小于 4 KM),等距矩形公式是一个很好的近似值吗?
另外,我读过有关 MySQL 数据库中的经纬度存储的信息 in Google Developers documentation他们实现了半正矢公式,如下所示:
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查询中的点(如示例中所示)和通过代码过滤它们之间有很大的性能差异吗?
最佳答案
当我在更远的距离(1000 公里,英国境内)测试半正矢 v 等距矩形时,差异约为 0.1%。因此,对于 4 公里或更短的距离,您最好使用等距柱状投影来获得速度,除非您需要最大精度。
关于distance - 半正矢与等距矩形近似,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23188338/