2010-07-26 40 views
32

Estoy utilizando geography.STDistance() para devolver la distancia entre dos ubicaciones de un solo punto. Tengo curiosidad sobre qué medida se usa para el valor de retorno? ¿Está en KM's, millas o tal vez algún otro?SQL Server 2008 GEOGRAPHY STDistance() valor

Estoy obteniendo resultados de más de 250k pero no tengo idea si estoy haciendo algo mal con mi TSQL ya que estos son lugares históricos (es decir, ya no existen) así que no puedo hacer una búsqueda rápida.

declare @p1 geography 

declare @p2 geography 

SELECT @p1 = Location from tblLocations where Id = 1 
SELECT @p2 = Location from tblLocations where Id = 2 

select @p1.STDistance(@p2) 

Respuesta

56

creo que la medición de retorno depende de la Spatial Reference Identifiers (SRIDs) de su tipo de datos geografía. El valor predeterminado es 4326, que está en metros. Hay una tabla en el DB que puede marcar Select * from sys.spatial_reference_systems

7

Solo para cubrir a las personas que llegan aquí buscando la respuesta al usar STDistance con tipos de GEOMETRÍA, el resultado es "expresado en la misma unidad de medida que los valores de coordenadas mismos" (de 'Beginning Spatial with SQL Server 2008') que para datos WGS84/SRID 4326 está en grados

El siguiente SQL debe ejecutarse en SQL Server 2008 R2 y posteriores. (Fuente de datos de ubicación de Edinburgh Waverley y London Charing Cross estaciones bing maps):

DECLARE @edinGeom GEOMETRY = GEOMETRY::STGeomFromText('POINT(-3.1917 55.9517)', 4326) 
DECLARE @cxGeom GEOMETRY = GEOMETRY::STGeomFromText('POINT(-0.1252 51.5083)', 4326) 
SELECT @edinGeom.STDistance(@cxGeom), sqrt(square(3.1917-0.1252) + square(55.9517-51.5083)) AS 'Distance from Pythagoras'; 

DECLARE @MetersPerMile FLOAT = 1609.344; 
DECLARE @edinGeog GEOGRAPHY = GEOGRAPHY::STGeomFromText('POINT(-3.1917 55.9517)', 4326) 
DECLARE @cxGeog GEOGRAPHY = GEOGRAPHY::STGeomFromText('POINT(-0.1252 51.5083)', 4326) 
SELECT @edinGeog.STDistance(@cxGeog), @edinGeog.STDistance(@cxGeog)/@MetersPerMile; 

Los resultados para la primera 3 líneas utilizando los tipos de geometría son:

STDistance Geom: 5.39881707506376, Distancia desde Pitágoras: 5,39881707506376

Los resultados para los tipos de la geografía son:

STDistance Geog: 534226,761544321, Antiguo a Miles: 331.953119745885

Las '331 millas' más o menos de GEOGRAPHY calcul ación con conversión se relaciona muy bien con la que se muestra en los mapas de Bing como la distancia entre dos puntos (claramente esto no es una prueba de nada, pero sugiere cálculos subyacentes similares).

Esperamos que los números generados por el cálculo de GEOMETRÍA demuestren que el resultado es muy claro en grados, con el valor aparentemente calculado usando pythagoras (los cálculos subyacentes serían más complejos si obtuviéramos la distancia entre puntos y polígonos).

Cuestiones relacionadas