Autor Tema: Ayuda para volcar datos GPS a un fichero con exiftool  (Leído 7279 veces)

Colegota

  • Palizas oficial
  • *
  • Mensajes: 8188
  • ¡Me faltan carretes!
    • ¡Me faltan carretes!
Buenas,

aprovechando que ha vuelto Redy ;) voy avanzando con un temilla que tengo entre manos.

Para poneros en situación, aunque haré un artículo más detallado, os cuento que he descubierto un plugin para WordPress que permite poner mapas libres de OSM en las páginas. Y que tiene la posibilidad de, además de pintar las rutas, poner marcadores con la posición de las fotos en el mapa.

Dichos marcadores se guardan en un fichero con este formato:

Código: [Seleccionar]
lat lon title description icon iconSize iconOffset
-8.67518 122.449 Cima del Gunung Egon <img src="http://colegota.mapamundi.info/kml/egon/images/img_0705_1_jpg.jpeg" alt="La cima"> http://colegota.mapamundi.info/kml/egon/images/thumb_img_0705_1_jpg.jpeg 24,24 0,-20
-8.67455 122.449 Bajando de nuevo <img src="http://colegota.mapamundi.info/kml/egon/images/p1000371_jpg.jpeg" alt="Bajando"> http://colegota.mapamundi.info/kml/egon/images/thumb_p1000371_jpg.jpeg 24,24 0,-20
-8.60481 122.478 Puesta de sol en el Ankermi <img src="http://colegota.mapamundi.info/kml/egon/images/img_0722_1_jpg.jpeg" alt="Ankermi"> http://colegota.mapamundi.info/kml/egon/images/thumb_img_0722_1_jpg.jpeg

En la columna "description" se puede poner html embebido de forma que se enlace a la foto en grande, a otras páginas, etc. Lo de arriba es el ejemplo de prueba que podéis ver en el enlace de mi página.

Y lo que quiero es crear un script que a partir de las fotos en un directorio me genere el mencionado fichero con los datos básicos de la foto (lat, lon, html de la imagen) y luego editarlo yo para poner los textos y vale.

Tras buscar un poco en la doc y ejemplos de exiftool ya he llegado a ver como extraer dicha información de GPS. El primer intento viene a ser esto:

Código: [Seleccionar]
$ exiftool -S -t -GPSLongitude -GPSLatitude -GPSAltitude -c %.6f IMG_0722_1.JPG
Que da esta salida.

122.477727 E    8.604807 S      1.281 m


El problema es que con la opción -c no veo la forma de obtener el formato que yo necesito que es con valores positivos o negativos para latitud y longitud. En el ejemplo anterior yo necesitaría 122.477727   -8.604807.

Se me ocurre interpretar dicho resultado, quitando los dos últimos caracteres y ponerle delante el - dependiendo de que el último sea una W o una S. Pero tal vez haya algo más fácil. Y esa es la primera pregunta. :??

También he aprovechado para abrir el hilo por si voy teniendo más dudas conforme vaya avanzando, que seguro que las tendré. :ejem:

Saludos,
Colegota
[Canon EOS 50 40D (sin diapos ni nada)] [Escáner Minolta DSE 5400] [Vuescan] [El GIMP] [Galería] [Página de Viajes]

redy

  • Moderador
  • Bimilenari@
  • *****
  • Mensajes: 2897
  • Gnudista
    • Esteropes El Cíclope
Re: Ayuda para volcar datos GPS a un fichero con exiftool
« Respuesta #1 on: 17 jul 2009, 07:46 am »
Se me ocurre interpretar dicho resultado, quitando los dos últimos caracteres y ponerle delante el - dependiendo de que el último sea una W o una S. Pero tal vez haya algo más fácil. Y esa es la primera pregunta. :??

Creo que no tienes porque cambiarlo, exiftool traga de todo (con signo o con puntos cardinales), al menos eso dice en la faq:

http://www.sno.phy.queensu.ca/~phil/exiftool/faq.html#Q14
Admiro a la gente que sabe contar historias solamente con sus fotos, porque en el fondo las fotos son como los chistes; si tienes que explicarlas es que no son buenas...


Colegota

  • Palizas oficial
  • *
  • Mensajes: 8188
  • ¡Me faltan carretes!
    • ¡Me faltan carretes!
Re: Ayuda para volcar datos GPS a un fichero con exiftool
« Respuesta #2 on: 17 jul 2009, 07:54 am »
Gracias Redy, pero lo que trato es de que exiftool "me devuelva" en formato -8.3455. No de dárselo yo.
Lo que quiero es que tengo las fotos ya georeferenciadas y hacer un script para generar el fichero de marcadores extayendo con exiftool la información que hay en las fotos.
[Canon EOS 50 40D (sin diapos ni nada)] [Escáner Minolta DSE 5400] [Vuescan] [El GIMP] [Galería] [Página de Viajes]

redy

  • Moderador
  • Bimilenari@
  • *****
  • Mensajes: 2897
  • Gnudista
    • Esteropes El Cíclope
Re: Ayuda para volcar datos GPS a un fichero con exiftool
« Respuesta #3 on: 17 jul 2009, 08:46 am »
Gracias Redy, pero lo que trato es de que exiftool "me devuelva" en formato -8.3455. No de dárselo yo.
Lo que quiero es que tengo las fotos ya georeferenciadas y hacer un script para generar el fichero de marcadores extayendo con exiftool la información que hay en las fotos.


Creo que no es posible, dada la forma que se almacena los datos exif

Una simpel función de bash te arregla el problema:

Código: [Seleccionar]
function trad_cord
{
   local COORD SIGN
   read COORD SIGN <<<$1
   case $SIGN in
      E*|N*|e*|n*)
         SIGN=""
      ;;
      W*|S*|w*|s*)
         SIGN="-"
      ;;
   esac
   echo ${SIGN}${COORD}
}

## Ejemplos de uso
# Para pintar el valor
trad_cord "12.2345 W"
trad_cord " 12.2345 W "
trad_cord "12.2345 West "
trad_cord " 12.2345 south "

#Para asignar el valor a una variable

COORD=$( trad_cord "12.2345 west" )
echo $COORD

Admiro a la gente que sabe contar historias solamente con sus fotos, porque en el fondo las fotos son como los chistes; si tienes que explicarlas es que no son buenas...


Colegota

  • Palizas oficial
  • *
  • Mensajes: 8188
  • ¡Me faltan carretes!
    • ¡Me faltan carretes!
Re: Ayuda para volcar datos GPS a un fichero con exiftool
« Respuesta #4 on: 17 jul 2009, 15:46 pm »
Buenas,

Creo que no es posible, dada la forma que se almacena los datos exif

yap, eso era lo que me temía. :(

Gracias por la función. Ya sabes que no estoy acostumbrado al shell y la traducción desde C y similares no es directa. Os iré poniendo los avances.

Saludos,
Colegota
[Canon EOS 50 40D (sin diapos ni nada)] [Escáner Minolta DSE 5400] [Vuescan] [El GIMP] [Galería] [Página de Viajes]

Colegota

  • Palizas oficial
  • *
  • Mensajes: 8188
  • ¡Me faltan carretes!
    • ¡Me faltan carretes!
Re: Ayuda para volcar datos GPS a un fichero con exiftool
« Respuesta #5 on: 14 ago 2009, 18:59 pm »
Buenas,

pues aunque no era la idea original para lo que necesitaba la ayuda, le he sacado una nueva utilidad al exiftool y la función de Redy.

Le estaba dando vueltas en la cabeza a que eso de decirle a la gente que se instalase el Firefox con su plugin de exif para poder ver en el mapa dónde se ha hecho la foto era un poco complejo para quienes no están acostumbrados a estas cosas o simplemente cuando estamos con un ordenador que no es el nuestro.

Además, el plugin mencionado no enlaza a Openstreetmap e incluso en el enlace al de Google Maps no pone el marcador, con lo que lo tienes que adivinar. Así que me he hecho un pequeño script que básicamente le das una foto o un grupo (con asteriscos) de tu disco duro y te genera el código BBC para ponerlo en el foro. El que conseguimos a base de pinchar en los iconos y emoticonos.

Es responsabilidad del forero georeferenciar las fotos y subirlas al almacén, como paso previo a redactar el mensaje en el foro.

El script se puede ir mejorando y ampliando. De momento, como siempre, quería algo que funcionase. Parte de la base de que tienes una cuenta en el almacén cuya url base tienes que modificar con la tuya. Como sabéis la última parte es el código de usuario. El mío es el 10002 y cada uno sabe el suyo. Si las fotos no las tenéis en el almacén, poner la url base de las vuestras, pero tenéis que cambiar también el prefijo para las fotos medianas más adelante, que en el almacén es "normal_".

Código: [Seleccionar]
#___ inicialización de variables ___

carpeta_almacen="http://www.fotolibre.org/albums/userpics/10002/"

url_base="http://www.openstreetmap.org/?zoom=13"

tipo_mapa="&layers=00B0FTF"   #___ cycle map ___

#___ función de Redy para convertir las coordenadas de formato exiftool al de los mapas ___
function trad_cord
{
   local COORD SIGN
   read COORD SIGN <<<$1
   case $SIGN in
      E*|N*|e*|n*)
         SIGN=""
      ;;
      W*|S*|w*|s*)
         SIGN="-"
      ;;
   esac
   echo ${SIGN}${COORD}
}

#___ borramos fichero con ruta de la carpeta ___
echo -e "$(pwd)\n\n" > mensaje-bbc.txt

while (($# > 0 )) # Mientras siga habiendo argumentos
do
   if file -i $1 |grep -q "image/jpeg"
   then

      foto=$1
      echo $foto

      lon=$( trad_cord "$(exiftool -S -t -GPSLongitude -c %.6f "$foto")" )
      lat=$( trad_cord "$(exiftool -S -t -GPSLatitude -c %.6f "$foto")" )

      url_enlace="$url_base$tipo_mapa&mlat=$lat&mlon=$lon"

      #___ código de la foto ___
      codigo_bbc="[center]\n[url=$carpeta_almacen$foto][img]$carpeta_almacen""normal_$foto[/img][/url]"

      #___ código del enlace al mapa ___
      codigo_bbc="$codigo_bbc\n[url=$url_enlace]Ver en el mapa donde fue tomada esta foto (Openstreetmap.org)[/url]\n[/center]\n\n"

      #___ añadimos el código bbc de cada foto al fichero ___
      echo -en $codigo_bbc >> mensaje-bbc.txt

   else
         echo "Error $1 no es un fichero jpg" >&2
   fi
   shift # Descarto el argumento que acabo de procesar y a por el siguiente
done

Como veis, hay más código de Redy por ahí... :)o

El uso es llamarlo con la foto o fotos que queramos.

Código: [Seleccionar]
$ generar_bbc_foto f-komodo-IMG_9838-c01.jpg

$ generar_bbc_foto f-*

Graba un fichero mensaje-bbc.txt con el código que hay que poner en el foro. Por ejemplo:

Código: [Seleccionar]
[center]
[url=http://www.fotolibre.org/albums/userpics/10002/f-komodo-IMG_9834-c01.jpg][img]http://www.fotolibre.org/albums/userpics/10002/normal_f-komodo-IMG_9834-c01.jpg[/img][/url]
[url=http://www.openstreetmap.org/?zoom=13&layers=00B0FTF&mlat=-8.656434&mlon=119.718312]Ver en el mapa donde fue tomada esta foto (Openstreetmap.org)[/url]
[/center]

Que produce la siguiente salida.


Se admiten cualquier tipo de comentarios o sugerencias tanto sobre el código, como sobre el texto que he puesto para enlazar que no me convence mucho o cualquier cosa relacionada. :)

El siguiente paso como ya dije es generar información para poner las miniaturas de las fotos en un mapa.

Saludos,
Colegota

[Canon EOS 50 40D (sin diapos ni nada)] [Escáner Minolta DSE 5400] [Vuescan] [El GIMP] [Galería] [Página de Viajes]

JoRdi

  • Palizas oficial
  • *
  • Mensajes: 10191
Re: Ayuda para volcar datos GPS a un fichero con exiftool
« Respuesta #6 on: 15 ago 2009, 06:10 am »
Buenas,

Así que me he hecho un pequeño script que básicamente le das una foto o un grupo (con asteriscos) de tu disco duro y te genera el código BBC para ponerlo en el foro.

Gran iniciativa :ok: , es muy interesante poder saber donde se realizó la fotografía.

Se admiten cualquier tipo de comentarios o sugerencias tanto sobre el código, como sobre el texto que he puesto para enlazar que no me convence mucho o cualquier cosa relacionada.

Poco te voy a poder ayudar sobre el código socio, estoy yo muy verde para estas cosas ::-)

Ta lu3go :-v-