使用exiftool为照片批量添加空间坐标

经常面临这样的问题:出野外拍了很多照片,或出去旅游拍了不少照片,但由于相机上未带GPS,导致相片的exif信息上是没有空间坐标信息的,所以经常需要将一堆照片附加空间坐标信息。常用的解决办法是拍照时再随身携带一个GPS,每次拍照都打一个点,这样可以根据时间信息将空间信息后期对应到照片上。但有的时候,我们并不想携带一个GPS或没有GPS,这是就带GPS的智能手机就发挥作用了(打开GPS然后拍照,相当于GPS导航仪的打点功能)。

一、下载&安装exiftool软件
从官方下载该软件的对应版本,目前支持windows和mac系统。

二、基于GPS设备的处理

exiftool -geotag=track.log /Users/username/path/to/picture

其中,track.log是GPS设备的记录,根据时间信息对应到需要处理的照片上。

三、基于智能手机的处理
首先,需要在拍照的同时,使用打开GPS的智能手机拍照。之后将智能手机的对应照片拷贝出来,从这些照片中将对应的GPS信息导出。

exiftool -fileOrder gpsdatetime -p gpx.fmt -d %Y-%m-%dT%H:%M:%SZ /Users/username/path/to/phone_pictures > out.gpx

其中,gpx.fmt是一个模板,其文件内容如下:

#------------------------------------------------------------------------------
# File: gpx.fmt
#
# Description: Example ExifTool print format file for generating GPX track log
#
# Usage: exiftool -p gpx.fmt -d %Y-%m-%dT%H:%M:%SZ FILE [...] > out.gpx
#
# Requires: ExifTool version 8.10 or later
#
# Revisions: 2010/02/05 - P. Harvey created
#
# Notes: 1) All input files must contain GPSLatitude and GPSLongitude.
# 2) The -fileOrder option may be used to control the order of the
# generated track points.
#------------------------------------------------------------------------------
#[HEAD]
#[HEAD]
#[HEAD] #[HEAD]1
#[HEAD] #[BODY] #[BODY] $gpsaltitude#
#[BODY]
#[BODY]
#[TAIL]
#[TAIL]
#[TAIL]

然后基于生成的out.gpx结果,给待处理的照片添加gps:

exiftool -geotag out.gpx '-geotime<${DateTimeOriginal}+00:00' /path/to/pictures

更多使用方法请参考:
Geotagging with ExifTool

如何求系列经纬度点间的距离?

给定一定数量的经纬度坐标点,比如用GPS得到的一些点坐标,如何计算这些点之间的距离?

方法一:若数量少的话,直接利用一些网页工具计算点之间的距离,如这个地址,使用了WGS84的椭球参数。

方法二:采用ms office/openoffice里的宏功能,创建自定义函数,计算经纬度坐标对的距离。

你还有其他的方法么?