Script shell para adicionar dados GPS diferentes a uma série de fotos

3

Eu tenho um drone que usei para fazer um filme de voo, e vou usar essa filmagem para construir um DEM (modelo de elevação digital) da topografia que estava filmando. Eu posso extrair quadros do filme com bastante facilidade, mas o método (ffmpeg) não fornece a esses quadros as informações de lat-lon-elev-etc necessárias para construir de maneira confiável o DEM. Todos esses dados estão disponíveis em um arquivo .csv armazenado no aplicativo de controle de voo do drone, que eu baixei.

Eu quero extrair desse arquivo .csv todas as colunas de dados de navegação. Eu posso fazer isso usando o awk. Então eu quero escrever um script que irá anexar os dados de navegação de um certo timestamp no caminho de vôo para um quadro fixo correspondente extraído do filme (no mesmo timestamp). Eu posso usar exiftool para anexar dados de GPS a uma imagem, mas sendo bastante novo para scripts de shell, não consigo fazer com que meu loop aninhado funcione.

Atualmente, meu script escreve todas linhas do arquivo .csv para todas as imagens da pasta. Em vez disso, quero escrever linha1 (lat-lon-elev-etc) para foto1, linha2 para foto2 e assim por diante. Eu sinto que eu deveria ser capaz de consertar isso, mas não posso quebrá-lo: qualquer ajuda muito bem vinda!

# Using awk, extract the relevant columns from the flightpath dataset
awk -F, '{print $1,$2,$3,$7,$15,$22,$23 }' test.csv > test2.csv

# Read through .csv file line-by-line
# Make variables that can be commanded
while IFS=" " read -r latitude longitude altitude time compHeading gimbHeading gimbPitch
do

# exiftool can now command these variables
# write longitude and latitude to some photograph
    for photo in *.png; do
    exiftool -GPSLongitude="$longitude"  -GPSLatitude="$latitude" *.png
    done

# Following line tells bash which textfile to draw data from
done < test2.csv
    
por brendanvolc 10.02.2017 / 15:39

1 resposta

3

Se você tiver o mesmo número de fotos que existem linhas no arquivo CSV, use um simples loop for :

for photo in *.png; do
  IFS=" " read -r latitude longitude altitude time compHeading gimbHeading gimbPitch
  exiftool -GPSLongitude="$longitude"  -GPSLatitude="$latitude" "$photo"
done < test2.csv
    
por 10.02.2017 / 15:52