我应该在GPS数据库中存储多less位有效数字?

我有我的MySQL数据库经度和纬度坐标(GPS数据)。

它目前存储为:

column type ------------------------ geolat decimal(10,6) geolng decimal(10,6) 

问题:我是否真的需要像decimal(10,6)那样大的数据types才能正确存储坐标数据?

由于我有经度和纬度的综合指数,这个指数的规模是巨大的。 如果我可以在不损害任何东西的情况下做到这一点,那就太好了。

WGS84基准通常以十进制表示,通常有5个小数位,因此对于纬度(-90到+90),可以使用十进制(7,5)(-90.00000到90.00000)作为经度,你可以使用十进制(8,5)(-180.00000至180.00000)。

.00001 在赤道附近提供了一米左右的精度

DECIMAL / NUMERIC数据types是一个固定的精度缩放整数 ,范围的正负两部分总是可用 – 它们不影响精度或缩放比例(显然存储需要存储空间,但是没有select关于DECIMAL)

我一直使用小数点后的六位数字。 我曾经在军事合同下做GIS工作,这已经足够了。

请记住,减less数据比增加数据更容易。 通常,提高数据准确性甚至不可能重新计量。 而重新计算是有代价的。 不知道你的情况或行业,我会说尽可能多的数据/特异性尽可能。

你实际使用的数据可以从这个集合中挑选出来。 如果您最终需要更高的特异性,您可以随时重新计算,而无需重新计量。

另外,我不确定索引原始数据是不是最好的,因为它不是一组离散的元素。 创build一个精度较低/数据点较小的表会使索引更小。

如果这是房地产,你真的有这么多的房子,每行2字节将是明显的? 除非有充分的理由,否则我会尽可能保持精确度。

这取决于你希望你的定位能力有多精确。 显然,越大越精确,越小,结果越宽。 我build议保持你的价值更大,因为它不是真正的数据。

在NMEA纬度/经度输出中,常规的GGA偏差在赤道只有大约10米分辨率的3个十进位。 一些品牌增加了一个自定义的额外数字给1米。

4位数mm / mm也是常见的。

如果你使用的是高精度的RTK-GPS,你可能需要更多的地方来获得毫米的精度

您也可以尝试以不同单位存储(和/或使用)您的坐标。 我所做的一个项目,我们所有的坐标都是以毫秒为单位存储的(也许是整数,已经有几年了)。 这是部分速度和存储空间(这是一个embedded式系统)。 但是同样的逻辑也适用于这里。

如果所有的坐标都在一个特定的区域,修正一些中心点(即平均当前点和圆来获得一个数字,你可以大声说出来),然后存储相对于这个点的坐标。 这样,你可以跳过前2-4个最重要的数字,这可以节省很多钱。 但是请记住只能通过一个Class或者VIEW来处理这些数据,这个数据可以给出真正的WGS84坐标。