2010-06-02 24 views
5

Estoy buscando calcular la distancia más corta entre dos puntos dentro de SQL Server 2008 teniendo en cuenta la masa terrestre solamente.distancia entre dos puntos de la tierra mediante el servidor sql

He utilizado el tipo de datos geográficos junto con STDistance() para calcular el punto x distancia hasta el punto y en línea recta, sin embargo, esto a veces cruza el mar que estoy tratando de evitar.

también han creado un polígono alrededor del límite masa de tierra Estoy interesado en

Creo que necesito para combinar estos dos métodos para asegurar que STDistance permanece siempre dentro del polígono -. A menos que haya una solución más simple.

Gracias por cualquier consejo

Respuesta

1

Use STIntersects - http://msdn.microsoft.com/en-us/library/bb933899%28v=SQL.105%29.aspx para averiguar qué parte de la línea es de la tierra.

Después de leer su comentario, su requisito tiene sentido. Sin embargo, estoy bastante seguro de que no hay técnicas incorporadas para hacer esto en SQL Server. Supongo que estás ignorando las carreteras y adoptando un enfoque generalizado, pero solo sobre la tierra.

La única forma en que puedo pensar para hacer esto sería convertir su área en un ráster (celdas de cuadrícula) y realizar un análisis de ruta de costo. Usted establecería que el área del mar tenga un costo prohibitivamente alto para que el algoritmo se desplace alrededor del mar. Vea este enlace para la descripción de la técnica:

http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm?TopicName=cost_path

tratar de otro modo la aplicación del algoritmo de abajo!

http://bit.ly/ckvciz

Puede haber otras bibliotecas que hacen esto. Alternativamente, ¿qué tal si utilizas la nueva API de Google Directions entre las dos ciudades? Entonces obtendrías distancias reales por carretera.

http://code.google.com/apis/maps/documentation/directions/

+0

Gracias por la respuesta. A menos que malinterprete que no me dará la distancia más corta dentro de la masa terrestre, simplemente me permitiría diferenciar entre la distancia a través de la tierra con la distancia a través del mar. Tal vez un ejemplo trabajado me ayude a explicar. En línea recta, Málaga (España) está más cerca de Tánger (Marruecos) que Madrid. Si solo podemos viajar por tierra, Tanger sigue siendo accesible (después de un largo viaje por Europa, Medio Oriente, etc.), pero ahora está mucho más lejos que Madrid, París, etc. Por lo tanto, estoy tratando de calcular las distancias masa de tierra solamente. –

+0

SQL Server no diferencia entre tierra o mar (o colinas, para el caso). –

+0

Supongo que los polígonos se atribuirían correctamente? – geographika

Cuestiones relacionadas