Données géospatiales en SQL

J'ai expérimenté avec le type de données géocharts récemment et je l'adore. Mais je ne peux pas décider si je convertis à partir de mon schéma actuel, qui stocke la latitude et la longitude dans deux champs numériques séparés (9,5) au type de géographie. J'ai calculé la taille des deux types et Lat / Long représente 28 octets pour un seul point alors que le type géographique est 26. Pas un gain important dans l'espace mais une énorme amélioration dans les opérations géospatiales (intersection, mesure de distance, etc. ) qui sont actuellement traitées en utilisant des procédures stockées maladroites et des fonctions scalaires. Ce que je me request, ce sont les indices. Le type de données de géographie exigera-t-il plus d'espace pour l'indexing des données? J'ai le sentiment que ce sera le cas, même si datatables réelles stockées dans les colonnes sont less, je pense que la façon dont fonctionnent les indices géospatiaux entraînera finalement une plus grande allocation d'espace pour eux.

PS comme une note de côté, il semble que SQL Server 2008 (pas R2) ne cherche pas automatiquement à travers des indices géospatiaux, sauf si explicitement dit à l'aide de la clause WITH (INDEX ())

À mon avis, vous devez absolument utiliser les types spatiaux seulement. Le type spatial est optimisé pour les requêtes spatiales et si les requêtes spatiales sont ce dont vous avez besoin, je pense que c'est un choix facile.

Comme un effet secondaire, vous pouvez vous débarrasser de vos fonctions et fonctions géocharts, car elles sont (probablement) embeddedes dans SQL Server 2008. Cependant, vous devrez peut-être passer du time à optimiser les index spatiaux, mais cela dépend de votre cas spécifique .

Je comprends que vous essayez de décider entre garder l'un des deux, mais vous pourriez envisager de garder les deux. Si vous exportez vos données dans des files de forms, il est courant de laisser le champ Latlon Lon avec le champ Geom.

Je garderais les deux. Il peut être utile d'interroger facilement les coordonnées d'origine d'une entité particulière sans nécessiter d'opérations spatiales. Vous avez l'avantage de connaître les points d'origine ainsi que la possibilité de créer une nouvelle geometry au cas où vous en auriez besoin dans un système de coordonnées différent (comme si vous aviez votre geometry dans une projection particulière qui perdrait beaucoup de précision en allant à un autre).