【发布时间】:2015-10-01 04:53:29
【问题描述】:
我正在编写一个基于 EXIF 标头重命名文件的 bash 脚本。 exiftool 返回以下 GPS 位置字符串,我需要将其格式化为纬度/经度坐标以便与 Google Maps API 一起使用。
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?你看stackoverflow.com/questions/19242275/…了吗? -
EXIF 输出是否有
deg或°?