gpt4 book ai didi

java - MongoDB 地理定位与 Spring MVC 结合使用

转载 作者:行者123 更新时间:2023-11-30 08:18:31 25 4
gpt4 key购买 nike

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

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

最佳答案

我假设你的 JSON 看起来像这样:

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

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

  1. 删除未使用的数据

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

    2. 如果不需要,请删除时间戳。如果数组是有序的,则可能不需要时间戳来排序。

  2. 缩小数据表示形式

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

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

  3. 压缩数据

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

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

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

这基本上就是您所能做的。

关于java - MongoDB 地理定位与 Spring MVC 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29317326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com