Sonntag, August 29, 2010

GPS Location aus Bild ermitteln

Mit dem folgenden Skript lassen sich die GPS Daten aus JPEG Dateien auslesen.
Es erzeugt neben der reinen Ausgabe der Koordinaten auch einen hilfreichen Google Maps Link.

Aufruf:

python picturedelphi.py bildatei.jpg

Ausgabe:

PICTURE WAS TAKEN AT ==================
LON: -86.88650000
LAT: 41.73200000
GOOGLE MAPS LOCATION ==================
http://maps.google.com/?q=41.73200000,-86.88650000

#!/usr/bin/python
# Florian Roth
# PictureDelphi 0.1
# August 2010

import sys
from PIL import Image
from PIL.ExifTags import TAGS

def get_exif(fn):
ret = {}
i = Image.open(fn)
try:
info = i._getexif()
for tag, value in info.items():
decoded = TAGS.get(tag, tag)
if decoded == "GPSInfo":
ret["GPSInfo"] = value
lat_t = ret["GPSInfo"][1]
lon_t = ret["GPSInfo"][3]

lat = float(ret["GPSInfo"][2][0][0])
lat_add = float( ret["GPSInfo"][2][1][0] )
lat_add = lat_add/60/100
lat = lat+lat_add
if lat_t == "S":
lat *= -1;

lon = float(ret["GPSInfo"][4][0][0])
lon_add = float( ret["GPSInfo"][4][1][0] )
lon_add = lon_add/60/100
lon = lon+lon_add
if lon_t == "W":
lon *= -1;

print "PICTURE WAS TAKEN AT =================="
print "LON: %.8f"%lon
print "LAT: %.8f"%lat
print "GOOGLE MAPS LOCATION =================="
print "http://maps.google.com/?q=%.8f,%.8f"%(lat,lon);
except:
print "No GPS data present in picture meta data"

foto = sys.argv[1]
get_exif(foto)