2011-07-12 7 views
4

Je construis une application de cartographie mobile et je veux stocker des données de suivi GPS, des waypoints, etc. dans une base de données (SQL CE 4.0). Cela signifie que je n'ai pas accès à des types de données de base (http://msdn.microsoft.com/en-us/library/ms172424(SQL.110).aspx)Quelle est la meilleure façon de stocker des données de coordonnées géographiques dans une base de données

  1. le système de coordonnées dois-je utiliser (Lat/Long, WGS 84, ...)
  2. Quel type de données proposeriez-vous donné la réponse à 1.

opérations Je suis susceptible de vouloir faire

  • Trouver tous les points d'intérêt dans la distance x
  • Calcu la distance fin entre les points x et y
  • Trouver le plus proche point de passage au point x
+0

Si vous n'êtes pas corrigé sur SQL CE, le projet [spatialite] (http://www.gaia-gis.it/spatialite/) peut vous intéresser. – steenhulthin

Répondre

3

WGS84 est un système géodésique (de référence), et non pas le système de coordonnées - littéralement (W) orld (G) eodetic (S) ystem 19 (84). Donc, je ne suis pas sûr à 100% de ce que vous demandez.

Si vous demandez à décider quelle référence utiliser, cela dépend de ce que vous avez l'intention de faire avec les données et les emplacements auxquels vous avez affaire. Par exemple, si vous utilisez uniquement des fonctionnalités basées sur le Royaume-Uni et que vous souhaitez afficher des points sur des cartes de système d'exploitation, alors OSGB36 serait le plus logique. Si vous avez besoin d'un système de référence mondial et que vous souhaitez utiliser quelque chose comme Google Maps, alors WGS84 serait le meilleur. Il est à noter que WGS84 est la référence standard par défaut pour les coordonnées stockées dans les unités GPS récréatives et commerciales.

Cependant, tous ces points de référence définissent des points basés sur un système de coordonnées géographiques de latitude et de longitude - ils utilisent donc tous le même 'système de coordonnées'. La conversion entre datums à l'aide d'une matrice de transformation Helmert est également possible afin que vous ne soyez jamais bloqué même si un autre système serait plus applicable dans un cas particulier. Tout cela mis à part, si vous utilisez SQL CE, je suggère d'utiliser une simple table pour stocker les waypoints. Quelque chose comme ce qui suit devrait bien fonctionner dans beaucoup de cas. Vous auriez besoin de décider du niveau de précision dont vous avez besoin pour les coordonnées. par exemple.

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 
)' 

Il est évident que vous ne pouvez pas besoin des domaines tels que « nom » et « type », ils sont simplement là pour montrer comment on peut distinguer les points de passage d'une manière lisible par l'homme.

Questions connexes