Foros del Web » Programando para Internet » PHP »

Puntos cercanos a coordenadas

Estas en el tema de Puntos cercanos a coordenadas en el foro de PHP en Foros del Web. Buenas, he buscado y buscado sin encontrarlo. Necesito eso mismo, tengo un punto (lat,long), dado por el usuario, y tengo que buscar en la base ...
  #1 (permalink)  
Antiguo 20/07/2012, 05:48
 
Fecha de Ingreso: mayo-2009
Mensajes: 232
Antigüedad: 15 años, 7 meses
Puntos: 3
Puntos cercanos a coordenadas

Buenas, he buscado y buscado sin encontrarlo.

Necesito eso mismo, tengo un punto (lat,long), dado por el usuario, y tengo que buscar en la base de datos sitios cercanos a esa coordenada.

He encontrado 3 soluciones, aunque necesito aclaracion:

1. Un grado de longitud son 111,11 km, y uno de latitud son 113,3km.
Asi seria facil cotejar los datos de mysql para encontrar cercanos, pero encontre que no es muy fiable.

2. Usando la formula de haversine, usandola en php o javascript, aunque el problema que veo es el exceso de calculos que debo realizar en el caso de tener 10.000 registros en la tabla.

3. He encontrado una formula en este foro dada por Freedatos, es la siguiente:

Código PHP:
Ver original
  1. $query = sprintf("SELECT *, ( 3959 * acos( cos( radians('%s') ) * cos( radians( latitud ) ) * cos( radians( longitud ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( latitud ) ) ) ) AS distance FROM deinteres HAVING distance < '%s' ORDER BY distance",

El problema aqui es que no se usar tanto mysql como para entenderla del todo, y por ello no se si sobrecarga igual ke la formula de haversine. E imagino que solo debo incluir latitud y longitud del punto que me dan,y "deinteres"sea la tabla, peor no se donde lee lat y lang de esa tabla.


Espero me puedan ayudar, poruqe ando loco.Gracias
  #2 (permalink)  
Antiguo 20/07/2012, 05:52
 
Fecha de Ingreso: junio-2012
Mensajes: 18
Antigüedad: 12 años, 5 meses
Puntos: 2
Respuesta: Puntos cercanos a coordenadas

Cita:
Iniciado por phyronx Ver Mensaje
Buenas, he buscado y buscado sin encontrarlo.

Necesito eso mismo, tengo un punto (lat,long), dado por el usuario, y tengo que buscar en la base de datos sitios cercanos a esa coordenada.

He encontrado 3 soluciones, aunque necesito aclaracion:

1. Un grado de longitud son 111,11 km, y uno de latitud son 113,3km.
Asi seria facil cotejar los datos de mysql para encontrar cercanos, pero encontre que no es muy fiable.

2. Usando la formula de haversine, usandola en php o javascript, aunque el problema que veo es el exceso de calculos que debo realizar en el caso de tener 10.000 registros en la tabla.

3. He encontrado una formula en este foro dada por Freedatos, es la siguiente:

Código PHP:
Ver original
  1. $query = sprintf("SELECT *, ( 3959 * acos( cos( radians('%s') ) * cos( radians( latitud ) ) * cos( radians( longitud ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( latitud ) ) ) ) AS distance FROM deinteres HAVING distance < '%s' ORDER BY distance",

El problema aqui es que no se usar tanto mysql como para entenderla del todo, y por ello no se si sobrecarga igual ke la formula de haversine. E imagino que solo debo incluir latitud y longitud del punto que me dan,y "deinteres"sea la tabla, peor no se donde lee lat y lang de esa tabla.


Espero me puedan ayudar, poruqe ando loco.Gracias

Hola phyronx, ¿no te has planteado en lugar de mysql usar postgreSQL con su extensión PostGIS? Dicho SGBD junto con su módulo para GIS permite obtener dichos parámetros a través de un conjunto de funciones precalculadas en PostGIS, con lo cual sólo debes tener tus puntos y ejecutar la función correspondiente.

Aquí tienes una referencia al respecto.

[URL="http://postgis.refractions.net/documentation/manual-1.3/ch06.html"]http://postgis.refractions.net/documentation/manual-1.3/ch06.html[/URL]

Saludos.
Francisco J.
  #3 (permalink)  
Antiguo 20/07/2012, 06:02
 
Fecha de Ingreso: mayo-2009
Mensajes: 232
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Puntos cercanos a coordenadas

Gracias por responder tan rapido!

Nunca escuche nada de postgreSQL, aunque experto tampoco soy, le he estado echando un ojo, y tener que aprender en muy poco tiempo postgreSQL se me hace dificil,ya tengo la base de daton en mysql creada y medio rellenada..

Imagino que se puede hacer de moomen to con mysql, y mientras ire aprendiendo postgreSQL que se ve interesante.

Dejo un enlace a ella.
postgresql.org.es


Haber si alguien sabe como puedo hacerlo en mysql, gracias!
  #4 (permalink)  
Antiguo 20/07/2012, 06:22
 
Fecha de Ingreso: junio-2012
Mensajes: 18
Antigüedad: 12 años, 5 meses
Puntos: 2
Respuesta: Puntos cercanos a coordenadas

Te dejo algunos enlaces por si te sirven.

http://www.marketingtechblog.com/calculate-distance/

http://dossy.org/2011/09/mysql-geo-distance-code-and-samples/

http://earthcode.com/blog/2006/11/hey_want_to_sort_your_query_by.html

Espero te sirvan.

Saludos.
Francisco J.
  #5 (permalink)  
Antiguo 20/07/2012, 06:53
 
Fecha de Ingreso: junio-2012
Mensajes: 18
Antigüedad: 12 años, 5 meses
Puntos: 2
Respuesta: Puntos cercanos a coordenadas

Disculpa que no te lo pusiera antes, acabo de encontrar algo que creo que puede servirte:

http://dev.mysql.com/doc/refman/5.0/en/gis-introduction.html

Saludos.
Francisco J.
  #6 (permalink)  
Antiguo 20/07/2012, 06:55
 
Fecha de Ingreso: mayo-2009
Mensajes: 232
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Puntos cercanos a coordenadas

muchas gracias!

Ya encontre como hacerlo, y no sobrecargar nada. Les dejo el link, expone varias maneras.

http://dev.mysql.com/doc/refman/5.0/...roduction.html
  #7 (permalink)  
Antiguo 07/12/2012, 18:03
 
Fecha de Ingreso: agosto-2003
Mensajes: 324
Antigüedad: 21 años, 4 meses
Puntos: 1
Respuesta: Puntos cercanos a coordenadas

Hola phyronx.
Estoy liado con un problema parecido al tuyo.
Dada las coordenadas de un punto que paso como argumento de mi consulta, ¿cómo puedo devolver en mi los puntos de mi bd ordenados por proximidad? ¿Cómo sería la instrucción SELECT?
He estado mirando el enlace que has pasado, pero no me aclaro mucho.
Gracias

Etiquetas: coordenadas, mysql, puntos, registro, tabla, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:03.