2012-11-16 37 views

回答

7

如果我是你,我會使用TRACK和POINT表。

軌道表將包含一個行爲每個不同的軌道

TRACK_ID  int not null (PK) 
    NAME   varchar(40) 
    DESCRIPTION varchar(255) 
    other identifying information 

點表將包含每個軌道,一個多行的每個點在軌道

POINT_ID  int not null (PK) 
    TRACK_ID  int not null (FK to TRACK) 
    LAT   float degrees .. positive means north 
    LONG   float degrees .. positive means east, negative means west 
    ALT   float (elevation if you have it) 
    TS   timestamp of point 

一對夫婦的筆記對這個。保持POINT表格的行較短;你將會有很多這樣的設備,並且你希望能夠迅速地將它們緊縮。另外,不要屈服於使用double而不是float的誘惑;浮點數據格式對於典型點具有很高的精度(除非您是土地測量師並且瞭解像通用橫向墨卡託投影之類的東西)。

+0

不要在Lat/Long中使用浮點數。你不需要對簡單十進制數字進行浮點運算,你最終會得到奇怪的舍入錯誤,比如56.56837000000000001(即使這不是你插入到數據庫中的)。只要使用十進制(9,6),如果你的數據庫支持它。 – NickG

+0

@NickG,我恭敬地不同意。對數字而言,你是對的,比如金錢,但GPS數據本質上是基於測量的,也就是說,受到它自己的epsilon精度限制。 https://en.wikipedia.org/wiki/Machine_epsilon FLOAT具有適合商用GPS的精確度。 –

+0

然後我們必須同意不同意:)你永遠不需要的最大數字是180,而最小的數字(考慮到GPS的固有不準確性)大約有7位小數,所以浮點表示是不必要的。參見:http://stackoverflow.com/questions/11041818/rails-3-float-or-decimal-for-gps-coordinates – NickG

相關問題