휴대폰으로 gps 태그를 포함하여 사진을 저장할 수 있다. 보통 사진을 너무 많이 찍는데 기억할만한 장소를 표시하고 싶다. 역시 구글링을 해보니 perl로 제작한 좋은 페이지를 찾았다.
사진에 저장된 gps 태그를 보면 삼성 카메라 경우 각도+분+초로 되어있다. 이를 소수점으로 변환해야 한다. 공식은 (초/60 + 분)/60+각도다.
하나 문제가 있는데 사진을 저장할 때 숫자로 저장하지 않아 뒤쪽 소수점을 다 날렸다. 사진 경로를 찾아 파일에 저장된 정확한 gps 위치를 기록해야 한다.
가지고 있는 데이터베이스를 날릴 수 없어, id와 경로를 보고 위도, 경도를 업데이트 하기로 했다. 일단 위 식에 맞는 스크립트를 만들었다.
#!/bin/bash #$1은 파일 경로. 데이터베이스에서 추출. #file 유무 확인 if [ ! -f $1 ];then echo "file is not there"; exit fi GpsLat=$(exiv2 -pa $1 2> /dev/null | grep -ae "Exif\.GPSInfo\.GPSLatitude.*Rational" | sed 's/ \{1,\}/ /g' | cut -d' ' -f4-) GpsLong=$(exiv2 -pa $1 2> /dev/null | grep -ae "Exif\.GPSInfo\.GPSLongitude.*Rational" | sed 's/ \{1,\}/ /g'| cut -d' ' -f4-) #echo $GpsLat; #echo $GpsLong; #GpsLat마지막 숫자 GpsLatSec=$(echo $GpsLat | cut -d' ' -f3 | tr -d "\"") GpsLatMin=$(echo $GpsLat | cut -d' ' -f2 | tr -d "\'") GpsLongSec=$(echo $GpsLong | cut -d' ' -f3 | tr -d "\"") GpsLongMin=$(echo $GpsLong | cut -d' ' -f2 | tr -d "\'") #echo $GpsLatSec #echo $GpsLatMin GpsLatFloat=$(bc <<< "scale=4;($GpsLatSec/60+$GpsLatMin)/60") GpsLongFloat=$(bc <<< "scale=4;($GpsLongSec/60+$GpsLongMin)/60") #echo $GpsLatFloat #echo $GpsLongFloat #$Gps 인티저 GpsLatInt=$(echo $GpsLat | cut -d' ' -f1 | tr -d "d-g"); GpsLongInt=$(echo $GpsLong | cut -d' ' -f1 | tr -d "d-g"); #echo $GpsLatInt #echo $GpsLongInt #전체 숫자. GpsLatFull=$(bc <<< "scale=4;$GpsLatFloat+$GpsLatInt"); GpsLongFull=$(bc <<< "scale=4;$GpsLongFloat+$GpsLongInt"); echo $GpsLatFull; echo $GpsLongFull;
이제 데이터베이스를 내용을 파일로 출력하여 경로를 위 스크립트 인자로 넣어주면 된다.