Georreferenciamento de imagem

ExifTool

Exiftool - Bondinho de Santa Teresa
Exiftool - Bondinho de Santa Teresa

É importante fazer o georreferenciamento das imagens para possibilitar seu uso em sites e aplicativos que mostram a posição da imagem no mapa. Existem diversos aplicativos para georreferenciar imagens, neste texto é visto o ExifTool, uma biblioteca de Perl independente de plataforma mais uma aplicação de linha de comando para leitura, escrita e edição de meta-informação numa grande variedade de arquivos.

O recurso de georreferenciamento do ExifTool adiciona tags GPS às imagens com base nos dados de um arquivo de registro de trilha do GPS. O arquivo de registro de trilha do GPS é carregado e a interpolação linear é usada para determinar a posição do GPS no momento da imagem. Isto difere das máquinas fotográficas que têm o GPS incorporado e georreferenciam as imagens na hora da foto.

Georreferenciamento usando uma trilha gravada

Abaixo está mostrada a utilização do ExifTool para georreferenciar as fotografias tiradas (imagens JPEG) usando a trilha gravada pelo aparelho Garmin GPSMAP 64s.

$ cat 20180610_centro_santa_teresa_bondinho.sh
#!/bin/sh
exiftool -geosync="+0:00"                                    \
         -geotag="20180610_centro_santa_teresa_bondinho.gpx" \
         -City="Rio de Janeiro"                              \
         -State="Rio de Janeiro"                             \
         -Country="Brazil"                                   \
         -Copyright="Halley"                                 \
         -overwrite_original                                 \
         *.JPG

$ ./20180610_centro_santa_teresa_bondinho.sh
   34 image files updated

Só é necessário utilizar o parâmetro geosync quando a hora da imagem não está devidamente sincronizada com a hora do GPS. Isto acontece quando a hora do relógio da máquina fotográfica não corresponde à hora do GPS, ou quando a zona horária do computador não corresponde à zona horária da máquina fotográfica (um está no horário de verão e o outro não, por exemplo) ao se executar o ExifTool.

Georreferenciamento fornecendo as coordenadas manualmente

O ExifTool é muito útil para definir o georreferenciamento de uma imagem, como mostrado abaixo:

$ cat ./setimglatlon.sh
#!/bin/sh
#
# Definir os valores das etiquetas GPS da imagem usando o ExifTool.
#
# Parâmetros:
#     1 : Nome da imagem com caminho e extensão
#     2 : GPSLatitude
#     3 : GPSLongitude
#
# Exemplo:
#     $ ./setimglatlon.sh ~/Imagens/100CANON/IMG_0001.JPG -22.34030 -42.43720
#
# Atribuir valores às etiquetas GPS
exiftool -v2                                     \
         -GPSMapDatum="WGS-84"                   \
         -gps:GPSLatitude=$2                     \
         -gps:GPSLatitudeRef=$2                  \
         -gps:GPSLongitude=$3                    \
         -gps:GPSLongitudeRef=$3                 \
         -gps:GPSMeasureMode=2                   \
         -Copyright="Halley"                     \
         -overwrite_original                     \
         $1
# Mostrar os valores das etiquetas GPS
exiftool -filename            \
         -gps:GPSLatitude     \
         -gps:GPSLatitudeRef  \
         -gps:GPSLongitude    \
         -gps:GPSLongitudeRef \
         -gps:GPSMeasureMode  \
         -T                   \
         -n                   \
         $1
$ ./setimglatlon.sh ~/Imagens/100CANON/IMG_0001.JPG -22.34030 -42.43720
Writing MIE-GPS:GPSMapDatum
Writing XMP-exif:GPSMapDatum if tag exists
Writing GPS:GPSMapDatum
Writing GPS:GPSLatitude
Writing GPS:GPSLatitudeRef
Writing GPS:GPSLongitude
Writing GPS:GPSLongitudeRef
Writing GPS:GPSMeasureMode
Writing Ducky:Copyright if tag exists
Writing MIE-Doc:Copyright
Writing PNG:Copyright
Writing PostScript:Copyright
Writing ItemList:Copyright if tag exists
Writing Keys:Copyright if tag exists
Writing UserData:Copyright if tag exists
Writing UserData:Copyright if tag exists
Writing ItemList:Copyright
Writing Pentax:Copyright if tag exists
Writing XMP-crd:Copyright if tag exists
Writing XMP-crs:Copyright if tag exists
Writing XMP-pdf:Copyright if tag exists
Writing XMP-pur:Copyright if tag exists
Writing XMP-tiff:Copyright if tag exists
Writing XMP-xmpDM:Copyright if tag exists
Writing IFD0:Copyright
======== /home/halley/Imagens/100CANON/IMG_0001.JPG
Rewriting /home/halley/Imagens/100CANON/IMG_0001.JPG...
  Editing tags in: APP0 APP1 APP12 CIFF Ducky ExifIFD GPS IFD0 ItemList JFIF Keys MIE-Doc MIE-GPS MakerNotes PNG PostScript UserData XMP 
  Creating tags in: APP1 GPS IFD0 ItemList MIE-Doc MIE-GPS PNG PostScript 
JPEG APP1 (19878 bytes):
  Rewriting IFD0
    - IFD0:Copyright = 'Halley'
    + IFD0:Copyright = 'Halley'
  Rewriting ExifIFD
  Rewriting MakerNoteCanon
  Rewriting CanonCameraSettings
  Rewriting CanonFocalLength
  Rewriting CanonShotInfo
  Rewriting CanonCameraInfo60D
  Rewriting CanonFileInfo
  Rewriting CropInfo
  Rewriting CustomFunctions2
  Rewriting CanonCustom2
  Rewriting AspectInfo
  Rewriting ProcessingInfo
  Rewriting MeasuredColor
  Rewriting ColorData4
  Rewriting VignettingCorr
  Rewriting VignettingCorr2
  Rewriting LightingOpt
  Rewriting LensInfo
  Rewriting AmbienceInfo
  Rewriting InteropIFD
  Rewriting GPS
    - GPS:GPSLatitudeRef = 'S'
    + GPS:GPSLatitudeRef = 'S'
    - GPS:GPSLatitude = '22 20 25.08'
    + GPS:GPSLatitude = '22 20 25.079999999997'
    - GPS:GPSLongitudeRef = 'W'
    + GPS:GPSLongitudeRef = 'W'
    - GPS:GPSLongitude = '42 26 13.92'
    + GPS:GPSLongitude = '42 26 13.9199999999897'
    - GPS:GPSMeasureMode = '2'
    + GPS:GPSMeasureMode = '2'
    - GPS:GPSMapDatum = 'WGS-84'
    + GPS:GPSMapDatum = 'WGS-84'
  Rewriting IFD1
JPEG APP1 (2558 bytes):
  Rewriting XMP
    [XMP rewritten with no changes]
JPEG DQT (130 bytes):
JPEG SOF0:
JPEG DHT (416 bytes):
JPEG SOS
    1 image files updated
IMG_0001.JPG	22.3403	S	42.4372	W	2

Note que foram fornecidos valores negativos para a latitude e a longitude, porque são Sul (S) e Oeste (W).

Nota