o
    <Ôc½3  ã                   @   sL   d dl Z d dlZd dlZd dlZd dlm  mZ d dlZG dd„ dƒZdS )é    Nc                   @   sn   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚSensorsÚFalsec                 C   sº   t  d¡| _tj t j t  d¡d¡¡ ddlm} || _|| _	|| _
|| _d | _d | _|dkr4d| _nd| _tt t j | j	d	¡¡t t j | j	d
¡¡ t t j | j	d¡¡ ƒ| _d S )NÚPATHÚ
ISCE_STACKÚstripmapStackr   )ÚuncompressfileÚTrueÚrawÚslcz*.zipz*.tarz*.gz)ÚosÚgetenvÚsystem_pathÚsysÚpathÚappendÚjoinZuncompressFiler   Ú	input_dirÚ
output_dirÚrmfileÚsensorÚ
sensor_strÚ	data_typeÚsortedÚglobÚ	file_list)Úselfr   r   Úremove_fileÚmultiple_raw_framer   © r   úE/home/exouser/operations/rsmas_insar/minsar/objects/unpack_sensors.pyÚ__init__   s$   ÿþzSensors.__init__c                 C   s$   |   ¡  |  ¡  |  ¡  |  ¡ }|S )N)Úget_sensor_typeÚunpackÚchange_folder_names_to_dateÚcreate_run_unpack)r   Zunpack_runfiler   r   r   Ústart$   s
   zSensors.startc              
   C   sÞ   d}d}d}d}d}d}d}d}d	}	d
}
|||||||||	|
f
}d}t t||ƒƒ}d}|D ]"}tjtj | jd|¡ddD ]}d}|}dtj |¡v rNd| _	 q-|rdt
d||  ƒ || _|| | _d S t
dƒ t d¡ d S )NzASA*zER*CEOS*zER*ESA*zALPSRP*z	00*ALOS2*zEL*zCSK*zdims_op*zT*X1*zRS2*SLC*)
ÚEnvisatÚERS_CEOSÚERS_ENVÚALOS1ÚALOS2ÚCSKr+   úTSX/TDXr,   ÚRSAT2Fz**T©Ú	recursiveZRAWr	   zLooks like zKDid not find the sensor automatically, unzip and run unpack routines manualr   )ÚdictÚzipr   Úiglobr   r   r   r   Úbasenamer   Úprintr   r   r   Úexit)r   ZENV_strZERS_CEOS_strZERS_ENV_strZ	ALOS1_strZ	ALOS2_strZCSK_strZCSK_str2ZTSX_TDX_DLR_strZTSX_TDX_strZ	RSAT2_strZsensor_str_listZsensor_listr   Zsensor_foundr   ÚfileZsensor_str_keepr   r   r   r!   -   s<    €
ý
zSensors.get_sensor_typec              	   C   sz  | j D ]q}tj |¡}tj |¡ d¡d }tj ||¡}tj |¡rt|  ||¡}|sDtj	tj |d¡dd t 
|tj |dd¡¡ q| jdv rUt |¡ td| ƒ qtj	tj |d¡dd d	| d
 tj |dd¡ }t |¡ qt tj | j| j¡¡}|D ]7}tj |¡}| d¡}	|	d }
tj tj |¡|
¡}
|
|ksºtj |
¡rºtd| d |
 d ƒ t |¡ qƒd S )NÚ.r   ZFAILED_FILEST©Úexist_ok)Tr   z
Deleting: ZARCHIVED_FILESúmv ú zRemove z as z
 exists...)r   r   r   Údirnamer3   Úsplitr   Úisfiler   ÚmakedirsÚrenamer   Úremover4   Úsystemr   r   r   ÚisdirÚshutilÚrmtree)r   Zin_fileÚworkdirÚ
out_folderZsuccessflag_unzipÚcmdÚimage_foldersÚimage_folderÚtempÚpartsZimage_outfolder_tempr   r   r   r"   W   s8   



€

€zSensors.unpackc           	      C   sÜ   t   tj | j| j¡¡}|D ]]}|  |¡\}}tj |¡}|rctj ||d¡}tj|dd tj |tj 	|¡¡}tj 
|¡rDt |¡ d| d | d }t |¡ d| }t |¡ td| ƒ qtd	| d
 ƒ qd S )NÚ Tr8   r:   z/* r7   zrmdir z%changing folder name to date Succes: z%changing folder name to date Failed: z(
Sensor is not supported, do it manually)r   r   r   r   r   r   Úget_dater<   r?   r3   rC   rD   rE   rB   r4   )	r   rI   rJ   ÚsuccessflagZimgDaterF   ZSLC_dirZimage_folder_outrH   r   r   r   r#   ‡   s&   


ÿz#Sensors.change_folder_names_to_datec                 C   s   d| j v r|  |¡\}}||fS d| j v r |  |¡\}}||fS d| j v r0|  |¡\}}||fS d| j v r@|  |¡\}}||fS d}d}||fS )NÚALOSr+   r-   ÚTSXFÚFAIL)r   Úget_ALOS_dateÚget_CSK_dateÚget_RSAT_dateÚget_TSX_TDX_date)r   Zdata_folderrO   ÚacquisitionDater   r   r   rN   ¥   s   

ó
ö	
ùýzSensors.get_datec              
   C   sÌ   d}|D ]Y}t   tj ||¡¡}t|ƒdkr]|D ]D}i }t|ƒ}|D ]}| d¡}	|	d  ¡ ||	d  ¡ < q#W d   ƒ n1 sAw   Y  t|d dd… ƒ}
|
r\d}||
f    S qqd}d	}
||
fS )
N)z*workreportzsummary.txtr   ú=é   ZImg_SceneCenterDateTimeé	   TFrR   )	r   r   r   r   ÚlenÚopenr=   ÚstripÚstr)r   Z
ALOSfolderZworkreport_filesZworkreport_fileZworkreportsZ
workreportZtemplate_dictZopenfileÚlineÚcrW   rO   r   r   r   rS   ¹   s*   

þÿþ€zSensors.get_ALOS_datec                 C   s†   t   tj |d¡¡}t|ƒdkr;tj |d ¡}| d¡}t|ƒdkr;t|d ƒdkr;|d }|dd… }d}||fS d}d}||fS )NzCSK*.h5r   Ú_é   TFrR   )r   r   r   r   r[   r3   r=   )r   Z	CSKfolderZCSKfilerL   rW   rO   r   r   r   rT   Ò   s   
zSensors.get_CSK_datec                 C   sÄ   t   tj |d¡¡}t|ƒdkrZ|d }t |¡}| ¡ }| d¡D ]}t	|ƒ}q"|D ]"}|j
dkrM|j}|dd… }	|dd… |dd	…  |d
d…  }
q+t|
ƒd
krZd}||
fS d}d}
||
fS )Nzproduct.xmlr   z8{http://www.rsi.ca/rs2/prod/xml/schemas}sourceAttributesz8{http://www.rsi.ca/rs2/prod/xml/schemas}rawDataStartTimeé   é   é   é   é   rb   é
   TFrR   )r   r   r   r   r[   ÚetreeÚparseÚgetrootÚiterÚListÚtagÚtext)r   ZRSAT2folderZ	RSAT2fileÚtreeÚrootÚ
attributesZattribute_listÚ	attributeÚdateÚUTCrW   rO   r   r   r   rU   æ   s&   


$€zSensors.get_RSAT_datec                 C   s|   z0t j tj |d¡ddd }t|ƒdkr.| d¡d  d¡d }|dd	… }d}||fW S W d S    d
}d}||f Y S )NzT*X-1.SAR.L1B/T*X*/T*X*.xmlTr.   r   r7   éþÿÿÿra   éÿÿÿÿrb   FrR   )r   r   r   r   r[   r=   )r   ZTXfolderZTXfilerW   rO   r   r   r   rV     s   
üzSensors.get_TSX_TDX_datec              	   C   s,  t j t  d¡d¡}t j |d¡}ddddddd	d
dœ}| j| ¡ v r-|d || j ¡ }| jdkr6|d }|d }t j | jd¡}t	 	t j | jd¡¡}| j
d ur”t|dƒ}t j | j¡d | _
|D ]0}t j |¡}t j | j
|¡}	t j|	dd |d t j |¡ d |	 }
t|
ƒ | |
d ¡ qc|S )Nr   r   ZunpackFrameZENVÚERSrP   r*   r+   rQ   r-   )r&   r'   r(   r)   r*   r+   r,   r-   z_{}r	   Z_rawz.pyZrun_0_unPack_rawz2*Úwz/SLCTr8   z -i z -o Ú
)r   r   r   r   r   ÚkeysÚformatr   r   r   r   r\   r<   r3   r?   Úabspathr4   Úwrite)r   Zscript_pathZunpack_scriptZsensor_list_affixZ
run_unPackZdateDirsÚfZdateDirrW   ÚslcDirrH   r   r   r   r$     s.   
ÿ


zSensors.create_run_unpackc                 C   s   | j tjd< d S )Nr   )r   r   Úenviron)r   r   r   r   Úclose5  s   zSensors.closeN)r   r   )Ú__name__Ú
__module__Ú__qualname__r    r%   r!   r"   r#   rN   rS   rT   rU   rV   r$   r‚   r   r   r   r   r      s    
	*0"r   )	r   r   r   ÚargparseÚxml.etree.ElementTreeri   ÚElementTreerD   r   r   r   r   r   Ú<module>   s   