2010-01-10 12 views
6

Esto puede ser una pregunta realmente tonta, pero ...unidades SQL Server pregunta

¿Qué unidades devuelve Geography.STLength? El official MSDN page no dice nada sobre las unidades devueltas, y this blog entry aquí dice STLength() returns a float indicating the length of the instance in units. Sí, es correcto, dice que lo devuelve en unidades.

¿Alguien puede arrojar algo de luz sobre qué unidades devuelve STLength? Pies? Metros? ¿Pulgadas? ¡Ayuda!

Respuesta

8

Las unidades dependen completamente del ID de referencia espacial (SRID) de los datos de geografía/geometría que se utilizan. Por convención, generalmente usaría un SRID de "0" para los tipos de geometría si todos los datos están en el mismo sistema de unidad.

Sin embargo, generalmente el tipo de geografía usa un SRID de 4326, que es la ID de referencia del sistema de coordenadas de tierra elipsoidal de latitud/longitud conocido como WGS 84. Cuando especifica coordenadas de punto en este sistema, está en grados de ángulo de latitud y longitud, en lugar de cierta distancia de un origen. Los cálculos de longitud y área en los puntos de este sistema de referencia arrojarán resultados completamente diferentes de los cálculos geométricos en las mismas posiciones puntuales exactas (para un gran ejemplo, see Differences between Geography and Geometry here, y en el caso de why this happens, see here).

Entonces, si sus columnas de datos se crearon con un SRID de "0", entonces el sistema se define como sin unidades y usted necesitaría algunos metadatos sobre el modelo de datos para descubrir las unidades. Si se definieron con un SRID real, entonces usted puede utilizar esta consulta:

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

para comprobar qué unidades representa el SRID. La mayoría están en metros, pero algunos están en pies.