Pregunta

Vamos a decir que tengo una tabla de filas que contienen las coordenadas.

¿Cuál sería la mejor manera de tirar sólo las filas de coordenadas que se encuentran en el radio de otro de coordenadas?

Para simplificar mi pregunta, estoy dando el siguiente ejemplo:

Table like:
Columns: Latitude, Longitude.
Row1:    23.44444  24.55555
Row2:    32.44444  28.22222
Row3:    35.11111  32.12345

En una sentencia SQL, ¿cómo puedo obtener las filas de coordenadas que se encuentran en el radio de Row3 por ejemplo?

¿Fue útil?

Solución

posterior muestra cómo hacer esto en SQL Server.

Y aquí es cómo hacerlo en MySQL:

SELECT ((ACOS(SIN($lat * PI() / 180) * SIN(lat * PI() / 180) + 
         COS($lat * PI() / 180) * COS(lat * PI() / 180) * COS(($lon - lon) * 
         PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS distance 
FROM members 
HAVING distance<='10' ORDER BY distance ASC

Otros consejos

parece que la fórmula de la distancia es:

D = 60* 1.1515 * acos (sin(pi*y/180) * sin(pi*Y/180) +
                       cos(pi*y/180) * cos(pi*Y/180) * cos((z-Z) *pi / 180) 
                 )  * 180 / pi)

donde Y y Z - son puntos de cada fila whant para poner a prueba, e Y y Z - son puntos de ejemplo fila

.

lo que podría hacer tal cosa:

  1. seleccionar cada fila en la tabla y obtener su lon y lat.
  2. , cambiando $lon y $lat a punto 1 formulario de datos.

No sé cómo hacer esto en el acceso. Pero de esta manera es tan estrecho como lenta.

¿Qué quiere decir por la radio de? ¿Quieres pasar en una distancia, por ejemplo de 5 millas, y encontrar todas las filas a 5 millas de la fila x?

Mira esto si es así http: // www. microsoft.com/sqlserver/2008/en/us/spatial-data.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top