gpt4 book ai didi

latitude-longitude - 您将如何最有效地存储纬度和经度数据?

转载 作者:行者123 更新时间:2023-12-04 07:58:23 24 4
gpt4 key购买 nike

这个问题来 self 布置的家庭作业。您可以将存储系统基于以下三种格式之一:

DD MM SS.S

DD MM.MMM

DD.DDDDDD

您想通过使用尽可能少的字节来最大化可以存储的数据量。

我的解决方案基于第一种格式。我使用 3 个字节作为纬度:8 位用于 DD(-90 到 90),6 位用于 MM(0-59),10 位用于 SS.S(0-59.9)。然后我使用 25 位作为经度:9 位用于 DDD(-180 到 180),6 位用于 MM,10 位用于 SS.S。这个解决方案不太适合字节边界,但我认为下一个读数可以紧跟在前一个读数之后存储,8 个读数将仅使用 49 个字节。

我很好奇其他人能想出什么方法。有没有更有效的方法来存储这些数据?请注意,我考虑过基于偏移量的存储,但问题没有说明读数之间的值可能会发生多少变化,因此我假设任何变化都是可能的。

最佳答案

您建议的方法不是最优的。您正在使用 10 位(1024 个可能的值)来存储范围 (0..599) 中的值。这是对空间的浪费。

如果您要为纬度使用 3 个字节,则应将范围 [0, 2^24-1] 映射到范围 [-90, 90]。因此,每个 2^24 值代表 180/2^24 度,即 0.086 秒。

如果您只需要 0.1 秒的精度,则纬度需要 23 位,经度需要 24 位(您将获得 0.077 秒的精度)。总共有 47 位,而不是你的 49 位,精度更高。

我们可以做得更好吗?

0.1 秒精度所需的确切位数是 log2(180*60*60*10 * 360*60*60*10) < 46.256。这意味着您可以使用 46256 位(5782 字节)来存储 1000 个(纬度、经度)对,但所涉及的数学将需要处理非常大的整数。

我们可以做得更好吗?

这取决于。如果你的数据集有浓度,你可以只存储一些点和这些点的相对距离,使用更少的位。应使用聚类算法。

关于latitude-longitude - 您将如何最有效地存储纬度和经度数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4930210/

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