Problema com exiftool e geosync, possivelmente relacionado ao horário de verão

0

Eu queria geotagar todas as minhas fotos de férias com exiftool da seguinte forma:

exiftool -geotag "*.gpx" \
 -geosync "19:25:42Z@IMG_7882.jpg" \
 -geosync "09:16:34Z@IMG_9798.jpg" \
 -ext .jpg .

onde IMG_7802.jpg é uma foto do meu relógio do computador exibindo 20:25:42 MEZ em 01 de março de 2018 (= 19: 25: 42 Zulu), e similarmente IMG_9798.jpg é uma foto do relógio do meu computador exibindo 11: 16:34 MESZ em 31 de março de 2018 (= 09: 16: 34 Zulu). Eu usei duas imagens de referência (bracketing) para dar conta do desvio (e, de fato, o relógio da câmera parece ter ganhado 26 segundos durante esse mês).

O ajuste correu bem para as imagens de referência:

$ exiftool -datetimeoriginal -gpsdatetime IMG_7882.jpg 
Date/Time Original              : 2018:03:01 20:25:42
GPS Date/Time                   : 2018:03:01 19:25:42Z
$ exiftool -datetimeoriginal -gpsdatetime IMG_9798.jpg
Date/Time Original              : 2018:03:31 10:17:00
GPS Date/Time                   : 2018:03:31 09:16:34Z

Mas para imagens intermediárias, o tempo de GPS calculado é significativamente desligado, por exemplo, por cerca de meia hora no exemplo a seguir (um tempo de GPS de aproximadamente 14: 32Z é o que eu esperaria)

$ exiftool -datetimeoriginal -gpsdatetime IMG_8888.jpg
Date/Time Original              : 2018:03:17 15:32:22
GPS Date/Time                   : 2018:03:17 15:04:13.45312997Z

Assim, as longitudes e latitudes calculadas também estão muito distantes.

Meu palpite é que o problema está relacionado ao horário de verão iniciado na Alemanha entre as duas imagens de referência. Aparentemente, exiftool interpreta DateTimeOriginal no horário local (portanto, primeiro MEZ = +0100 e mais tarde MESZ = +0200 ), enquanto o relógio da câmera apenas continua com o tick (aproximadamente com +0100 offset).

P: Como posso dizer a exiftool para não assumir que o relógio da câmera (DateTimeOriginal) segue alguma regra de horário de verão?

    
por Hagen von Eitzen 01.04.2018 / 15:54

1 resposta

0

Sim, o problema, em última análise, vem da comutação de horário de verão e do fato de que DateTimeOriginal é interpretado como hora local (portanto, sujeito a alterações de horário de verão). Parece haver várias maneiras de contornar o problema

A) altere o fuso horário local

Ou seja, altere as configurações de localidade para que seu sistema esteja em um fuso horário que não alterne o horário de verão durante o intervalo de tempo e invoque exiftool como no OP.

No entanto, não recomendarei isso. Também é preciso ter cuidado para que o fuso horário sem horário de verão selecionado não seja muito distante ou senão exiftool pode estar desativado por um dia inteiro com algumas de suas suposições. Parece que o Tempo da África Ocidental (como usado na Nigéria) teria funcionado na minha situação específica.

B) Adicione informações de fuso horário a DateTimeOriginal first

Ou seja, primeiro executar

exiftool '-DateTimeOriginal<$DateTimeOriginal+01:00' -ext .jpg .

como +01: 00 era efetivamente o fuso horário da camara o tempo todo. Isso pode ter sido aconselhável de qualquer maneira para evitar futuras confusões sobre a hora em que as imagens foram tiradas. Então, novamente, estamos prestes a adicionar o tempo de GPS não ambíguo e ajustado de qualquer maneira.

Acabei fazendo

C) Use -geotime e tempos de referência explícitos com especificação de fuso horário

... como em

exiftool -geotag "*.gpx" \
 -geosync "19:25:42Z@2018:03:01 20:25:42+01:00" \
 -geosync "09:16:34Z@2018:03:31 10:17:00+01:00" \
 '-geotime<${DateTimeOriginal}+01:00' \
 -ext .jpg .

Isso diz a exiftool para usar DateTimeOriginal com o fuso horário especificado, em vez de ser interpretado como hora local. Infelizmente, isso só se aplica aos tempos lidos das imagens que estão sendo modificadas, não para os tempos lidos das imagens de referência (mesmo que se altere a ordem dos parâmetros), para que os horários explícitos (com fuso horário) tenham que ser usados em vez de referências de arquivos.

Na verdade, como minhas imagens de referência já receberam os tempos de GPS corretos dos primeiros experimentos, o que realmente fiz foi uma mistura de B e C: fiz o ajuste sugerido apenas em "B" para as duas imagens de referência:

$ exiftool '-DateTimeOriginal<$DateTimeOriginal+01:00' IMG_7882.jpg IMG_9798.jpg

para que seus dados DateTimeOriginal tenham informações de fuso horário:

$ exiftool -datetimeoriginal -gpsdatetime IMG_7882.jpg
Date/Time Original              : 2018:03:01 20:25:42.00+01:00
GPS Date/Time                   : 2018:03:01 19:25:42Z
$ exiftool -datetimeoriginal -gpsdatetime IMG_9798.jpg
Date/Time Original              : 2018:03:31 10:17:00.00+01:00
GPS Date/Time                   : 2018:03:31 09:16:34Z

Depois disso, eu poderia usar as imagens de referência pelos nomes dos arquivos

exiftool -geotag "*.gpx" \
 -geosync "IMG_7882.jpg" \
 -geosync "IMG_9798.jpg" \
 '-geotime<${DateTimeOriginal}+01:00' \
 -ext .jpg .

produz o resultado desejado para os tempos de GPS (e consequentemente para as coordenadas de GPS) também para imagens intermediárias:

$ exiftool -datetimeoriginal -gpsdatetime IMG_8888.jpg
Date/Time Original              : 2018:03:17 15:32:22
GPS Date/Time                   : 2018:03:17 14:32:08.114220008Z
    
por Hagen von Eitzen 01.04.2018 / 19:54