2012-11-27 71 views
0

可能重复:
What is the ideal data type to use when storing latitude/longitudes in a MySQL database?我应该使用double类型来保存mysql数据库中的坐标吗?

我有GPS坐标和一些服务提供商的转换地图坐标保存到dababase。我不知道哪种类型的数据对我来说是明智的保存,varchar,float,double?也很容易使用。

我应该根据这些数据进行查询,例如查找位置'大于'或'小于'某个距离。

“双”似乎没问题。但是当我看着它保存在数据库中的值。它看起来不太好。它添加了很多零到最后,因为我必须设置一个小数和长度,这只是基于我拥有的数据的猜测。它可能会改变的风险。事实证明,我不能在小数点后面有数据。我只是查看了所有现有的数据,如果我这样做。

我不知道哪种方法是高效和正确的。

有没有人有这方面的经验?

+0

你有mysql作为db。但是你用什么前端?所以你可以使用一个数据类型,可以很容易地从mysql转换/解析到你的前端语言:)相应地选择。否则,你只会知道你保存数据的XYZ类型后没有解析器..但是,虽然最不可能的。 – bonCodigo

回答

4

使用float而不是double,除非您是一位计划三英亩停车场或桥梁的土木工程师。在这种情况下,您已经知道您是使用Lambert还是Universal Transverse Mercator投影来绘制您的地图,以及您将基准高度的基准。如果这句古语可能在古桑克斯特里给你,你只需要漂浮,而不是双倍。

GPS坐标和用于将他们的东西像商店取景器根本不具备更高的精度比浮动提供了传统的半正矢算法。造成这种情况的原因很复杂,但它们与地球不是一个完美的领域有关。

顺便说一句,-xxx.yyyyy显示精度对于MySQL来说很好。

SELECT FORMAT(latitude, 5) AS latitude 

做什么你需要从你的显示器上去掉大量尾随零。

0

我使用MySQL的DECIMAL数据类型,也可以用来处理在坐标系负值。

相关问题