stdistance meters sql sql-server-2008 geography

meters - Valor de SQL Server 2008 GEOGRAPHY STDistance()



sql geography distance (2)

Creo que la medición de retorno depende de los identificadores de referencia espacial (SRID) de su tipo de datos geográficos. El valor predeterminado es 4326, que está en metros. Hay una tabla en el DB que puede Select * from sys.spatial_reference_systems

Estoy usando 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?

Estoy obteniendo resultados de más de 250k pero no tengo idea de 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)


Solo para cubrir a las personas que llegan aquí buscando la respuesta al usar STDistance con 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 WGS84 / SRID 4326 datos están en grados.

El siguiente SQL debe ejecutarse en SQL Server 2008 R2 y superior. (Fuente de datos de ubicación de los mapas de las estaciones de Edinburgh Waverley y London Charing Cross):

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 las primeras 3 líneas que usan tipos de GEOMETRÍA son:

STDistance Geom: 5.39881707506376, Distancia desde Pythagoras: 5.39881707506376

Los resultados para los tipos de GEOGRAFÍA son:

STDistance Geog: 534226.761544321, convertido a millas: 331.953119745885

Las ''331 millas'' más o menos del cálculo de GEOGRAFÍA con conversión se relacionan muy bien con las que se muestran 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).

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