【问题标题】:MongoDB Geolocation using with Spring MVCMongoDB 地理定位与 Spring MVC 一起使用
【发布时间】:2015-03-28 12:46:08
【问题描述】:

我尝试为我的应用程序实施 GPS 跟踪服务。我有一项服务可以将地理位置数据推送到 mongodb 中,效果很好。问题是每辆车必须每 20 秒发送一次数据。

作为一项要求,我应该在谷歌地图中显示最新的 24 小时数据,这使得接收庞大的数据集成为问题。 (一辆车为 4320)。在 mongo 或谷歌地图中是否有任何最佳实践来接收更少的数据并将一条线显示为历史? (响应为“json”)

【问题讨论】:

    标签: java spring mongodb geolocation


    【解决方案1】:

    我假设您的 JSON 如下所示:

    {
      id: 42,
      car_id: 102,
      coordinates: [
        { lat: ..., lon: ..., timestamp: ... },
        { lat: ..., lon: ..., timestamp: ... },
        { lat: ..., lon: ..., timestamp: ... },
        ...
      ]
    }
    

    如果使用 JSON,则只有 4 种方法可以减小大小:

    1. 删除未使用的数据

      1. 您可以从列表中删除重复的条目。如果汽车静止一小时,您将连续有 180 个相同的条目。您只能保留一条,因为地图上绘制的线条看起来不会有所不同。

      2. 如果您不需要 timestamp,请将其删除。如果数组是有序的,您可能不需要时间戳来进行排序。

    2. 缩小数据表示

      1. 如果您有 4320 个条目,每个字符都会有所不同。因此,您可以将 latlon 替换为 xy。这会将大小减少4*4320 = 17280 个字符。

      2. 更改表示。如果你不需要时间戳,你可以简单地将你的数据结构减少到coordinates: [[1,2],[3,4],[5,6],...](其中135lat部分和24、@987654335 @ 是坐标的lon 部分)。这可能会将 JSON 大小再减少 20-40%。

    3. 压缩数据

      1. 如果可能,请使用 GZIP(或任何其他压缩算法)。这样您就可以轻松地将 JSON 输出缩小到原始大小的 10-20%。
    4. 使用更紧凑的数据格式

      1. 查看 Protocol Buffers(来自 Google)。 Spring 支持它,并且还有一个 JavaScript 库。

      2. 还有一些其他协议可以减小数据大小。 IE。 Thrift(来自 Apache / Facebook),但我不知道 Spring / JavaScript 是否支持它。

    基本上你能做的就这些了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-27
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      • 2018-05-14
      相关资源
      最近更新 更多