2010-01-10 8 views
6

Cela peut être une question vraiment stupide, mais ...unités SQL Server question

Quelles unités ne Geography.STLength retour? Le official MSDN page ne dit rien sur les unités retournées, et this blog entry dit ici STLength() returns a float indicating the length of the instance in units. Oui, c'est vrai, il dit qu'il le renvoie en unités. Quelqu'un peut-il nous éclairer sur les unités renvoyées par STLength?

Pieds? Mètres? Pouces? Aidez-moi!

Répondre

8

Les unités dépendent entièrement de l'identifiant de référence spatial (SRID) des données géographiques/géométriques utilisées. Par convention, vous utiliserez généralement un SRID de "0" pour les types de géométrie si toutes les données se trouvent dans le même système d'unités. Cependant, le type de géographie utilise généralement un SRID de 4326, qui est l'ID de référence du système de coordonnées ellipsoïdales de latitude/longitude appelé WGS 84. Lorsque vous spécifiez des coordonnées de point dans ce système, il est en degrés d'angle de latitude et de longitude, plutôt qu'à une certaine distance d'une origine. Les calculs de longueur et de surface sur les points de ce système de référence renverront des résultats complètement différents des calculs géométriques sur les mêmes positions ponctuelles (pour un bon exemple see Differences between Geography and Geometry here, et pour why this happens, see here). Par conséquent, si vos colonnes de données ont été créées avec un SRID de "0", le système est défini comme étant sans unité et vous aurez besoin de métadonnées sur le modèle de données pour déterminer les unités. Si elles ont été définies avec un vrai SRID, vous pouvez utiliser cette requête:

SELECT spatial_reference_id 
    , well_known_text 
    , unit_of_measure 
    , unit_conversion_factor 
FROM sys.spatial_reference_systems 

pour vérifier quelles unités SRID représente. La plupart sont en mètres, mais quelques-uns sont en pieds.