def search_gpsalbum(g, gpsrange, dataset): """search the image with the specific gps range from the albumgraph. Args: g - graph from gremlin server gpsrange - gps range user want [[latitude_lb,latitude_ub],[longitude_lb,longitude_ub]] dataset- 'l' for large dataset, 's' for small dataset Returns: gps_album - an album of images with same tag. """ print "searching for: ", gpsrange gps_album = {} image_id = g.V().has('latitude', P.inside( gpsrange[0][0], gpsrange[0][1])).has( 'longitude', P.inside(gpsrange[1][0], gpsrange[1][1])).values('image_id').toList() image_path = g.V().has('latitude', P.inside( gpsrange[0][0], gpsrange[0][1])).has( 'longitude', P.inside(gpsrange[1][0], gpsrange[1][1])).values('image_path').toList() for i in range(len(image_id)): if image_id[i] not in gps_album: gps_album[image_id[i]] = image_path[i] print image_id[i], image_path[i] return gps_album
def search_timealbum(g, timerange, dataset): """search the image with the specific timerange from the albumgraph. Args: g - graph from gremlin server time - time user want ('2017','2017:03','2017:03:31') dataset- 'l' for large dataset, 's' for small dataset Returns: time_album - an album of images with same tag. """ print "searching for: ", timerange time_album = {} image_id = g.V().has('datetime', P.inside(timerange[0], timerange[1])).values('image_id').toList() image_path = g.V().has('datetime', P.inside( timerange[0], timerange[1])).values('image_path').toList() for i in range(len(image_id)): if image_id[i] not in time_album: time_album[image_id[i]] = image_path[i] print image_id[i], image_path[i] return time_album
def entities_timeline(g, timerange, dataset): result = [] person_count = g.V().has('face_id', P.gte(0)).order().by('face_id', Order.desc)\ .values('face_id').limit(1).toList()[0]+1 print person_count for i in range(person_count): image_id = g.V().has('face_id', i).out().hasLabel('image')\ .has('datetime', P.inside(timerange[0], timerange[1])).order().by('datetime', Order.asc)\ .dedup().valueMap().toList() if len(image_id) != 0: result.append(image_id) print 'sad', result tags = g.V().hasLabel('tag').values('tag_id').toList() for tag in tags: print tag image_id = g.V().has('tag_id', tag).out().hasLabel('bbox').out().hasLabel('image')\ .has('datetime', P.inside(timerange[0], timerange[1])).order().by('datetime', Order.asc)\ .dedup().valueMap().toList() if len(image_id) != 0: result.append(image_id) print 'sadd', {'nodes': result} return result