Como georeferenciar fotos con precisión sin costo ni esfuerzo

Camaras digitales con un GPS integrado siguen siendo bastante costosas para proyectos de investigación de bajos recursos. Pero acabo de descubrir como se puede usar cualquier camara digital y cualquier GPS en exactamente la misma forma. El secreto es sincronizar la hora de ambos aparatos exactamente. Luego el software gpicsync hace toda la operación de añadir un código geográfico al encabezado EXIF e incluso escribe un kml para Google Earth con las fotos integradas. Un programa alternativo es gpscorrelate (que hace algo parecido a lo que se me ocurrió tratar de hacer si no habia encontrado gipsync antes). Gpicsync es muy fácil de usar y parece bien confiable. Hay versiones de gpicsync para Windows y Linux disponibles.

http://code.google.com/p/gpicsync/

No hay un instalador automatica para Ubuntu, pero se puede bajar con subversión.

svn checkout http://gpicsync.googlecode.com/svn/trunk/ gpicsync

Nota que para la versión Linux hay que asegurar que tienes todas las dependencias. En Ubuntu dado de que no se instala usando aptitude el proceso no es automático. El archivo “readme.txt” tampoco es muy específico cuales son. La instalación de python-wxgtk2.8, libexif12 y libimage-exiftool-perl debe solucionar los problemas. Se arranca el programa con python, entonces en en mi caso tengo un “launcher” con

python /home/duncan/gpicsync/gpicsync-GUI.py

La otra herramienta necesaria es gpsbabel. Esta programa maravilloso puede hacer la conversión entre casi cualquier formato de gps. No tiene GUI. Funciona en la mism forma desde la linea de comandos tanto en Windows como Linux. Aunque hay que revisar un poco su documentaticón antes de empezar, el uso rutinario no es nada complicado.

Obviamente el primer paso es asegurar que la hora de la camara es correcta al segundo. Nota que los gps graban la hora en UTC, pero gpicsync tiene una opción para ajustar a diferentes zonas, asi que deja la camera con la hora local.

Todavía no he probado el uso del programa ni en Windows ni con un Garmin, pero si el aparato esta conectado al puerto serial este comando debe bajar los datos del “tracklog” guardándolo en el formato gpx, lo cual es necesario para el programa.

gpsbabel -t -i garmin -f com1 -o gpx -F tracklog.gpx

Para mi uso personal tengo un gps NMEA basico que compré por $US30 en los Estado Unidos. Se conecta al USB del laptop. Estos aparatos económicos son tan precisos como cualquier Garmin o Magellan (usa WAAS si es disponible), pero requieren una laptop o palm para su uso, no funcionan independientemente.  Dado el costo bajo de la tecnología se supone que dentro de muy poco sería rutinario tener un GPS integrado en las laptops. Hay varios programas  disponibles en Linux que proveen un interface gráfico para un GPS de este tipo.

Viking, GPSDrive y gpsman son ejemplos. Son funcionales, pero para decir la verdad podrían beneficiarse de mejores interfaces para ser mas amigables. Nota que debes instalar un pequeño programa de conversión primero llamado gpsd. Esta forma un interface entre el aparato y el laptop con el comando  gpsd /dev/ttyUSB0 (suponiendo el aparato esta en el USB). Se puede ver si esta funcionando con el programa xgps. Un aviso. He encontrado que si se desconecta el gps y se reconecta a veces, pero no siempre, se abre la conexión de nuevo en /dev/ttyUSB1 en vez de /dev/ttyUSB0. (Con mas pruebas, errores, frustraciones y busquedas en foros viejos al fin me di cuenta que este problema desaparece con la desinstalación de brltty, un daemon para teclados de braille que solamente Ubuntu tiene instalado “por default”. No entiendo como lo hace pero parece que causa un conflicto). De todos modos siempre hay que asegurar que el gps esta conectado bien viendo o xgps o echo rw | nc localhost 2947, y si no cambiar el comando.

Un problema que encontré era no podía guardar el tracklog en formato gpx para la sincronización con el software de visualización. GPSDrive usa su propio formato .sav y no podia entender como hacerlo en Viking. Aunque gpsbabel puede convertir entre los dos, hay problemas cuando se pierde la señal y se graba con ceros.

La solución mas robusta que encontré fue el uso de gpsd directo para grabar el output del aparato a un archivo. Si el gps esta en el usb empiezas gpsd con

gpsd /dev/ttyUSB0

Luego el comando abajo produce un archivo ligero con todos los datos crudos del GPS.  Se puede apagar la pantalla del laptop y dejarla funcionando  hasta que se acabe la batería

echo rw | nc localhost 2947 > raw.dump

Desafortunadamente en el caso de mi pobre vieja Toshiba la batería dura  menos de 30 minutos. Estoy esperando la entrega de una pequeña Acer one precisamente para este tipo de uso. Se venden estas minilaptops económicas con Linux preinstalado, asi que las instrucciones son relevantes para sus usuarios.

Al terminar de grabar se convierte el archivo en gpx con gpsbabel. (Si quieres una explicación técnica del formato nmea esta diponible aqui http://en.wikipedia.org/wiki/NMEA_0183)

gpsbabel -i nmea -f raw.dump -o gpx -F tracklog.gpx

Ahora lo único que tienes que hacer es correr GPicSync. El interface es intuitivo y no requiere explicación.

He incluido un archivo kmz de Google Earth que acabo de producir con fotos de alta resolución de mi casa aqui.

http://duncanjg.files.wordpress.com/2008/08/casakmzquitaelresto.doc

Este archivo es de 24MB. WordPress no acepta el sufixo de .kmz. Asi que esta disfrazado como doc. Si quieres ver lo hay que esperar un rato para que se baje y luego cambiar el nombre a casa.kmz y luego abrirlo en Google Earth.

About these ads

3 thoughts on “Como georeferenciar fotos con precisión sin costo ni esfuerzo

  1. Pingback: Eco-informática: Nuevas herramientas de informática en manos de los investigadores « Duncan Golicher’s weblog

  2. Pingback: Geotagging example 2 « Duncan Golicher’s weblog

  3. GpicSync ? There is a better solution !
    I tried Geosetter 3.0.14 (http://www.geosetter.de/en/).
    It is far better respect other like GpicSync. Its GUI interface is well done and has a lot of features.
    Siply to use, almost nothing to do to configurate it. In a snap all the photo are geotagged using the data from logger unit.
    In a word: wonderful freeware !
    Ciao
    Danilo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s