0

可能重复:
在 MySQL 数据库中存储纬度/经度时使用的理想数据类型是什么?

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

我应该根据这些数据进行查询,例如查找“大于”或“小于”特定距离的位置。

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

我不知道哪种方式有效且正确。

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

4

2 回答 2

4

使用浮动而不是双重,除非您是规划三英亩停车场或桥梁的土木工程师。在这种情况下,您已经知道您是使用兰伯特投影还是通用横轴墨卡托投影进行制图工作,以及您的高程基于哪个基准。如果该行话对您来说也可能是古代梵语,那么您只需要浮动,而不是双重。

GPS坐标和用于将它们应用于商店查找器之类的常规haversine算法根本没有比float提供的精度更高。造成这种情况的原因很复杂,但它们与地球不是一个完美的球体这一事实有关。

顺便说一句,-xxx.yyyyy 显示精度对 MySQL 来说还不错。

SELECT FORMAT(latitude, 5) AS latitude 

做您需要从显示器上去除大量尾随零的操作。

于 2012-11-27T16:20:34.917 回答
0

我使用 MySQL 的DECIMAL数据类型,它也处理坐标中的负值。

于 2012-11-27T16:43:04.203 回答