2012-02-10 42 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