存储经度和纬度值需要使用哪种数据类型?

13 浏览
0 Comments

存储经度和纬度值需要使用哪种数据类型?

我想在数据库中存储经纬度的值,但我对应该使用哪种数据类型以及存储经纬度值所需的最大和最小长度有些困惑。

0
0 Comments

这个问题的出现是因为在存储经度和纬度值时需要选择适当的数据类型。之前的讨论中提到可以使用DECIMAL数据类型,但没有提及MySQL的GIS数据类型。可能POINT(或其他几何数据类型)在这里也可以很好地工作。

之前的讨论得出结论,使用DECIMAL(10, 8)来存储纬度,DECIMAL(11, 8)来存储经度是合适的。这个精度可以提供约1毫米的分辨率,这对于大多数使用场景来说是过度的。

那么使用哪种数据类型呢?我仍然倾向于使用为特定用途设计的本机数据类型,即使分辨率比所需的要高,这样我们就可以让MySQL处理涉及的任何数学运算。除了浪费存储开销之外,还有其他不使用GIS数据类型的原因吗?

我想要了解应用程序如何查询经纬度数据。例如,JDBC如何将POINT映射到Java类型是不清楚的。使用DECIMAL可能会更容易。

此外,MySQL直到5.6版本才在InnoDB中支持POINT,并且直到5.7版本才支持GIS类型的空间索引。如果你被困在使用旧版本的MySQL,我更倾向于使用DECIMAL而不是使用MyISAM表。

在这里我添加了更多选择。

0