obtener datos GPS en QGIS usando Python

Jan. 17, 2014

Como futura mejora para  Transectizer, mi primer plugin para QGIS, quiero incorporar la posibilidad de tomar información  GPS (coordenadas y rumbo, por ejemplo) de QGIS. Buscando información acerca del tema, encontré en unos posts en StackexcahgeAs a future improvement for my QGIS Plugin Transectizer, I want to be able to get GPS information (coordinates and bearing, for instance) from QGIS’s GPS widget. I read in a post in stackexchange una respuesta de unos de los desarrolladores de QGIS donde se dan las directrices principales, pero se echaba de menos algo más de información sobre cómo operar con las clases del API de QGIS para tomar la informacióna  través de la consola de python en QGIS. De manera que me puse manos a la obra y, mediante mi querido ensayo-error, di con la receta, que escribo aquí debajo.Simplemente abre la consola de Python en QGIS y prueba lo siguiente para conseguir obtener datos GPS en QGIS usando Python:

# Lo primero es acceder al registro de conexiones GPS

connectionRegistry = QgsGPSConnectionRegistry().instance()

Ahora listamos las conexiones disponible en el registro

connectionList = connectionRegistry.connectionList()

Si sólo tenemos una, cogemos la información de la primera:

GPSInfo = connectionList[0].currentGPSInformation()

Y ahora extraemos la información que nos interese

longitude = GPSInfo.longitude latitude = GPSInfo.latitude

El truco consiste en saber que hay que llamar al método instance():

connectionRegistry = QgsGPSConnectionRegistry().instance()

Para acceder a la clase GPSConnectionRegistry de la aplicación QGIS en ejecución. Recuerda que es preciso, como es lógico, tener una conexión GPS establecida para poder obtener datos…an answer from a QGIS developer where the main directions are given, but I miss some information about how to really get the info through python console in QGIS, so here’s the recipe. Just open the Python console in QGIS and try the following to get GPS info in QGIS using Python:

# First we get the connectionRegistry

connectionRegistry = QgsGPSConnectionRegistry().instance()

Now the connections list from that registry instance

connectionList = connectionRegistry.connectionList()

If we have just one, we get the info from the first of them:

GPSInfo = connectionList[0].currentGPSInformation()

And now, we extract the info we want

longitude = GPSInfo.longitude latitude = GPSInfo.latitude

The trick here is to know that you have to call the instance() method:

connectionRegistry = QgsGPSConnectionRegistry().instance()

To get the GPSConnectionRegistry for your running application. Bear in mind that you must have a GPS connection stablished. Soon I’ll write a post about a tiny application which makes possible to simulate GPS for testing purposes.