def add_trackpoints_to_db(trackpoints, track): for trackpoint in trackpoints: trackpoint_in_db = Trackpoint.get_trackpoint_by_lat_lon_time(trackpoint.latitude, \ trackpoint.longitude, trackpoint.timestamp) if not trackpoint_in_db: trackpoint.track_id = track.id try: DBSession.add(trackpoint) DBSession.flush() print trackpoint.timestamp except Exception, e: print "\n\nTrackpoint could not be added!\n\n" print e DBSession.rollback()
def sync_image_trackpoint(image): print(image.timestamp_original) camera_offset = timedelta(seconds=0) tight_offset = timedelta(seconds=300) # match pic within 600 seconds (10min) max_offset = timedelta(seconds=43200) # match pic within 43200 seconds (12h) curr_offset =43200 # maximum timestamp-delta of closest trackpoint in seconds for offset in (tight_offset, max_offset): start_timestamp = image.timestamp_original-camera_offset-offset end_timestamp = image.timestamp_original-camera_offset+offset trackpoints = Trackpoint.get_trackpoints_by_timerange(start_timestamp, end_timestamp) if trackpoints: break if trackpoints: for trackpoint in trackpoints: timediff = image.timestamp_original - trackpoint.timestamp curr_diff = timediff.days*86400+timediff.seconds #delta between trackpoint and image in seconds if abs(curr_diff)<curr_offset: #is absolute value of curr_diff smaller than the last curr_offset-value? curr_offset = abs(curr_diff) #set delta to the current closest delta curr_trackpoint = trackpoint #set to current closest trackpoint-match else: curr_trackpoint = None return curr_trackpoint