2010-06-04 13 views
6

Estoy trabajando con un punto geográfico usando lat/long y necesito encontrar otros puntos en nuestra base de datos dentro de un radio de 5 millas de ese punto. Sin embargo, parece que no puedo averiguar qué son las "unidades" para STBuffer, no parece ajustarse a pies, millas, metros, kilómetros, etc. La documentación solo se refiere a ellas como "unidades", cualquier sugerencia ? GraciasGeografía SQL Server 2008 .STBuffer() unidades de medición de distancia

[...] de geography :: STGeomFromText ('POINT (xy)', 4326) .STBuffer (z) .STIntersects (geography :: STGeomFromText ('POINT (' + CAST (v.Longitude as varchar) (max)) + '' + CAST (v.Latitud como varchar (max)) + ')', 4326)) = 1

Respuesta

5

STBuffer está en metros. More info here.

convertir, millas a metros, dividir el número de millas por 0,0006213712

(es decir, 5 millas/0.0006213712 = 8,046.72 metros)

+2

extraño el término "metro" sólo se muestra en el ejemplo * *, y no en la descripción del parámetro 'distance'. –

+0

La distancia alrededor del mundo se calcula en Metros/Kilómetros/etc. Creo que solo EE.UU. todavía usa el sistema imperial (pulgadas/pie/millas). – Nordes

9

La unidad de medida depende del sistema de referencia espacial en uso. Ver este punto de vista del sistema para obtener más información:

SELECT * FROM sys.spatial_reference_systems;

+2

Aunque la pregunta original especificaba la geografía, llegué aquí buscando generalmente la unidad de medida STBuffer (geometría o geografía). Para salvar a alguien más mirando más allá, para la geometría, la unidad de medida es el sistema de coordenadas de la geometría. Entonces, si está usando Lat/Long, geometry.STBuffer (1) sería 1 grado completo, no 1 metro. 1 grado es enorme en comparación - alrededor de 69 millas. –

+0

Lo cual simplemente demuestra que si está tratando de representar puntos en el globo, la geografía es el tipo de datos correcto para usar (¡no la geometría)! –

Cuestiones relacionadas