2010-02-01 17 views
7

Una pregunta sobre la latitud y la longitud ... Probablemente una tontería.Encuentra los puntos de latitud y longitud más cercanos

Tengo un conjunto de latitud y longitudes de varios locations.And, tengo la latitud y longitud de la ubicación en la que la que estoy.

Ahora, tengo que encontrar los lugares más cercanos de mis lugares de el conjunto de latitudes y longitudes que tengo. ¿Hay alguna forma especial de calcularlo o es solo una simple resta y verificar la diferencia?

¿Podría arrojar algo de luz sobre esto?

Gracias, J

+1

Puede que quiera hacer una búsqueda de SO - hay muchas respuestas existentes para esto. p.ej. http://stackoverflow.com/questions/27928 y http://stackoverflow.com/questions/23569/calculating-distance-between-2-cities y – Rosstified

Respuesta

8

Depende de cómo se colocan los puntos.

Por ejemplo, si la mayoría de los puntos están en un estacionamiento, entonces Euclidean Distance debería funcionar bien.

En otros casos, es necesario calcular Geodesic Distance. Este link debería ayudarlo con más información.

Aquí está el conversion del formato Decimal al formato Grados-Minutos-Segundos y viceversa.

aplausos

+0

Hola Andriyev, Gracias por la información. Todas mis latitudes y longitudes tienen la forma "13.048869". ¿Hay alguna manera de convertirlos al formato "53 09 02N"? Lo siento si es demasiado tonto. Gracias, J – Abhishek

+0

@jadaaih - Su lat, long está en formato decimal. Actualizó la respuesta con un enlace, que trata sobre la conversión que busca. – Arnkrishn

+0

¡Gracias, amigo! – Abhishek

4

Puede utilizar este SQL. seleccionará Lat, Lng más cercano de sus entradas de base de datos.

SELECT ID, lat, lng, ((ACOS (SIN (your_lat * PI()/180) * SIN (lat * PI() /180) + COS (your_lat * PI()/180) * COS (lat * PI()/180) * COS ((your_long - lng) * PI()/180)) * 180/PI()) * 60 * 1,1515) AS distance DE your_table_name HAVING distance < =' 10' ORDER BY ASC LIMIT distance 0,10

Esperamos que esto ayude.

+0

¿En qué unidades se encuentra? – goto

+0

La unidad está a millas. Para obtener la distancia en kilómetros, debe multiplicar el término "[...] 60 * 1.1515 [...]" por 1.609344 (que es 1 milla en km) que da como resultado: "[...] 60 * 1.1515 * 1.609344 [...] ". – user1337

Cuestiones relacionadas