可能重复:
What is the ideal data type to use when storing latitude / longitudes in a MySQL database?
我有GPS坐标和一些服务提供商转换后的地图坐标保存到dababase。我不知道哪种类型的数据对我来说是明智的,varchar,float,double?也很容易使用。
我应该根据这些数据进行查询,例如找到大于'或'小于'某个距离的位置。
“双”似乎没问题。但是当我查看它在db中保存的值时。看起来不太好。它最后添加了许多零,因为我必须设置一个十进制和长度,这只是基于我的数据的猜测。它可能会发生变化。事实证明,在有数据后我无法更改小数。如果我这样做的话,我只是浏览了所有现有的数据。
我不知道哪种方式有效且正确。
有没有人有这方面的经验?
答案 0 :(得分:4)
使用浮动而不是双倍,除非你是一个土木工程师,规划一个三英亩的停车场或一座桥。在这种情况下,您已经知道是否使用Lambert或Universal Transverse Mercator投影进行绘图工作,以及您基于海拔高度的数据。如果那个行话也可能是古代的Sanksrit,你只需要漂浮,而不是双重。
GPS坐标和用于将它们应用于商店查找器之类的东西的常规半正算法根本没有浮点数提供的精度。造成这种情况的原因很复杂,但它们与地球不是一个完美的球体这一事实有关。
顺便说一句,-xxx.yyyyy显示精度对MySQL来说很好。
SELECT FORMAT(latitude, 5) AS latitude
执行您需要从显示屏上删除大量尾随零的内容。
答案 1 :(得分:0)
我使用MySQL的DECIMAL
数据类型,它也处理坐标中的负值。