いろいろ教えていただいてありがとうございます。
PILライブラリは読み込みのみ対応しているようで、代わりにpyexiv2ライブラリを使ってみました。
PythonCreatorのPython Script:
import fmeobjects
import pyexiv2
import math
from datetime import datetime as dt
from fractions import Fraction
def dms_to_decimal(listdms):
sum=0.0
for idx,item in enumerate(listdms):
sum+=item/(math.pow(60,idx))
return sum
class FeatureCreator(object):
def __init__(self):
pass
def close(self):
f=r"H:\IMG_0295.jpg"
metadata=pyexiv2.ImageMetadata(f)
metadata.read()
ShootingDT=metadata["Exif.Photo.DateTimeDigitized"]
latitude=metadata["Exif.GPSInfo.GPSLatitude"]
longitude=metadata["Exif.GPSInfo.GPSLongitude"]
feature = fmeobjects.FMEFeature()
feature.setAttribute("ShootingDateTime",ShootingDT.value.strftime("%Y/%m/%d %H:%M:%S"))
feature.setAttribute("latitude",dms_to_decimal(latitude.value))
feature.setAttribute("longitude",dms_to_decimal(longitude.value))
newDTStr=dt.strptime("2015/10/26 12:30:34","%Y/%m/%d %H:%M:%S")
ShootingDT.value=newDTStr
metadata['Exif.Image.DateTime'].value=newDTStr
metadata['Exif.Photo.DateTimeOriginal'].value=newDTStr
latitude.value=[Fraction(36, 1), Fraction(14, 1), Fraction(217, 50)]
longitude.value=[Fraction(136, 1), Fraction(3, 1), Fraction(113, 50)]
metadata.write()
metadata.read()
ShootingDT_New=metadata["Exif.Photo.DateTimeDigitized"]
latitude_New=metadata["Exif.GPSInfo.GPSLatitude"]
longitude_New=metadata["Exif.GPSInfo.GPSLongitude"]
feature.setAttribute("ShootingDateTime_New",ShootingDT_New.value.strftime("%Y/%m/%d %H:%M:%S"))
feature.setAttribute("latitude_New",dms_to_decimal(latitude_New.value))
feature.setAttribute("longitude_New",dms_to_decimal(longitude_New.value))
self.pyoutput(feature)
Attributes to Expose: [ShootingDateTime],[latitude],[longitude],[ShootingDateTime_New],[latitude_New],[longitude_New]
実行後、ShootingDateTime latitude longitude ShootingDateTime_New latitude_New longitude_Newの各属性で変更前後の値を確認できます。
CSVファイルを読み込んで、PythonCreatorの代わりに、PythonCallerを使えば、各CSVの行に対して処理は可能だと思います。
このような場合、確かにFeatureWriterを使うと簡素化できると思います。
本来の使い方と違うかもしれませんが、FeatureWriterを使って、以前ここで質問をしていた元のShapeファイルを上書きすることもサポートされるのでしょうか?