9.2 Georreferenciamento de imagem

É importante fazer o georreferenciamento das imagens para possibilitar o uso destas em sites e aplicativos que mostram a posição da imagem no mapa e, também, com outros dados georreferenciados. Existem diversos aplicativos para georreferenciar imagens e, neste texto, é visto o ExifTool.

O ExifTool é uma biblioteca Perl independente de plataforma, além de um aplicativo de linha de comando, para leitura, gravação e edição de meta informações em uma ampla 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.

Abaixo está mostrada a utilização do ExifTool para georreferenciar as fotografias tiradas (imagens JPEG) no mesmo dia em que a trilha foi gravada no aparelho Garmin GPSMAP 64s.

PS > C:\Imagens\exiftool.exe -geosync="-0:00"                                    `
>>                           -geotag="20180610_centro_santa_teresa_bondinho.gpx" `
>>                           -City="Rio de Janeiro"                              `
>>                           -State="Rio de Janeiro"                             `
>>                           -Country="Brazil"                                   `
>>                           -Copyright="Halley Pacheco de Oliveira"             `
>>                           -overwrite_original                                 `
>>                           *.JPG
   34 image files updated
PS >

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.

O ExifTool é muito útil para mostrar o georreferenciamento das imagens, como mostrado abaixo:

PS > type .\getimglatlon.bat
@ECHO off
C:\Imagens\exiftool.exe -filename     ^
                        -gpslatitude  ^
                        -gpslongitude ^
                        -T            ^
                        -n            ^
                        *.JPG
PS > .\getimglatlon.bat
IMG_0001.JPG    -22.9102392978667       -43.1783745848056
IMG_0002.JPG    -22.9102649353111       -43.1784041784944
IMG_0003.JPG    -22.9102240036944       -43.1785601376833
IMG_0004.JPG    -22.9102450475222       -43.1786037236139
...
PS >

Quando se usa a opção Geosync é aconselhável tirar uma foto e marcar um ponto no mesmo local, para conferir se a sincronização da hora está correta.

O ExifTool também é muito útil quando se sabe as coordenadas da máquina fotográfica (e não do objeto fotografado) na hora em que a fotografia foi tirada, para georreferenciar a imagem, como mostrado abaixo:

PS > type .\setimglatlon.bat
@ECHO off
REM Set image GPS tags values using ExifTool.
REM Parameters:
REM     1 : Image file name with extension
REM     2 : GPSLatitude
REM     3 : GPSLatitudeRef (N,S)
REM     4 : GPSLongitude
REM     5 : GPSLongitudeRef (E,W)
REM Example:
REM     .\setimglatlon.bat IMG_0001.JPG 22.9102392978667 S 43.1783745848056 W
REM Path to the ExifTool executable
SET PATH=%PATH%;C:\Imagens\
REM Assign values to GPS tags
exiftool.exe -v2 ^
             -GPSMapDatum="WGS-84"                   ^
             -gps:GPSLatitude=%2                     ^
             -gps:GPSLatitudeRef=%3                  ^
             -gps:GPSLongitude=%4                    ^
             -gps:GPSLongitudeRef=%5                 ^
             -gps:GPSMeasureMode=2                   ^
             -Copyright="Halley Pacheco de Oliveira" ^
             -overwrite_original                     ^
             %1
REM Display GPS tags values
exiftool.exe -filename     ^
             -gpslatitude  ^
             -gpslongitude ^
             -T            ^
             -n            ^
             %1
PS > .\setimglatlon.bat IMG_0001.JPG 22.9102392978667 S 43.1783745848056 W
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 PostScript:Copyright
Writing PNG:Copyright
Writing MIE-Doc:Copyright
Writing Pentax: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
======== IMG_0001.JPG
Rewriting IMG_0001.JPG...
  Editing tags in: APP0 APP1 APP12 CIFF Ducky ExifIFD GPS IFD0 JFIF MIE-Doc MIE-GPS MakerNotes PNG PostScript XMP
  Creating tags in: APP1 GPS IFD0 MIE-Doc MIE-GPS PNG PostScript
JPEG APP1 (26962 bytes):
  Rewriting IFD0
    - IFD0:Copyright = 'Halley Pacheco de Oliveira'
    + IFD0:Copyright = 'Halley Pacheco de Oliveira'
  Rewriting ExifIFD
  Rewriting MakerNoteCanon
  Rewriting CanonCameraSettings
  Rewriting CanonFocalLength
  Rewriting CanonShotInfo
  Rewriting CanonCameraInfoUnknown
  Rewriting TimeInfo
  Rewriting CanonFileInfo
  Rewriting CropInfo
  Rewriting CustomFunctions2
  Rewriting CanonCustom2
  Rewriting AspectInfo
  Rewriting ProcessingInfo
  Rewriting MeasuredColor
  Rewriting ColorData7
  Rewriting AFMicroAdj
  Rewriting VignettingCorr
  Rewriting VignettingCorr2
  Rewriting LightingOpt
  Rewriting LensInfo
  Rewriting AmbienceInfo
  Rewriting HDRInfo
  Rewriting InteropIFD
  Rewriting GPS
    - GPS:GPSLatitudeRef = 'S'
    + GPS:GPSLatitudeRef = 'S'
    - GPS:GPSLatitude = '22 54 36.86147232'
    + GPS:GPSLatitude = '22 54 36.8614723201167'
    - GPS:GPSLongitudeRef = 'W'
    + GPS:GPSLongitudeRef = 'W'
    - GPS:GPSLongitude = '43 10 42.1485053'
    + GPS:GPSLongitude = '43 10 42.1485053001703'
    - GPS:GPSMeasureMode = '2'
    + GPS:GPSMeasureMode = '2'
    - GPS:GPSMapDatum = 'WGS-84'
    + GPS:GPSMapDatum = 'WGS-84'
  Rewriting IFD1
JPEG APP13 (52 bytes):
JPEG APP1 (3018 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.9102392978667       -43.1783745848056
PS >

Note que não foram fornecidos valores negativos para a latitude e a longitude, e sim as referências Sul (S) e Oeste (W).

Os scripts utilizados nesta página podem ser vistos no repositório WPMongoDB/img/ do GitLab, em versão Windows (.bat) e Linux (.sh).

9. Dados próprios