Shell-Script

將不同的 GPS 數據添加到一系列照片的 Shell 腳本

  • February 10, 2017

我有一架無人機,我用它來製作飛行電影,我將使用這個鏡頭來建構我正在拍攝的地形的 DEM(數字高程模型)。我可以很容易地從電影中提取幀,但是方法 (ffmpeg) 沒有為這些幀提供可靠建構 DEM 所需的緯度-經度-海拔等資訊。所有這些數據都可以在我下載的無人機飛行控制應用程序中儲存的 .csv 文件中獲得。

我想從這個 .csv 文件中提取所有導航數據列。我可以使用 awk 做到這一點。然後我想編寫一個腳本,將飛行路徑中某個時間戳的導航數據附加到從電影中提取的相應靜止幀(在同一時間戳)。我可以使用 exiftool 將 GPS 數據附加到圖像上,但是對於 shell 腳本來說還是很新的,我無法讓我目前的嵌套循環工作。

目前,我的腳本將.csv 文件中的所有行寫入文件夾中的每張圖片。相反,我想將 line1 (lat-lon-elev-etc) 寫入 photo1,將 line2 寫入 photo2,依此類推。我覺得我應該能夠解決這個問題,但無法破解它:非常歡迎任何幫助!

# 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

如果您的照片數量與 CSV 文件中的行數相同,則可以使用簡單的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

引用自:https://unix.stackexchange.com/questions/344020