我在寫一個基於EXIF標題重命名文件的bash腳本。 exiftool返回以下GPS位置字符串,我需要將其格式化爲緯度/經度座標,以便與Google Maps API一起使用。使用awk將GPS位置轉換爲經度和緯度
GPS Position : 40 deg 44' 49.36" N, 73 deg 56' 28.18" W
谷歌地圖:
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.7470444,-073.9411611
這是我的代碼
awk -v FS="[ \t]" '{print $0,substr($1,length($1),1)substr($2,length($2),1)}' $1 \
| sed 's/\xc2\xb0\([0-9]\{1,2\}\).\([NEWS]\)/ \1 0 \2/g;s/\xc2\xb0\([NEWS]\)/ 0 0 \1/g;s/[^0-9NEWS]/ /g' \
| awk '{if ($9=="NE") {printf ("%.4f\t%.4f\n",$1+$2/60+$3/3600,$5+$6/60+$7/3600)} \
else if ($9=="NW") {printf ("%.4f\t%.4f\n",$1+$2/60+$3/3600,-($5+$6/60+$7/3600))} \
else if ($9=="SE") {printf ("%.4f\t%.4f\n",-($1+$2/60+$3/3600),$5+$6/60+$7/3600)} \
else if ($9=="SW") {printf ("%.4f\t%.4f\n",-($1+$2/60+$3/3600),-($5+$6/60+$7/3600))}}'
我得到這個錯誤:
sed: RE error: illegal byte sequence
我需要的是一個有效的awk命令去除「deg」和NSEW文本,併除以3600而60%的這篇文章:
how to convert gps north and gps west to lat/long in objective c
40度44' 49.36" N,73度56' 28.18" W> 40.7470444,-073.9411611
請幫幫忙!
爲什麼你在你的sed的模式,這些'\ xb0'和'\ xc2'擴展ASCII碼?你使用什麼版本的sed?你看看http://stackoverflow.com/questions/19242275/re-error-illegal-byte-sequence-on-mac-os-x? –
EXIF輸出是否有「deg」或「°」? – srvsh
答案就在這裏: http://stackoverflow.com/questions/18304358/convert-co-ordinate-dms-to-decimal-degrees-using-awk – utt50