Redis Geo - Returns 两个 places/lat-longs 之间的距离不正确

Redis Geo - Returns incorrect distance between two places/lat-longs

我正在使用 Redis Geo 查找两个地点或经纬度之间的距离,但是当我将结果与 google 距离矩阵 api 进行比较时,结果之间存在很大差异。

这是我的场景:

运行 redis CLI 中的以下内容

  1. 运行这个命令

    GEOADD Sicily 13.349350 38.272273 "Palermo" 15.089875 37.508123 "Catania"
    
  2. 运行这个命令

    GEORADIUS Sicily 13.349350 38.272273 200 km WITHDIST
    

得到这个结果

    1) 1) "Palermo"
    2) "0.0001"
    2) 1) "Catania"
    2) "174.8263"

Redis 说卡塔尼亚距离巴勒莫 174.8263 公里。

在使用 google api 获取这两个经纬度之间的距离时,我得到了不同的结果:

    https://maps.googleapis.com/maps/api/distancematrix/json?units=metrics&origins=38.272273,13.349350&destinations=37.508123,15.089875

Google 说卡塔尼亚距离巴勒莫 233 公里。

我也用了mongodb的$geonear,结果和redis差不多:

Mongodb说卡塔尼亚距离巴勒莫174.971公里。

我相信 google 距离是正确的,所以任何人都可以帮助我解决我在 Redis 中做错了什么。有没有其他方法可以像我想使用redis那样获得正确的距离。

这就是直达距离(如乌鸦飞行)和陆路运输距离(道路)之间的差异。

对于future reference