我已将纬度和经度存储在不同的字段中。我得到了Lat&来自谷歌的Lng坐标,并使用它们使用一些公式查找附近的地方。现在,有时纬度和经度值达到15个小数位,如下所示 - > 15.123456789000001。什么是存储这些值的最佳数据类型?现在我使用Double来存储纬度和经度坐标。
先谢谢
答案 0 :(得分:24)
99%的时间,您选择的任何浮点数据类型都应该足够了。
是的,我知道他们无法始终精确准确地将值表示为小数点后15位,但无关紧要。 Lat / long到15位小数是指定一个位置,其具有(声称的)精度,其顺序为一对氢原子的宽度。您只需要六位小数就可以将精度提高到一米之内,这对大多数情况来说已经足够了。很少应该需要超过厘米级的精度(8个位置),10或甚至100米的精度对于许多应用来说已经足够了。
当然,这一切都假设原始数据源首先是准确的。我的手机的GPS很少比10米以内更准确地说准确度(即便如此,其地图的一半时间没有显示我在10米圆圈内的实际位置,它声称我应该是这样),因此存储位置以获得更高的精度将毫无意义误导。当然,您可能正在使用比集成到手机中的廉价GPS接收器更准确的数据源,但即便如此,它实际上也不可能一直精确到分子级。
答案 1 :(得分:4)
我使用过DECIMAL数据类型。
CREATE TABLE IF NOT EXISTS `example` (
`lat` decimal(18,15) DEFAULT NULL,
`long` decimal(18,15) DEFAULT NULL
);
答案 2 :(得分:1)
您可以尝试将Spatial Extensions与GIS配合使用。 看http://dev.mysql.com/doc/refman/5.1/en/spatial-extensions.html