请记住,我将在lat / long对上执行计算,什么数据类型最适合与MySQL数据库一起使用?
当前回答
MySQL使用double为所有浮点数… 所以使用double类型。在大多数情况下,使用float会导致不可预测的四舍五入值
其他回答
当我从ARINC424构建导航数据库时,我做了相当多的测试,并回顾了代码,我使用了DECIMAL(18,12)(实际上是NUMERIC(18,12),因为它是firebird)。
浮点数和双精度数没有那么精确,可能会导致舍入错误,这可能是一件非常糟糕的事情。我不记得我是否发现了任何有问题的真实数据——但我相当肯定无法准确地存储在浮点数或双精度数中可能会导致问题
关键是,当使用角度或弧度时,我们知道值的范围——小数部分需要最多的数字。
MySQL空间扩展是一个很好的选择,因为它们遵循OpenGIS几何模型。我没有使用它们,因为我需要保持数据库的可移植性。
PostGIS中的空间函数比MySQL中的空间函数更具功能性(即不局限于BBOX操作)。看看:链接文本
我们将纬度/经度X 1,000,000作为数字存储在oracle数据库中,以避免使用双数舍入错误。
已知纬度/经度精确到小数点后第6位是10厘米,这就是我们所需要的。许多其他数据库也将lat/long存储到小数点后第6位。
不需要走太远,根据谷歌地图,最好是FLOAT(10,6)的纬度和液化天然气。
谷歌提供了一个从开始到结束的PHP/MySQL解决方案的例子“商店定位器”应用程序与谷歌地图。在本例中,它们将lat/lng值存储为“Float”,长度为“10,6”
http://code.google.com/apis/maps/articles/phpsqlsearch.html