- Registro
- 22 Feb 2009
- Mensajes
- 25.123
- Reacciones
- 3.228
Que Dios os lo pague con cuantiosos emolumentos :121 por la tarde lo pruebo.
Siga el video a continuación para ver cómo instalar nuestro sitio como una aplicación web en su pantalla de inicio.
Nota: Esta función puede no estar disponible en algunos navegadores.
//$filters es un array pasado como parámetro que contiene pares de índice=>valor donde los índices son campos de la base de datos y los valores los que nos llegan por POST. Si un campo no llega en el filtro significa que no hay que evaluarlo, de forma que si no llega ningún filtro se recuperan todos los mensajes
//como uso CodeIgniter he aprovechado los active records para simplificar el trabajo
//ejecutamos la consulta
//$query = $this->db->get('sent_messages');
//preparamos la consulta
if(!empty($filters['date'])) {
$this->db->where("date > ".$filters['date']);
}
if(!empty($filters['codeRecipient'])) {
$this->db->where('codeRecipient', $filters['codeRecipient']);
}
if(!empty($filters['country'])) {
$this->db->where('country', $filters['country']);
}
if(!empty($filters['language'])) {
$this->db->where('language', $filters['language']);
}
if(!empty($filters['latitude']) && !empty($filters['longitude'])) {
$lat = floatval($filters['latitude']);
$lng = floatval($filters['longitude']);
$this->db->where("111.045* DEGREES(ACOS(COS(RADIANS($lat))
* COS(RADIANS(latitude))
* COS(RADIANS($lng) - RADIANS(longitude))
+ SIN(RADIANS($lat))
* SIN(RADIANS(latitude)))) < distance");
}
Yo no lo veo complicado, si tienes coordenadas (longitud y latitud) y un radio, solo tienes que buscar aquellos que restando longitud y latitud sea menor que el radio.
Por ejemplo: SELECT mensajes-Json FROM Base_Subnormales WHERE (( SQR(longitud - longitud_pajilleros) < SQR(radio)) AND ( SQR( latitud - latitud_pajilleros) < SQR(radio))
Si los datos de coordenadas están en otra tabla pues lo mismo pero con un having.
Esta aproximación valdría para coordenadas sobre un plano, pero no sobre una esfera. De todas formas ya está resuelto gracias a la fórmula de los semiversenos que me pasó PatoLaqueado.
Si, tienes razón. No he caído en la cuenta que la longitud y latitud están en grados y el radio no. Supongo que por eso la formula esa tiene tantos senos y coseno. Para pasar los grados a la misma escala del radio.
Aunque yo, como buen español, seguiría en mis trece e intentaría hacerlo al revés, pasar el radio también a grados.
No, en realidad es así porque no es lo mismo la distancia entre dos puntos en un plano que en una esfera, así que por mucho que te empeñes en cambiar unidades si quieres que te funcione vas a tener que aplanar también la tierra de paso, entonces sí te funcionará, salvo que después de aplanarla se te ocurra "poner el radio en grados".
Mira que no tengo nada contra ti, pero es que es una detrás de otra, ¿Tu trabajas de programador?
Nop, para ser programador ya veo que hay que pedir ayuda a los foros y robar código hecho por otros.
Supongo que cuando acabes el programa además tendrás los santos cojones de encima poner una licencia de software prohibiendo la copia o modificación del mismo, ¿no?.![]()
Podemos bromear con editores, lenguajes de programación y metodologías ágiles. La cosa puede ponerse incluso algo tensa.
Pero con las matemáticas no se juega, hijos de la gran puta.
Pasar el radio a grados, me cago en Satanás.
Pos mira, leyendo leyendo hasta se puede hacer
1 grado = 20 leguas = 111.12 kilómetros. (Grado de latitud - Wikipedia, la enciclopedia libre)
Si buscas paisanos que vivan a menos de un radio de 500km de donde estás. Pues con una sencilla regla de 3...... 500*1/111,12= 0.04499640028 grados. Y ahora es comparar que el paisano no viva a +- 0.04499640028 grados longitud/latitud de donde te interesa.
Por cierto, hoy he estado testeando y me funciona con una precisión de 50 metros, no he probado si afinando más funcionaría pero usando doubles estoy seguro de que sí. Teniendo en cuenta que los radios serán del orden de kilómetros no está nada mal.
Buenas, ¿Alguien ha tenido alguna experiencia con Ruby on rails?
Por lo que veo es la forma más rápida y fácil de hacer proyectos web que no requieran demasiadas conexiones activas y concurrentes. Ya ha pasado su mejor momento, pero sigue siendo la opción Startup por defecto.
Radio de la Tierra [km] * 2 * pi / 360º = 111,12
¿Qué pretendes demostrar con eso?
Aunque no sea un cálculo nada fino, ¿compensaría la falta de precisión en la ubicación geoespacial una mayor eficiencia en las operaciones?
![]()
Sí, gran parte del trabajo de un programador consiste en rastrear y pedir ayuda en foros, o por lo menos hay que hacerlo asiduamente y saber cómo hacerlo, que también tiene su qué.
La fórmula que puso Pato es un estándar, por esa regla de tres cada vez que calcules una trayectoria le estás robando código a Pitágoras no? Madre mía, lo que hay que leer![]()
Déjarlo no lo va a entender, para el un plano y una esfera son lo mismo, y las distancias se pueden calcular igual, y por si fuera poco las matemáticas "como buen español [sic]" se las pasa por el forro.
Leandro eres tonto, muy tonto, porque ni una sola de las respuestas que te he dado han sido para humillarte o quedar por encima de ti, simplemente te intentaba hacer ver que estabas equivocado, normalmente dabas la callada por respuesta en vez de bajarte de la burra. No se porque esta vez no haces lo mismo y te empeñas en seguir dejando patente que no tienes capacidad para entender lo que aquí se discute, ni esto, ni lo del JS ni lo del C++, y si sigo buscando seguro que más, pero por mi te puede seguir formando otro, si eso ya al siguiente problema que se plantee contestas tú pasando los radios a grados, y quitando "tantos senos y consenos".
PD: @Boniato que te falla la url de la firma rey.
Claro que si wapi !, es lo que está de moda, freelancer fusilando todo lo que puedas de internet porque es todo gratis, y luego ya si se cae el sistema, le echamos la culpa al becario.
Qué sepas que no se me olvida que me debes un Easter Egg lolesco en la app.![]()
Utilizamos cookies esenciales para que este sitio funcione, y cookies opcionales para mejorar tu experiencia.