105 votes

Ce qui ' s la meilleure façon de stocker les coordonnées (longitude/latitude, de Google Maps) dans SQL Server ?

Je suis la conception d’une table dans SQL Server 2008 qui stocke une liste des utilisateurs et une coordination de Google Maps (longitude et latitude).

Me faudra-t-il deux champs, ou peut-il être fait avec 1 ?

Ce qui est le meilleur (ou la plus courant)-type de données à utiliser pour stocker ce type de données ?

63voto

dan90266 Points 609

Fair Warning ! Avant de prendre l’avis d’utiliser le type GEOGRAPHY, assurez-vous que vous ne prévoyez pas sur l’utilisation de Linq ou Entity Framework pour accéder aux données, car il n’est pas pris en charge (à partir de novembre 2010) et vous serez triste !

56voto

Craig Bovis Points 966

Vous devriez jeter un oeil à la nouvelle Spatiale des types de données qui ont été introduites dans SQL Server 2008. Ils sont conçus spécifiquement ce genre de tâche et de faire de l'indexation et l'interrogation des données beaucoup plus facile et plus efficace.

http://msdn.microsoft.com/en-us/library/bb933876(v=sql.105).aspx

http://blogs.technet.com/andrew/archive/2007/11/26/sql-server-2008-spatial-data-types.aspx

29voto

powtac Points 18619

Je ne connais pas la réponse pour SQL Server, mais...

En MySQL , enregistrez-le sous``

C’est la recommandation officielle de la documentation développeur Google.

21voto

R. Lawson Points 121

Je déteste être allant à contre-courant de ceux qui ont dit "ici, c'est un nouveau type, il faut bien l'utiliser". Le nouveau SQL Server 2008 spatiale des types de certains pros - à savoir l'efficacité, cependant, vous ne pouvez pas aveuglément dire de toujours utiliser ce type. Cela dépend vraiment de certains image plus grande de questions.

Comme un exemple, l'intégration. Ce type a un équivalent de type .Net - mais quid de l'interopérabilité? Ce que le soutien ou l'extension des versions plus anciennes de .Net? Ce sujet de l'exposition de ce type à travers la couche de service à d'autres plates-formes? Ce sujet de la normalisation des données - peut-être vous êtes intéressé à lat ou long comme autonome des éléments d'information. Peut-être que vous avez déjà écrit une logique métier complexe à gérer long/lat.

Je ne dis pas que vous ne devriez pas utiliser le type spatial - dans de nombreux cas, vous devriez. Je dis juste que vous devriez vous poser d'autres questions essentielles avant d'aller en bas de ce chemin. Pour moi de répondre à votre question avec le plus de précision j'aurais besoin d'en savoir plus sur votre situation spécifique.

Le stockage de long/lat séparément ou dans un type spatial sont à la fois des solutions viables, et on peut être préférable à l'autre en fonction de votre propre situation.

15voto

Pure.Krome Points 28473

Ce que vous voulez faire est de stocker la Latitude et la Longitude de la nouvelle SQL2008 type Spatial -> GÉOGRAPHIE.

Voici une capture d'écran d'un tableau, que j'ai.

alt text

Dans ce tableau, nous avons deux champs qui stockent des données géographie.

  • Limite: c'est le polygone qui est le code postal limite
  • CentrePoint: c'est la Latitude / Longitude point qui représente le visual point milieu de ce polygone.

La raison principale pourquoi vous voulez l'enregistrer dans la base de données comme un type de GÉOGRAPHIE est de sorte que vous pouvez tirer profit de toutes les méthodes SPATIALES off -> par exemple. Point dans le Poly, la Distance entre deux points, etc.

BTW, nous utilisons également Google Maps API pour récupérer les données de latitude/longitude et la stocker dans notre base de données Sql 2008 -- si cette méthode ne fonctionne pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X