domingo, 12 de mayo de 2013

Redes. Geolocalización

Hola que tal gente, en esta publicación se hablara un poco sobre geolocalización, sobre el como funciona y un poco sobre el comportamiento de la misma. ademas se implementa un código que simula este proceso.

Que es la geolocalización?

La geolocalización es la forma "común" de referirse a la georreferenciación, que es el proceso de localización de un objeto espacial en un sistema de coordenadas.

Como funciona?

La geolocalización por wifi y antenas GSM funciona en base a triangulación geométrica, para Wifi, existen sistemas como el de Google, que cuenta con este auto de la derecha, que recorre todas las calles tomando fotos y geolocalizandolas mediante GPS para generar así Google street view, pero, ademas de esto, este auto cuenta con una antena wifi que esta viendo todos los routers en esa zona, y los geolocaliza  es decir, genera una base de datos con todos los routers, las coordenadas de la longitud y latitud y la potencia de señal recibida.

Que el router tenga una contraseña no importa, ya que el parámetro de identificación de los routers es la dirección MAC, dato que los routers transmiten siempre de forma no cifrada, la cual no se puede cambiar y es única para cada router.

Cuando se quiere usar geolocalización desde el navegador por ejemplo, lo que se hace es que de la antena wifi del usuario, se obtienen todas las redes que puede ver, y consulta el servicio que tiene esta base de datos de routers, el servicio calcula la distancia del usuario a cada router en base a la intensidad de la señal, y para cada red calcula todas las posibles coordenadas a esa distancia, generando un mapa de posibles posiciones, teniendo las posibles posiciones para cada antena, se busca el punto común de las tres redes, el cual representaría la posición actual del usuario.

El papel de los equipos móviles.

Si un router se mueve de posición y se trata de geolocalizar, probablemente la posición resultante no sea la adecuada la primera vez, si se tiene suerte, esto por que la base de datos de los routers tiene las coordenadas de la posición antigua del router, pero esto no quiere decir que la información del router se actualizara hasta que vuelva a pasar el carrito de google, los equipos móviles cada X tiempo hacen la función del auto, encienden GPS, se geolocalizan, cuando se obtiene la ubicación del móvil, apaga GPS y enciende wifi, wifi obtiene todos los routers que ve, y si alguno tienen unas coordenadas distintas a las de la base de datos, estas son actualizadas inmediatamente, entonces, si se cambia el router de posición, lo enciendes y en ese momento algún equipo lo puede ver, actualizara la información mostrándote la información correcta cuando te trates de geolocalizar.

Y no, no es que los móviles hagan el proceso sin permiso de uno, en la configuración inicial del android, una de las pantallas pregunta si se desea colaborar con el servicio de localización, y uno siempre le dice que si. eso le da el permiso para realizar el proceso cada cierto tiempo. Apple y Windows phone también tienen casilla de validación en sus equipos. De cierta forma todos ayudamos a mantener la geolocalización.

También hay antenas dedicadas a perjudicar la geolocalización,  en China por ejemplo, tienen estas antenas que cada cierto tiempo lanzan una señal en el mismo espectro electromagnético de GPS, haciendo que no se obtengan resultados malos.

GSM.

Para GSM funciona bastante similar, el equipo siempre esta conectado no solo a una, sino a tres, cuatro o cinco antenas GSM, y por triangulación se determina el radio donde posiblemente este el móvil, así, cuando se hace una llamada, la telefonía no tiene que buscar en toda su área de cobertura al receptor de la llamada, sino que obtiene el radio de ubicación, y nada mas busca en ese radio. Y si, por obligación legal y técnica, las telefonías SIEMPRE saben tu ubicación. 

Simulación.

Para entender un poco mejor el concepto, se escribió el siguiente script de python, en el cual, primero recibe las posiciones de la antena y su radio de alcance de señal, para simular que se esta actualizando la información de antenas, y después se introducen los porcentajes de intensidad recibida del usuario para cada una de las antenas. el sistema en base a las intensidades de señal recibida, calcula la posición actual del usuario, y devuelve las coordenadas, a continuación el código:

Para que funcione correctamente, las intensidades de señal recibidas deben ser validas, para obtener esta información se escribió una función que indica las intensidades de señal en un punto respecto a las antenas, para probar lo anterior, ejecutar la función "obtenerPorcentajes" en lugar de "main".

Pruebas.
Para la prueba se corre el script, y se ingresan las coordenadas y el radio de alcance para cada una de las antenas ademas de las dimensiones del mapa. Después se captura el porcentaje de señal de cada antena, el programa arroja la distancia entre el usuario y cada una de las antenas y finalmente el punto de ubicación del usuario.


Ademas se genera una imagen que representa el mapa.


En la imagen de arriba, el nombre de cada antena representa la posición de la misma, y cada circulo rojo esta definiendo el alcance de cobertura de cada una, se puede observar también que para cada antena hay un circulo de otro color, estos círculos representan todas las posibles coordenadas que estarían recibiendo la señal de la antena con el porcentaje que se ingreso al programa, finalmente de busca el punto común donde las tres intensidades capturadas coincidan y se determina como la posición del usuario.

La geolocalización es Fácil.

llevar la geolocalización a la realidad es muy fácil, especialmente con todas las herramientas que tenemos a la mano que nos facilitan aun mas las cosas. usando la API de google maps y jquery podemos crear rápidamente una pagina que nos devuelva la geolocalización del usuario y pintarla en el mapa.

A continuación el ejemplo.

Al colgar esta pagina en un apache o cualquier server, podrán ver su ubicación en el mapa.


Buenas Practicas, como usar la geolocalización?

Buen uso. Google.
Google, ¿Porque? porque usa la geolocalización de forma silenciosa para mostrarte resultados de forma local en base a tu ubicación, por ejemplo, si se googlea "cines", el navegador te dirá aparte de la definición de cine, algunas direcciones de cine mas cercanas a tu posición, google explota este recurso de forma que le ofrece a los usuarios una experiencia mucho mas personalizada.

Mal uso. mala publicidad.
Navegando por Internet, regularmente te encuentras con el anuncio "Encuentra mujeres calientes en + [Nombre de tu cuidad]", NO, no hay chicas esperando que las contactes, es solo una mala forma de usar esta tecnología para que personas les generen ingresos en adsense con clics, o simplemente para inyectar virus.  

Antes de usar geolocalización en un sistema, se debe evaluar si el usuario se sentirá cómodo permitiendo que lo ubiquen, y ademas evaluar las razones por la que necesitas geolocalizar al usuario, estudiar si esto le permitirá al usuario una mejor experiencia, o simplemente no usara el sistema por necesitar de esta tecnología.

Bien, por mi parte es todo. dudas o comentarios abajo.

Saludos!

2 comentarios:

  1. NP tarea 7 de redes. Ahora mismo estamos separando temas para tarea 8 en el facebook.

    ResponderEliminar