4
在服務器上存儲GPS座標(軌跡)的最佳方式是什麼(MySQL或Oracle或可能在任何文件中)?例如,它是如何實現GoogleMaps的?我想保存並比較相同部分的曲目。在服務器上存儲GPS座標(軌跡)的最佳方式
P.S.我有所有必要的數據。
在服務器上存儲GPS座標(軌跡)的最佳方式是什麼(MySQL或Oracle或可能在任何文件中)?例如,它是如何實現GoogleMaps的?我想保存並比較相同部分的曲目。在服務器上存儲GPS座標(軌跡)的最佳方式
P.S.我有所有必要的數據。
如果我是你,我會使用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的誘惑;浮點數據格式對於典型點具有很高的精度(除非您是土地測量師並且瞭解像通用橫向墨卡託投影之類的東西)。
不要在Lat/Long中使用浮點數。你不需要對簡單十進制數字進行浮點運算,你最終會得到奇怪的舍入錯誤,比如56.56837000000000001(即使這不是你插入到數據庫中的)。只要使用十進制(9,6),如果你的數據庫支持它。 – NickG
@NickG,我恭敬地不同意。對數字而言,你是對的,比如金錢,但GPS數據本質上是基於測量的,也就是說,受到它自己的epsilon精度限制。 https://en.wikipedia.org/wiki/Machine_epsilon FLOAT具有適合商用GPS的精確度。 –
然後我們必須同意不同意:)你永遠不需要的最大數字是180,而最小的數字(考慮到GPS的固有不準確性)大約有7位小數,所以浮點表示是不必要的。參見:http://stackoverflow.com/questions/11041818/rails-3-float-or-decimal-for-gps-coordinates – NickG