Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Agrupar puntos en el mapa (muy loco)

Estas en el tema de Agrupar puntos en el mapa (muy loco) en el foro de Mysql en Foros del Web. Buenas a todos, Estoy intentado hacer algo que actualmente hago con Javascript, pero que resulta bastante más complicado hacer con mediante una consulta. La idea ...
  #1 (permalink)  
Antiguo 28/07/2014, 20:35
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Agrupar puntos en el mapa (muy loco)

Buenas a todos,

Estoy intentado hacer algo que actualmente hago con Javascript, pero que resulta bastante más complicado hacer con mediante una consulta.

La idea es hacer eso: EJEMPLO

Actualmente ese ejemplo fuciona con JS, recibe todos los puntos y luego realiza una serie de calculos para agrupar los puntos. No me gusta nada por que cuando andas con 100.000 registros la cosa pinta lenta.

La intención que tengo es hacerlo con MYSQL y hacerlo mediante una sola consulta, pues mediante varias consultas ya lo he conseguido, pero va lentillo.

Esta es la segunda versión (en una sola consulta):

Código MySQL:
Ver original
  1.     (ROUND(lat -".$cube_lat.")) AS rlat,
  2.     (ROUND(lng - ".$cube_lng.")) AS rlng,
  3.     AVG(lat) AS alat,
  4.     AVG(lng) AS alng,
  5.     COUNT(*) AS numpoints
  6.     FROM supermapa
  7.         WHERE
  8.     lat >= ".$southWest_x." AND
  9.     lat <= ".$northEast_x." AND
  10.     lng >= ".$southWest_y." AND
  11.     lng <= ".$northEast_y."
  12. GROUP BY rlat, rlng";

Esta consulta lo que hace es agrupar los puntos mediante rlat y rlng que es basicamente un redondeo de su posición. Esto parece que es buena idea, pero no lo es, ya que no hace natural la posición de los marcadores. La posición natural, no estoy seguro, se debe pillar no de la media si no de la media de un poligono circular. La variable "$cube_lat" y "$cube_lng" es la división que he hecho de las dimensiones del div donde esta contenido el mapa. Osea, que divido el mapa en trozos de 70 pixeles y luego divido la latitud y la longitud entre los trozos que me salgan.

Como veis le he dedicado bastantes horas y cada vez estoy más perdido. Estoy seguro que tiene que haber una tecnica 100% efectiva que funcione con un par de lineas, sin tantas locuras.

¿Alguien sabe como hacerlo mediante una consulta?
  #2 (permalink)  
Antiguo 28/07/2014, 21:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Agrupar puntos en el mapa (muy loco)

Para eso se usan bases de datos espaciales, que trabajan con objetos Geometry.

http://dev.mysql.com/doc/refman/5.6/...xtensions.html

Es mucho más sencillo, aunque tendrás que andar bastante para dominar el tema.
Yo desarrollé hace algunos años una base de datos de ese tipo para uso de reportes en empresas de transporte de pasajeros y cargas, con uso de geolocalización, obtenida por datos de GPS.
no es algo para verlo en un par de días, te lo advierto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 29/07/2014, 04:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Agrupar puntos en el mapa (muy loco)

Lo siento, pero en este foro sólo se trata de temas de SQL y bases de datos. A eso apuntó mi respuesta.
El resto es asunto de otros foros.

Yo ya te dije como manejar el tema de datos. El Cómo uses esos datos ya no es de este subforo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 29/07/2014, 14:22
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Respuesta: Agrupar puntos en el mapa (muy loco)

Hola gnzsoloyo,

No entiendo por que has borrado mis temas la verdad. Me parece que no sabes de lo que hablo. No estoy hablando de como procesar la información, justo estoy hablando de lo contrario, de hacerlo mediante una sola consulta MYSQL.

Pero vale!... borrame los post que habia puesto, :P ... pero para que los borras?... puedes decirmelo sin borrarlos...

Para empezar existen varios temas circulando en foros de MySQL tratando exactamente el mismo problema del que estoy hablando, sin necesidad de usar datos espaciales. Y de ser lo contrario tampoco habia ninguna necesidad de eliminar mis respuestas.

La primera vez que me eliminan o editan un post en foros.

Creo que las imagenes que habia publicado representaban perfectamente el problema al que no encuentro solución. He visto ejemplos realizados con otros motores de bases de datos que usan consultas mediante cosenos, pero me pierdo.

Puf!... sin palabras. Nada de lo que habia publicado tenia que ver con el procesamiento de la información post sql... :P

Me quejo por que es la primera vez, jaja.
  #5 (permalink)  
Antiguo 29/07/2014, 14:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Agrupar puntos en el mapa (muy loco)

Vamos a ver: Las he borrado porque no son SQL, no son stored procedures, no tienen relación con diseño de datos ni adminsitración de bases de datos. La visualización no es tema de los foros de BBDD, como no lo son los frameworks, JS, ni el XML.
Como dcen las PDU y las normas del foro, sólo tratamos esos temas en los foros de BBDD, y también como dicen las PDU, los posts considerados off topic se borrarán o trasladarán sin previo aviso ni explicaciones.
Fijate que la cosa es tan así que en esos posts preguntabas esto:
Cita:
Alguien conoce algun framework en php?
..y como te digo, programación no es tema de este foro.

Si quieres que analicemos cómo se implementa un Sp que permita determinar la cercanía o acumulación de posiciones geográficas a puntos o zonas, con todo gusto: Para eso existe la extension de GIS implementada en MySQL..

Cuando quieras empezamos, pero tendrás que leer el tema para probar cómo se hacen ese tipo de consultas, ya que hay que dominar un poco de la creacion de objetos Geometry, como te dije.

Si el tema de bases de datos espaciales no te sirve, tendrás que resolver el problema vía programación, en el foro de PHP...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 29/07/2014 a las 14:34
  #6 (permalink)  
Antiguo 31/07/2014, 10:16
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Respuesta: Agrupar puntos en el mapa (muy loco)

Sinceramente, creo que se puede hacer con MySQL... cuando lo haga lo posteo... pero ciertamente las imagenes que publique eran utiles para el resolver el problema. No creo que el moderador deba mancharse tanto las manos de sangre borrando textos... pero bueno...

Sobre MySQL... te digo más... ya casí lo tengo hecho. Hacer este tipo de programación procesando la informacion con PHP es para pegarse un tiro. La unica razón de hacer este sistema es justo para no procesar millones de lineas, que es mi caso.

Para procesar varios millones de lineas con PHP y muestre el restultado en un mapa con los movimientos naturales de los usuarios es inviable 100% por la lentitud.

Cuando me referia a frameworks me refiria a algún framework que circula por Internet orientado a MySQL, para realizar este tipo de consutas. Los he consultado y no me gustan por varias cosas, igual alguien sabia de algun otro...

Un saludo!... y gracias por todo!.
  #7 (permalink)  
Antiguo 31/07/2014, 10:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Agrupar puntos en el mapa (muy loco)

Los frameworks, por mas "orientado a MySQL" que sean, son ajenos al MySQL como sistema.
por otro lado, mantengo mi oferta: Todo lo que quieres hacer se peude lograr muy fácilmente con tablas espaciales.
Como te dije, yo ya trabajé en ese tema, y lo hice durante tres años, en un proyecto mucho más complejo que el que tu describes, donde procesabamos las rutas completas de más de 3000 vehículos.
Conozco el problema, y te aseguro con conocimiento de causa que lo que te propongo es la solucion adecuada.

¿Te queda claro de qué estoy hablando cuando menciono GIS, Tablas espaciales y objetos Geometry en MySQL?
Porque me parece que no me estás escuchando...


Volviendo al post inicial, aclárame una cosa: ¿Lo que necesitas es ubicar todos los puntos done la distancia entre sí tiende a cero? Me refiero a que son tan próximos que estárían en el mismo punto geográfco?

Si ese es el caso, en las FAQs hay una fucnion almacenada que puede ayudarte...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 31/07/2014 a las 11:13
  #8 (permalink)  
Antiguo 31/07/2014, 14:45
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Respuesta: Agrupar puntos en el mapa (muy loco)

Vale... voy ha echarle un ojo!... gracias

Etiquetas: agrupar, mapa, puntos, registro, select, sql
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 08:38.