2012-02-10 43 views
3

我目前在数据库中存储纬度/经度值为6位小数精度。但是,我需要在此数据库中存储的某些值具有12位精度。我的数据库目前设置lat和长ASTMySQL存储经度,高度精度的经度

FLOAT(10,6)

是否有可能设置的存储类型,使得它可以处理任6十进制或12位的十进制纬度/经度值?

+0

小数点后12位描述的纬度/经度位置等于千分尺精度。我很好奇应用程序需要在地球上描述一个微米级别的位置? – TreyA 2012-02-12 14:26:48

回答

4

使用DOUBLE数据类型。

您应该可以非破坏性地改变您现有的桌子以这种方式工作。例如,

alter table `mytable` 
    change `LAT` `LAT` double NULL , 
    change `LONG` `LONG` double NULL 

但请注意不要夸大数据的准确性。一个普通的float的32位浮点经纬度值(最好的准确度)的epsilon在地面上只有几厘米。 double的小数点距离很小。几乎不可思议的是,你的纬度/经度信息是精确的。如果是这样,除非你使用复杂的地图投影,否则它并不重要:计算距离的典型半散射公式假定地球是一个完美的球体。事实并非如此。地球的赤道凸起足够大,以使得球形假设的距离更精确,而数厘米的距离更精确。

+1

注意:当Ollie表示浮球的最佳准确度只有几厘米时,只有在纬度/经度点0,0(主要子午线与赤道相交处)附近才是真实的。在美国,用浮球来描述厘米精度的位置是不可能的。经纬度最好使用双倍。 – TreyA 2012-02-12 14:37:49