
    6dI                         d dl Zd dlZd dlmZ d dlZd dlZd dlZd dlZd dl	Z	d dl
mZ  G d de          Zd Zd Z ej        ej        e            ej        de            G d d	          Zd
efdZdS )    N)timeGeoObjectc                         e Zd Zd fd	Z xZS )ImageTableNotInDbException c                 h    d| | _         t                                          | j                    d S )NzImage table not in db )messagesuper__init__)selfdbName	__class__s     5/home/isk/software/changedetection/src/db_skeleton.pyr
   z#ImageTableNotInDbException.__init__   s2    888&&&&&    )r   )__name__
__module____qualname__r
   __classcell__)r   s   @r   r   r      s=        ' ' ' ' ' ' ' ' ' 'r   r   c                     t          j                    }t          j        ||            |                    d           t          j        |                                          S )zB
    http://stackoverflow.com/a/31312102/190597 (SoulNibbler)
    r   )ioBytesIOnpsaveseeksqlite3Binaryread)arrouts     r   adapt_arrayr      sH     *,,CGCHHQKKK>#((**%%%r   c                 |    t          j        |           }|                    d           t          j        |          S )Nr   )r   r   r   r   load)textr   s     r   convert_arrayr#      s.    
*T

CHHQKKK73<<r   arrayc                       e Zd ZdefdZdefdZd ZdefdZde	j
        fd	Zd
ede	j        defdZd Zd Zde	j
        defdZdS )	dbs_classdb_file_namec                    || _         d | _        d | _        |                     |           t	          j        |          5 }|                                }|                    d           |                                }t          |          | _	        d t          | j	                                                  D             | _        d d d            d S # 1 swxY w Y   d S )Nz0SELECT name,type FROM pragma_table_info('image')c                 8    g | ]\  }}d |d         v |d         S )BLOB   r    ).0idxxs      r   
<listcomp>z&dbs_class.__init__.<locals>.<listcomp>/   s2    nnnQ]cghijgk]k]kqt]k]k]kr   )r'   	connectorcursorcheck_create_dbr   connectexecutefetchalldictimage_columns	enumerateitemsimage_arrays)r   r'   r1   r2   ress        r   r
   zdbs_class.__init__%   s   '\***_\** 	oi##%%FNNMNNN!!C#CyyDnn9T=O=U=U=W=W3X3XnnnD	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	o 	os   BCCCnamec                    	 t           j                            |          s|                                  d S t	          j        |          5 }|                                }|                    d           |                                }t          |          dk    rt          |          	 d d d            d S # 1 swxY w Y   d S #  t          j                     Y d S xY w)NzBSELECT name FROM sqlite_master WHERE type='table' AND name='image'r   )ospathisfilecreate_image_dbr   r4   r2   r5   r6   lenr   kill_allkill_db_agent)r   r=   r1   r2   r<   s        r   r3   zdbs_class.check_create_db2   s   	%7>>$'' ?$$&&&&&_T** ?i$++--FNN#ghhh))C3xx{{8>>> #	? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	%"$$$$$$s5   3C C A B9,C 9B==C  B=C Cc                     d}t          j        | j                  5 }|                                }|                    |           d d d            d S # 1 swxY w Y   d S )Na  CREATE TABLE image(
            hash BIGINT PRIMARY KEY,
            fullpath TEXT  UNIQUE NOT NULL,
            id TEXT UNIQUE NOT NULL,
            image TEXT NOT NULL UNIQUE,
            range REAL,
            perc BLOB,
            time BLOB,
            lat BLOB,
            lon BLOB,
            altitude BLOB,
            yaw BLOB,
            speed BLOB,
            angv_x BLOB,
            angv_y BLOB,
            angv_z BLOB,
            bb BLOB,
            data BLOB
        );)r   r4   r'   r2   r5   )r   create_stingr1   r2   s       r   rB   zdbs_class.create_image_db@   s    & _T.// 	)9%%''FNN<(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   *AAAtimeGeoc                 8   t          j        | j                  5 }|                                }|                    d|j        f          }|                                	 d d d            d S i }|j        |d<   t          |j                  |d<   t          |j	                  |d<   |j
        |d<   t          j        |j                                                  |d<   t          j        |j                                                  |d<   t          j        |j                                                  |d<   t          j        |j                                                  |d	<   t          j        |j                                                  |d
<   t          j        |j                                                  |d<   t          j        |j                                                  |d<   t          j        |j                                                  |d<   t          j        |j                                                  |d<   t          j        |j                                                  |d<   |j        |d<   t          j        |j                                                  |d<   t          j        |j                                                  |d<   |                    dd                    |                                           ddt9          |                                          z  d d          dt;          |                                                     |                                 d d d            d S # 1 swxY w Y   d S )Nz#SELECT id FROM image WHERE hash = ?hashfullpathimageidperctimelatlonaltitudeyawspeedangv_xangv_yangv_zrangebbdatazinsert into image (,z
) VALUES (z?,)) r   r4   r'   r2   r5   rJ   fetchonestrfnamerL   rM   r   rN   tobytesrO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rtree_bbrZ   joinkeysrC   tuplevaluescommit)r   rH   r1   r2   r<   records         r   insert_imagezdbs_class.insert_image[   sH   _T.// 	9##%%F..!FXXC||~~)		 	 	 	 	 	 	 	
 F"<F6N"7=11F:..F7O F4L#N7<+?+?+A+ABBF6N#N7<+?+?+A+ABBF6N">'+*=*=*?*?@@F5M">'+*=*=*?*?@@F5M 'w/?/G/G/I/I J JF:">'+*=*=*?*?@@F5M$^GM,A,A,C,CDDF7O%nW^-C-C-E-EFFF8%nW^-C-C-E-EFFF8%nW^-C-C-E-EFFF8#MF7O!.)9)A)A)C)CDDF4L">',*>*>*@*@AAF6NNNw&++--1H1HwwUY\_`f`k`k`m`m\n\nUnpsqspsTtwww 113 3 3 9	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AN-LNNNhash_c                    t          j        | j                  5 }|                                }|                    d|f           |                                }t          |           |	 d d d            d S t          t          | j	        
                                |                    }| j        D ]+}t          j        ||         t          j                  ||<   ,t          d |          cd d d            S # 1 swxY w Y   d S )N"SELECT * FROM image WHERE hash = ?dtype)r   r4   r'   r2   r5   r^   printr7   zipr8   rd   r;   r   
frombufferfloat64r   )r   rj   r1   r2   r<   res2cols          r   
read_imagezdbs_class.read_image{   sQ   _T.// 	,9##%%FNN?%JJJ!!C#JJJ{	, 	, 	, 	, 	, 	, 	, 	, c$,1133S99::D( D D-S	
CCCS		 d++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   AC<9A6C<<D D image_idtimegeoreturnc                    t          j        | j                  5 }|                                }|                    d|f           |                                }|	 d d d            d S t          t          | j        	                                |                    | j
        D ]+}t          j        |         t          j                  |<   ,| j        D ]}t          j        |                   |<    |                     |          \  }d } |d         |d d df                     |d         |            |d         |d d df                     |d	         |d d d
f                     |d         |d d df                     |d         |d d df                     |d         |d d df                     |d         |d d df                     |d         |d d df                     |d         |d d df                    t          j        fd|d d df         D                       }	t          j        fd|d d d         D                       }
t          j        fdd         D                       }t          j        fdd         d d d         D                       } ||	|            ||
|           d d d            d S # 1 swxY w Y   d S )Nz(SELECT * FROM image WHERE image_name = ?rm   c                     | j         |j         k    rt          j        d           t          j        | |          st          j        d           d S d S )Nz#<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<z!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>)shapelogginginfor   array_equal)a1a2s     r   
cmp_arraysz)dbs_class.check_image.<locals>.cmp_arrays   sZ    8RX%%L!FGGG~b,, FL!DEEEEEF Fr   rN   r   timesrP      rQ      rR      rS      rT      rU      rV      rW   	   c                 &    g | ]} |          S r,   r,   )r-   r/   t_maps     r   r0   z)dbs_class.check_image.<locals>.<listcomp>   s!    >>>1eeAhh>>>r   c                 &    g | ]} |          S r,   r,   )r-   r/   perc_maps     r   r0   z)dbs_class.check_image.<locals>.<listcomp>   s!    "D"D"D188A;;"D"D"Dr   r\   c                 2    g | ]} d          |          S )r   r,   r-   r/   rs   s     r   r0   z)dbs_class.check_image.<locals>.<listcomp>   s'    EEE1md7mA..EEEr   c                 2    g | ]} d          |          S )r   r,   r   s     r   r0   z)dbs_class.check_image.<locals>.<listcomp>   s)    "T"T"T1#34
#3A#6#6"T"T"Tr   )r   r4   r'   r2   r5   r^   r7   rp   r8   rd   r;   r   rq   rr   image_funcspickleloadscreate_maps_for_imagesr$   )r   rv   rw   r1   r2   r<   rt   r   r   res_t_o
res_perc_ores_t_s
res_perc_sr   rs   r   s                @@@r   check_imagezdbs_class.check_image   s   _T.// &	.9##%%FNNE{SSS!!C{&	. &	. &	. &	. &	. &	. &	. &	. c$,1133S99::D( D D-S	
CCCS		' 2 2 ,tCy11S		$($?$?$H$H"E5(F F F JtF|GAAAqDM222JtG}U+++JtE{7111a4=111JtE{7111a4=111JtJ'1666JtE{7111a4=111JtG}WQQQT]333JtH~gaaadm444JtH~gaaadm444JtH~gaaadm444H>>>>1>>>??G"D"D"D"Dddd"D"D"DEEJHEEEEVEEEFFG"T"T"T"TWddPRd@S"T"T"TUUJJww'''Jz*---M&	. &	. &	. &	. &	. &	. &	. &	. &	. &	. &	. &	. &	. &	. &	. &	. &	. &	.s   AK2-I8K22K69K6c                     d S Nr,   r   s    r   create_object_dbzdbs_class.create_object_db       r   c                     d S r   r,   r   s    r   insert_objectzdbs_class.insert_object   r   r   rJ   c                 b   t          j        | j                  5 }|                                }|                    d|f           |                                }|	 d d d            d S t          t          | j        	                                |                    }| j
        D ]+}t          j        ||         t          j                  ||<   ,t          j        |d         t          |d                   dz  df          |d<   t!          |d |          cd d d            S # 1 swxY w Y   d S )Nrl   rm   rZ   
   )r   r4   r'   r2   r5   r^   r7   rp   r8   rd   r;   r   rq   rr   resizerC   r   )r   rJ   r1   r2   r<   rs   rt   s          r   is_in_image_dbzdbs_class.is_in_image_db   sw   _T.// 	19##%%FNN?$III!!C{	1 	1 	1 	1 	1 	1 	1 	1 c$,1133S99::D( D D-S	
CCCS		4<T&\1B1BB1Fr0JKKDL d400	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   AD$*B-D$$D(+D(N)r   r   r   r_   r
   r3   rB   r   ri   r   int64ru   r$   r   r   r   r   r,   r   r   r&   r&   $   s       
oC 
o 
o 
o 
o%3 % % % %) ) )6M    @, , , , ,'.C '."( '.} '. '. '. '.T    1"( 1} 1 1 1 1 1 1r   r&   fnc                     t          j        d          }t          j        |           }|                    |           |                                 |                                 d S )Nz:memory:)r   r4   backupclose)r   	memory_db	backup_dbs      r   copyMemoryToDiskr      sZ    
++I##IYOOOOr   )os.pathr?   r   src.kill_allrD   numpyr   r   r   r|   src.timeGeor   	Exceptionr   r   r#   register_adapterndarrayregister_converterr&   r_   r   r,   r   r   <module>r      s9               				 				   % % % % % %' ' ' ' ' ' ' '
& & &    [ 1 1 1  7M 2 2 2c1 c1 c1 c1 c1 c1 c1 c1L      r   