2011-07-12 78 views
4

我正在構建一個移動地圖應用程序,並且我想將GPS軌跡數據,航點等存儲在數據庫中(SQL CE 4.0)。這意味着我只能獲得基本的數據類型(http://msdn.microsoft.com/en-us/library/ms172424(SQL.110).aspx什麼是將地理座標數據存儲在數據庫中的最佳方式

  1. 什麼座標系統,我應該用(緯度/長,WGS 84,......)
  2. 什麼數據類型,你會建議給出的答案爲1。

操作我可能要做

  • 求x的距離之內利息的所有點
  • Calcu點X和Y之間晚距離
  • 查找最接近的路點到點X
+0

如果您未固定在SQL CE上,[spatialite](http://www.gaia-gis.it/spatialite/)項目可能會引起您的興趣。 – steenhulthin

回答

3

WGS84是大地測量系統(基準),而不是座標系統 - 字面(W)年世界(G)eodetic(S)ystem 19( 84)。所以我不是100%確定你在問什麼。

如果您在詢問是否決定使用哪個數據,那麼這取決於您打算如何處理數據和處理的位置。例如,如果您只是處理基於英國的功能,並希望在操作系統映射上顯示點,那麼OSGB36將是最有意義的。如果您需要世界各地的參考系統並希望使用諸如Google Maps之類的東西,那麼WGS84將是最好的選擇。值得注意的是,WGS84是存儲在娛樂和商業GPS單元中的座標的默認標準基準。

但是,所有這些基準都基於經度和緯度的地理座標系定義點 - 因此它們都使用相同的「座標系」。使用Helmert變換矩陣進行基準之間的轉換也是可能的,所以即使某種替代系統更適用於特定情況,也不會卡住。

除此之外,如果您使用SQL CE,我會建議使用一個簡單的表來存儲航點。類似以下內容的應用在很多情況下都能很好地工作。您需要確定座標所需的精度級別。例如

CREATE TABLE 'waypoints' (
'id' INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 
'name' VARCHAR(60) NOT NULL , 
'type' VARCHAR(30) NOT NULL , 
'latitude' FLOAT(10, 6) NOT NULL , 
'longitude' FLOAT(10, 6) NOT NULL 
)' 

顯然,你可能並不需要的字段,如「名稱」和「類型」,他們只是在那裏展示一個可以如何區分航點人類可讀的方式。

相關問題