Tecnología

Inicio

Cómo utilizar SQL para determinar las coordenadas XY más próximas

Cómo utilizar SQL para determinar las coordenadas XY más próximas


Bases de datos accionan los mejores negocios y sitios web en el mundo de hoy, lo que permite la consulta eficiente de grandes cantidades de datos. Structured Query Language se utiliza para recuperar información de bases de datos. La información espacial, tales como coordenadas se almacenan comúnmente en las bases de datos. Usted puede encontrar la entrada en una base de datos que más se acerque a una posición específica utilizando SQL con unas pocas líneas de código.

Instrucciones

1 Utilice los nombres de las columnas correctas de la base de datos en la consulta o bien la búsqueda devuelve un error. Por ejemplo, la siguiente consulta devuelve una sola fila con los nombres de columna de la tabla denominada "mitabla":

TOP SELECT * 1 de mitabla

Tenga en cuenta los nombres de las columnas que contienen la información posicional.

2 Tomar la distancia entre dos puntos en las posiciones (X1, Y1) y (X2, Y2) dados como:

((X1 - X2) ^ 2 + (Y1 - Y2)) ^ 2

Suponiendo que la información espacial se almacena en la tabla denominada "mitabla" en las columnas denominadas "POSX" y "POSY", la siguiente consulta devolverá los datos que está más cerca del punto en las coordenadas X = 10.0, Y = 10,0:

SELECT TOP 1 *, ((POSX - 10.0) ^ 2 + (POSY - 10.0)) ^ 0,5 como Distancia de mitabla

Ajustar los valores X e Y a reflejar la ubicación del punto en cuestión.

3 Introducir la siguiente consulta si se desea más de un valor a devolver los 20 filas más cercanos en la tabla de más cercano al punto en X = 10.0, Y = 10,0:

* SELECT, ((POSX - 10.0) ^ 2 + (POSY - 10.0)) ^ 0,5 como Distancia de la ORDEN POR mitabla límite de distancia 20

Consejos y advertencias

  • Si estás en busca de la latitud y longitud más cercana, se debe tomar la curvatura de la Tierra en cuenta. La fórmula haversine, también conocida como la "distancia ortodrómica" se debe utilizar en lugar de la fórmula anterior.