Leer coordenadas de un gps en python

gps-iconLos gps, no los navegados que son otra cosa, suelen devolver la información obtenida mediante el protocolo NMEA. Este protocolo define la información que podemos obtener del gps y como esta sera trasmitida.

Para obtener las coordenadas del gps tenemos que esperar a recibir una la sentencia $–GGA, esta tiene el siguiente formato:

$–GGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh

Formato:

  • $–GGA: Indica que la información es la posición, hora, e información relacionada con el gps. Los dos guiones (–), pueden ser cualquier cosa, pero normalmente suele ser «GP», es raro encontrar un gps que cambie esta definición.
  • hhmmss.ss: Hora a la que fue tomada esas coordenadas.
  • 1111.1111: latitud, en formato ggmm.ssss, los segundos en formato decimal. Esta es una de la información que me interesa.
  • a: Esto indica en que hemisferio se ha tomado las coordenadas si en el norte (N) o en el sur (S).
  • yyyyy.yyyy: Longitud, lo mismo que la latitud, pero nos da las coordenadas de la longitud. Tiene el mismo formato.
  • a: Lo mismo que para el hemisferio norte y sur, pero en esta caso indicando «E» para el este y «W» para el oeste.

Los demás campos están relacionados con el numero de satélites, calidad de la señal del GPS, altitud a la que nos encontramos, etc.

El gps que estoy utilizando, es un gps bluetooth, que una vez que lo he enlazado con el ordenador me crea un puerto serie, en mi caso con linux «/dev/rfcomm0». Una vez que lo tenemos conectado solo tenemos que conectarnos en python utilizando la librería pyserial.

Para pasar el formato de las coordenadas devuelto por el gps, a unas coordenadas normales en el formato ggº mm’ ss.ss» lo he hecho del siguiente modo.

Para separar cada unos de los campos utilizo en comando «split», pasándole como parámetro «,». Este nos devuelve cada campo en una posición de una tabla, utilizando la coma como separador.

vCampos = vSentenciaNMEA.split(',')

Los campos que nos interesan, para la conversión de las coordenadas están en la posición 2, latitud y en la 4, longitud. Y los campos 3, para saber si estamos en el norte o en el sur, y el campo 5, para el este o el oeste.

Con esto ya podemos tratar las coordenadas como más nos interés.

Si tienes algún consejo, recomendación o alguna duda utiliza los comentarios.