什么是Geocoded Photograph?
简单地说就是给数码相机照片文件加经纬度地理位置信息。
下面是wikipedia对Geocoded Photograph的解释
Picture geocoding is the action of adding the GPS position (latitude/longitude) to a picture to view the exact spot where it was taken.There are two ways to do this, either by taking a picture with a GPS enabled camera or by recording a GPS track and then matching the timestamp on the picture with the timestamp in the GPS log.
From http://en.wikipedia.org/wiki/Geocoded_photo
我给照片加经纬度的基本步骤:
(1). 在外出拍照前先打开蓝牙GPS,在GPS定位好后,运行PDA上的OZI ExplorerCE,通过蓝牙连接上GPS开始记录Track log。然后就可以关掉PDA的屏幕以省电,但PDA还处在工作状态,会继续记录GPS Track log。 之后就不用再管PDA和GPS,可以专心照相了。但需要留意PDA和GPS的电量,另外,GPS在室外才能定位,进入建筑后将无法定位。
(2). 回到家后从PDA上把plt格式track文件复制到PC上,用OZI Explorer打开,另存为.GPX格式。
(3). 把数码相机存储卡上的照片复制到电脑上
(4). 用gpsPhoto.pl或PhotoMapper 打开照片文件和GPS Track log, 软件会根据照片中的拍摄时间从track log中查找位置信息,如果找到满足条件的,则加入到照片文件EXIF数据区中。
(5).可以用专门软件把添加了经纬度的照片定位到地图上,根据照片内容和地图上的位置,检查添加到照片中的经纬度是否准确。
( 6 ). 加了经纬度信息的照片,在上传到Flickr, Panoramio 或 locr网站后,会自动导入经纬度数据,显示在地图上的定位。
这种给照片添加经纬度数据的方法要用照片中的时间和GPS Track log中的时间进行匹配,所以基本前提是照片文件中的日期是准确的(GPS的原理保证了GPS的时间是非常准确的),所以最好在拍照前检查一下数码相机的时间及时区设置,将时间设置成比较准确的。如果照片文件中的时间有偏差,也可以在PC上通过软件修改,使之成为正确的。下面会提到修改/校正照片文件时间的工具。一个知道照片文件中拍摄时间与真实时间差别数量的方法是打开相机,看数码相机当前显示的时间与当前实际时间的偏差。
下面介绍些GPS track log格式转换工具和给照片文件EXIF中添加GPS经纬度数据的工具软件。
注意:在手工/使用软件修改EXIF时要注意备份原照片文件,因为在修改照片文件EXIF过程中有潜在损坏照片文件的可能。
给数码相机照片文件自动化添加经纬度座标数据,需要下面两种文件:
1).照片文件
2).GPS Track Log文件(gpx格式)
通常,有下面几种得到GPS Track Log的途径:
(1).手持GPS机
(2).本身带记录Track log功能的GPS
(3).通过专门的软件用PDA记录蓝牙GPS的Track
如果得到的track log文件不是gpx格式,要用工具转成gpx格式。GPX (the GPS Exchange Format) is a light-weight XML data format for the interchange of GPS data (waypoints, routes, and tracks) between applications and Web services on the Internet.
在转换track log文件时要注意转换工具软件是否有时区设置选项,打开得到的xml格式的gpx文件,检查一下其中的日期,是否与照片文件的一致(通常GPS Track log中的时间是UTC世界标准时间)。当然,也可以使转换得到的track log使用与相机一致的本地时间。
GPS Track Log文件格式转换工具:
(1). OziExplorer (*.plt) -> *.gpx
对于PDA上OziExplorerCE生成的.plt文件,PC上的OziExplorer可以另存成.gpx. 当然,也可以用其它支持的工具将plt转换成gpx.
(2).GPSBabel (converts other GPS formats to GPX)
http://www.gpsbabel.org/
(3).GPS TrackMaker
http://www.gpstm.com/index.php
自动经纬度座标添加工具
这类工具可以根据数码相机照片文件的拍摄时间从GPS Track Log数据文件(.gpx)中查找对应时间的经纬度坐标数据项,然后添加到照片文件中的EXIF区中。所以要求照片文件中的时间得比较准确,如果相机的时间设置有偏差,先用工具软件调整照片文件的时间,否则导致无法根据时间匹配或匹配错误。
另外,要注意相机照片的拍摄时间通常是加了时区后的,而GPS Track log的日期通常是UTC世界标准时间。
(1)
gpsPhoto.pl
A commandline tool to synchronize a gps (gpx) tracklog with the date/time stamps of the image exif-data
http://www.carto.net/projects/photoTools/gpsPhoto/
这个命令行工具可以将track log中的经纬度数据自动匹配并添加到照片文件中。
要使用它,需要安装Active Perl,gpsPhoto.pl还需要Active Perl的EXIFTOOL和XML-Parser模块,目前网上最新版本的Active Perl包含这两个模块。
命令行用法
D:\>perl d:\gpsphoto.pl -dir=D:\Photo\20070602 -timeoffset=-28800 -gpsfile=D:\GPS_Track_Log.gpx *.JPG
D:\>perl d:\gpsphoto.pl -dir=D:\Photo\20070602 -timeoffset=-32400 -gpsfile=D:\GPS_Track_Log.gpx *.JPG
timeoffset的时间是8*60*60,对于中国,时区是+8.
ExifTool是用Perl实现的Exif处理程序,gpsPhoto.pl需要调用它。另外,用EXIFTool可以批量修改照片文件EXIF中的拍摄时间,也可以用它批量改文件名。
D:\>exiftool -AllDates+='0:0:0 0:1:0' -P *.JPG
给当前目录中所有文件的所有时间(拍摄时间)加1分钟。
D:\>exiftool -P -overwrite_original "-DateTimeOriginal>FileModifyDate" *.JPG
将照片文件修改时间用照片拍摄时间代替
用EXIFTOOL批量修改文件名
D:\>exiftool "-FileName<%f_${DateTimeOriginal}_ISO${EXIF:ISO}_F${Aperture}_${focallength}.%e" -d %Y%m%d_%H%M%S *.JPG
(2)
PhotoMapper : a user friendly application that handles gpx, hst, tcx, nmea formats.
http://software.copiks.se/photomapper/
图形界面,使用简单明了,推荐。特点:
可以显示加入的照片文件EXIF数据中的拍摄时间,经纬座标(如果文件EXIF已经有GPS数据)。
可以导入多个gpx文件,会显示出每个track log中的时间段及中央位置经纬座标,及画出track的形状。
可以批量调整照片文件拍摄时间及设置时区,因为如果相机时间不正确,会造成拍的照片中记录的拍摄时间也不正确。
可以导出数据到Google Earth,中GE中显示照片的拍摄位置,文件名及照片的缩略图。通过在GE中的显示,可以知道添加到照片中的经纬度的准确程度。
缺点:对于在Track Log中没有对应时间的数据,会通过前后时间的位置数据生成中间时间的位置,有时这样计算会导致错误。
(3)
gpicsync
Automatically geocode pictures from your camera and a GPS track log.
免费软件,功能还可以,缺点是一次只能打开一个gpx文件。
要注意UTC Offset设置,填相机的时区。结果的准确性要比PhotoMapper强。
http://code.google.com/p/gpicsync/
(4)
WWMX Location Stamper : free software from Microsoft labs
添加GPS Track log后,会自动从网上下载地图,将track log显示到地图上,打开的照片文件以缩略图方式显示。缺点:没有照片文件时间调整功能,亚洲区的地图数据详细程度不够。不支持照片文件与Track Log的时区差设置,这就要求转换得到的Track Log中的时间也得是本地时间,而不是UTC,通过软件GPS TrackMaker的时区设置可以使得到的数据是本地时间的。
http://wwmx.org/Download.aspx
(5)
PhotoGPSEditor (For MAC OS Only)
http://www.mmisoftware.co.uk/pages/photogpseditor.php
( 6 )
Photo Studio
从菜单上看可以,不过不知道它支持的GPS Track文件格式,至少gpx不行。
http://www.stuffware.co.uk/photostudio/
几个能自动使用照片文件EXIF中GPS数据项的照片分享网站:
http://www.flickr.com
要让Flickr直接导入上传的照片文件的EXIF数据及其中的经纬度座标,要修改一下两个个人隐私设置选项,
Hide your photos' EXIF data: No
Import EXIF location data: Yes
http://www.locr.com/
upload a geocoded picture and you will see it on Google Map maps
http://www.panoramio.com/
优点:申请后有2G上传流量,不用改变照片的原始分辨率,与Google Earth地图集成。
在实验和学习将GPS数据加到照片EXIF过程中,参考了下面这些有用的文章:
Picture Geocoding Guide : Hardware, Software, Workflow
http://www.gpspassion.com/fr/articles.asp?id=218
http://www.mobile01.com/print.php?f=130&t=332660&p=1
在没有GPS的情况下,如果有可能通过其它途径得到拍照时地点的经纬度坐标,一样可以通过工具添加到照片文件的EXIF数据中,比如,在Google Earth中找到拍照的地点,从而查出拍摄处的经纬度座标。
不过这个方法虽然理论上可靠,但有些难度和繁琐,而且精确度没有保证。
我的flickr和panoramio网址,上面有些照片是在地图上定位了的,欢迎大家去参观。
http://www.flickr.com/photos/jetsun/
http://www.panoramio.com/user/551200



