mongodb - Redis Geo - 返回两个地点/经纬度之间的不正确距离

标签 mongodb redis geolocation stackexchange.redis node-redis

我正在使用 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 公里。

我相信谷歌距离是正确的,所以任何人都可以帮我解决我在 Redis 中做错的事情。有没有其他方法可以获取正确的距离,因为我想使用 redis。

最佳答案

这是直接距离(即直线距离)与陆路交通(道路)距离之间的差异。

对于future reference :

enter image description here

关于mongodb - Redis Geo - 返回两个地点/经纬度之间的不正确距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38197115/

相关文章:

redis - 使用 Redis 的评论系统 - 使用列表?

php - 列出用户位置附近的地理位置

java - Android 中 GPS_PROVIDER 或 NETWORK_PROVIDER 的位置不一致

mongodb - 嵌入式文档属性的多次更新

mongodb - 通过 MongoDB Compass 社区连接到 EC2

php - 调用未定义的方法 MongoDB\Driver\ReadConcern::isDefault()

redis - Redisson内部是如何实现Redis命令的?

mongodb - Mongo "Unrecognized pipeline stage name: ' $filter'"

redis - 在 redis sentinel 客户端中复活 master 的问题

javascript - 谷歌地图本地化