
    e0                    ~   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Zd7dZd Z	d Z
d Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d  Z%d! Z&d" Z'd# Z(d8d$Z)d9d%Z*d& Z+d' Z,d( Z-d) Z.d* Z/d+ Z0d, Z1d- Z2d. Z3d/ Z4d0 Z5d1 Z6d2 Z7d3 Z8d4 Z9d5 Z:d6 Z;y):    )saga_apiNc                    t        j                  d       t        j                  dk(  rwt        j                  d   dz   t        j                  d   z   dz   t        j                  d<   t        j
                         j                  t        j                  d   dz   d       n7t        j
                         j                  t        j                  d	      d       t        j                  d       | rzt        d
t        j                  z          t        t        j                                t        dt        t        j
                         j                               z          t                t        j
                         j                         S )NTntPATH;SAGA_32z/dllz/toolsFPYTHON_SAGA_API_LIBRARYzPython - Version znumber of loaded libraries: )r   SG_UI_Msg_LockosnameenvironSG_Get_Tool_Library_ManagerAdd_DirectorygetenvprintsysversionSAGA_API_Get_Versionstr	Get_Count)Verboses    K/p/projects/hiclap/tools/chelsa_isimip3b_ba_1km/functions/saga_functions.pyLoad_Tool_Librariesr       s   D!	ww$ZZ/#5

98MMPVV

6,,.<<RZZ	=SV^=^`ef,,.<<RYYG`=achiE"!CKK/0h++-.,s83W3W3Y3c3c3e/ffg//1;;==    c                     t        j                  d       d}t         fddD              r,t        j                         j	                  t                     }t         fddD              r,t        j                         j                  t                     }t         fddD              r,t        j                         j                  t                     }d v r,t        j                         j                  t                     }t         fd	d
D              r,t        j                         j                  t                     }||j                         dk(  rt        d z   dz          yt        d z   dz          |S )Nr   c              3   &   K   | ]  }|v  
 y wN .0spath_to_sagadatas     r   	<genexpr>z load_sagadata.<locals>.<genexpr>8        
KQ1  
K   )z.sgrdz.sg-grdzsg-grd-zc              3   &   K   | ]  }|v  
 y wr   r   r   s     r   r#   z load_sagadata.<locals>.<genexpr><   s     
AQ1  
Ar%   )zsg-gdszsg-gds-zc              3   &   K   | ]  }|v  
 y wr   r   r   s     r   r#   z load_sagadata.<locals>.<genexpr>@   s     
CQ1  
Cr%   )z.txtz.csvz.dbfz.shpc              3   &   K   | ]  }|v  
 y wr   r   r   s     r   r#   z load_sagadata.<locals>.<genexpr>H   r$   r%   )z.spcz.sg-ptsz	.sg-pts-zzERROR: loading []zFile: [z] has been loaded)r   SG_Set_History_DepthanySG_Get_Data_ManagerAdd_Gridr   	Add_Grids	Add_Table
Add_ShapesAdd_PointCloudis_Validr   )r"   saga_api_dataobjects   ` r   load_sagadatar4   2   sN   !!!$ 
K*J
KK&::<EEcJZF[\ 
A*@
AA&::<FFsK[G\] 
C*B
CC&::<FFsK[G\] !!&::<GGL\H]^ 
K*J
KK&::<KKCP`Lab"&9&B&B&D&I #33c9:	)&
&)<
<=r   c                    t        j                         j                  dd      }|t        d       y|j	                         } |d      j                  |         |d      j                  d        |d      j                  d        |d	      j                  d
       t        d|j                         j                         z          |j                         st        d       y|j                  t        j                  d            j                         j                  d      }t        dj                  |              |S )Nio_gdal0z$Failed to create tool: Import RasterFFILESMULTIPLE	automatic	TRANSFORM
RESAMPLINGNearest NeighbourExecuting tool: failedGRIDSr   $  %IO:         successfully read {0})r   r   Create_Toolr   Get_Parameters	Set_ValueGet_Namec_strExecuteGet_Parameter
CSG_String
asGridListGet_Gridformat)FileToolParmoutputs       r   import_gdalrQ   S   s    //1==iMD|45 DMD!{+&  !45	
t}}446
67<<>h 3 3G <=HHJSSTUVF	
0
7
7
=>Mr   c                    t        j                         j                  dd      }|t        d       y|j	                         } |d      j                  |         |d      j                  d        |d      j                  d        |d	      j                  d        |d
      j                  d       t        d|j                         j                         z          |j                         st        d       y|j                  t        j                  d            j                         }t        dj                  |              |S )Nr6   6z$Failed to create tool: Import NetCDFFFILE	SAVE_FILE	SAVE_PATH r;   r<   r=   r>   r?   r@   rA   )r   r   rB   r   rC   rD   rE   rF   rG   rH   rI   rJ   rL   )ncdffilerN   rO   rP   s       r   import_ncdfrY   l   s
    //1==iMD|45 DL8$&#&  !45	
t}}446
67<<>h 3 3G <=HHJF	
0
7
7
ABMr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d	             |j                  d      j                         j                  | j                         j                  d
             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  dt        j                                |j                  dd       |j                  d      j                         j                  |j                         j                  d             |j                  d      j                         j                  |j                         j                  d             |j                  d      j                         j                  |j                         j                  d             |j                  d      j                         j                  |j                         j                  d	             |j                  d      j                         j                  |j                         j                  d
             |j                  d      j                         j                  |j                         j                  d             |j                  d      j                         j                  |j                         j                  d             |j                  d      j                         j                  |j                         j                  d             |j                  d      j                         j                  |j                         j                  d             |j                  d      j                         j                  |j                         j                  d             |j                  d      j                         j                  |j                         j                  d             t        d|j                         j                         z          |j                         st        d       yt        d       |j                  t        j                   d            j                         j                  d      }|S )Nstatistics_regression9z2Failed to create tool: Polynomial Trend from GridsFY_GRIDSr                           	   
   R2ORDERX_GRIDSr>   r?   okayCOEFF)r   r   rB   r   rC   Reset_Grid_SystemrH   asListAdd_ItemrJ   rK   Set_ParameterSG_Get_Create_PointerrE   rF   rG   rI   )File1File2rN   Lists       r   polynomial_trendsru      s    //1==>UWZ[D|BC++-y!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPR4STtX;;=>w"y!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPQ4RSy!((*33E4D4D4F4O4OPR4ST	
t}}446
67<<>h	&M
 h11':;FFHQQRSTD Kr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d	          |j                  d      j                         j                  |d
          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  |d          |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d              |j                  d      j                         j                  | j                         j                  d!             |j                  d      j                         j                  | j                         j                  d"             |j                  d      j                         j                  | j                         j                  d#             |j                  d      j                         j                  | j                         j                  d$             |j                  d      j                         j                  | j                         j                  d%             |j                  d      j                         j                  | j                         j                  d&             |j                  d      j                         j                  | j                         j                  d'             |j                  d      j                         j                  | j                         j                  d(             |j                  d      j                         j                  | j                         j                  d)             |j                  d      j                         j                  | j                         j                  d*             |j                  d      j                         j                  | j                         j                  d+             |j                  d      j                         j                  | j                         j                  d,             |j                  d      j                         j                  | j                         j                  d-             |j                  d      j                         j                  | j                         j                  d.             |j                  d      j                         j                  | j                         j                  d/             |j                  d      j                         j                  | j                         j                  d0             |j                  d      j                         j                  | j                         j                  d1             |j                  d      j                         j                  | j                         j                  d2             |j                  d      j                         j                  | j                         j                  d3             |j                  d      j                         j                  | j                         j                  d4             |j                  d      j                         j                  | j                         j                  d5             |j                  d      j                         j                  | j                         j                  d6             |j                  d7|       t        d8|j                         j                         z          |j                         st        d9       yt        d:       |dk(  r|j                  d;      j                         }|d k(  r|j                  d<      j                         }|d!k(  r|j                  d=      j                         }S )>Nclimate_tools26z.Failed to create tool: Temperature Lapse RatesFTEMPz
lapse00:00z
lapse01:00z
lapse02:00z
lapse03:00z
lapse04:00z
lapse05:00z
lapse06:00z
lapse07:00z
lapse08:00z
lapse09:00z
lapse10:00z
lapse11:00z
lapse12:00z
lapse13:00z
lapse14:00z
lapse15:00z
lapse16:00z
lapse17:00z
lapse18:00z
lapse19:00z
lapse20:00z
lapse21:00z
lapse22:00z
lapse23:00TGROUNDr   r^   r_   r`   ra   rb   rc   rd   re   rf   rg                                          EXTREMEr>   r?   rk   LAPSETEXTREMETIME)r   r   rB   r   rC   rm   rH   rn   ro   rJ   rK   rp   rE   rF   rG   asDataObject)extremeparamdicttimesparam2rN   Datas          r   extreme_lapseratesr      s	    //1==otTD|>?++-v%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CDv%%'00l1CD 	y!((*33G4F4F4H4Q4QRS4TUy!((*33G4F4F4H4Q4QRS4TUy!((*33G4F4F4H4Q4QRS4TUy!((*33G4F4F4H4Q4QRS4TUy!((*33G4F4F4H4Q4QRS4TUy!((*33G4F4F4H4Q4QRS4TUy!((*33G4F4F4H4Q4QRS4TUy!((*33G4F4F4H4Q4QRS4TUy!((*33G4F4F4H4Q4QRS4TUy!((*33G4F4F4H4Q4QRS4TUy!((*33G4F4F4H4Q4QRT4UVy!((*33G4F4F4H4Q4QRT4UVy!((*33G4F4F4H4Q4QRT4UVy!((*33G4F4F4H4Q4QRT4UVy!((*33G4F4F4H4Q4QRT4UVy!((*33G4F4F4H4Q4QRT4UVy!((*33G4F4F4H4Q4QRT4UVy!((*33G4F4F4H4Q4QRT4UVy!((*33G4F4F4H4Q4QRT4UVy!((*33G4F4F4H4Q4QRT4UVy!((*33G4F4F4H4Q4QRT4UVy!((*33G4F4F4H4Q4QRT4UVy!((*33G4F4F4H4Q4QRT4UVy!((*33G4F4F4H4Q4QRT4UVy%(	
t}}446
67<<>h	&M{!!'*779{!!*-::<{!!&)668Kr   c                 v   t        j                         j                  dd      }|t        d       y|j	                         j                          |D ]6  }|j                  d      j                         j                  | d|z             8 |j                  dd       |j                  d	t        j                                t        d
|j                         j                         z          |j                         st        d       yt        d       |j	                         } |d	      j                         }|S )Nstatistics_grid4+Failed to create tool: Statistics for GridsFr@   lapser<   B-Spline InterpolationMEANr>   r?   rk   )r   r   rB   r   rC   rm   rH   rn   ro   rp   rq   rE   rF   rG   asGrid)r   r   rN   	timestamprO   r   s         r   get_mean_dictor     s    //1==>OQTUD|;<++- O	7#**,55d79;L6MNO 	|%=>vx==?@	
t}}446
67<<>h	&M D< DKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d	             |j                  d      j                         j                  | j                         j                  d
             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  dd       |j                  d t        j                                t        d!|j                         j                         z          |j                         st        d"       yt        d#       |j	                         } |d       j!                         }|S )$Nr   r   r   Fr@   r   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r<   r   r   r>   r?   rk   r   r   rB   r   rC   rm   rH   rn   ro   rJ   rK   rp   rq   rE   rF   rG   r   objrN   rO   r   s       r   get_meanr   $  s    //1==>OQTUD|;<++-w&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OP|%=>vx==?@	
t}}446
67<<>h	&M D< DKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d	             |j                  d      j                         j                  | j                         j                  d
             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  dd       |j                  d t        j                                t        d!|j                         j                         z          |j                         st        d"       yt        d#       |j	                         } |d       j!                         }|S )$Nr   r   r   Fr@   r   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r<   r   SUMr>   r?   rk   r   r   s       r   get_sumr   V  s    //1==>OQTUD|;<++-w&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KA2NOw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OPw&&(11#..2B2K2KB2OP|%=>uh<<>?	
t}}446
67<<>h	&M D;DKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d      j                         j                  | j                                |j                  dd       |j                  dd	       t        d
|j                         j                         z          |j                         st        d       yt        d       |j                  t        j                  d            j                         j!                  d      }|A|j                  t        j                  d            j                         j!                  d      }|S )Npj_proj413:Failed to create tool: Change Longitudinal Range for GridsFINPUT	DIRECTIONr   PATCHTr>   r?   rk   OUTPUTr   r   rB   r   rC   rm   rH   rn   ro   r   rp   rE   rF   rG   rI   rJ   rK   )r   rN   rt   s      r   change_latlongr     s0    //1==j$OD|JK++-w&&(11#**,?{A&w%	
t}}446
67<<>h	&Mh11(;<GGIRRSTUD
 |!!("5"5g">?JJLUUVWXKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d      j                         j                  | j                                |j                  d|       |j                  dd       t        d	|j                         j                         z          |j                         st        d
       yt        d       |j                  t        j                  d            j                         j!                  d      }|S )Nr   r   r   Fr   r   r   Tr>   r?   rk   r   r   r   )r   	directionrN   rt   s       r   change_latlong360r     s     //1==j$OD|JK++-w&&(11#**,?{I.w%	
t}}446
67<<>h	&Mh11(;<GGIRRSTUDKr   c                 Z   t        j                         j                  dd      }|t        d       y|j	                  dd       |j	                  dd       |j	                  d	d
       |j	                  dd       |j	                  dd       |j	                  dd       |j                  d      j                         j                  | j                                t        d|j                         j                         z          |j                         st        d       yt        d       y)Nr   r7   z6Failed to create tool: Set Coordinate Reference SystemF
CRS_METHOSr   	CRS_PROJ4$+proj=longlat +datum=WGS84 +no_defs CRS_FILErW   CRS_EPSG  CRS_EPSG_AUTHEPSGPRECISEr@   r>   r?   rk   T)r   r   rB   r   rp   rH   rn   ro   r   rE   rF   rG   )r   rN   s     r   set_2_latlongr     s     //1==j#ND|FG|Q'{$JKz2&z4(/y%(w&&(11#**,?	
t}}446
67<<>h	&Mr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d      j                         j                  | j                                |j                  dd       |j                  dd	       |j                  d
d       t        d|j                         j                         z          |j                         st        d       yt        d       |j                  t        j                  d            j                         }|S )Nshapes_grid3z,Failed to create tool: Grid Values to PointsFr@   POLYGONSzShapes input, optionalNODATATTYPEnodesr>   r?   rk   POINTS)r   r   rB   r   rC   rm   rH   rn   ro   r   rp   rE   rF   rG   rI   asShapesr   rN   r   s      r   gridvalues_to_pointsr     s     //1==mSQD|<=++-w&&(11#**,?z#;<x&vw'	
t}}446
67<<>h	&M h11(;<EEGDKr   c                 j   t        j                         j                  dd      }|t        d       y|j	                  dd       |j	                  dd       |j	                  d	d
       |j	                  dd       |j	                  dd       |j	                  d|        |j	                  dd       |j	                  dd       t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr   2z9Failed to create tool: Coordinate Transformation (Shapes)Fr   z?+proj=merc +lon_0=0 +k=1 +x_0=0 +datum=WGS84 +units=m +no_defs r   rW   r   r   r   r   r   SOURCETRANSFORM_ZTCOPYr>   r?   rk   TARGET)
r   r   rB   r   rp   rE   rF   rG   rH   r   r   s      r   reproject_shaper     s    //1==j#ND|IJ{$efz2&z4(/y%(x%}d+vt$	
t}}446
67<<>h	&M h'002DKr   c                    t        j                         j                  dd      }|t        d       y|j	                  d|        |j	                  dd       |j	                  dd	       |j	                  d
|j                                |j	                  d|j                                |j	                  d|j                                |j	                  d|j                                |j	                  d|j                                |j	                  d|j                                |j	                  d|j                                |j	                  dd       |j	                  dd       |j	                  dd       |j	                  d|       t        d|j                         j                         z          |j                         st        d       yt        d       |j                         } |d      j!                         }|S )Ngrid_spliner   z*Failed to create tool: Multilevel B-SplineFSHAPESFIELDr`   TARGET_DEFINITIONuser definedTARGET_USER_SIZETARGET_USER_XMINTARGET_USER_XMAXTARGET_USER_YMINTARGET_USER_YMAXTARGET_USER_COLSTARGET_USER_ROWSTARGET_USER_FITSr   METHODnoEPSILONg-C6?	LEVEL_MAXr>   r?   rk   TARGET_OUT_GRID)r   r   rB   r   rp   Get_CellsizeGet_XMinGet_XMaxGet_YMinGet_YMaxGet_NXGet_NYrE   rF   rG   rC   r   )shapetemplatelevrN   rO   r   s         r   multilevel_B_spliner     s    //1==mSQD|:;x'w"*N;)8+@+@+BC)8+<+<+>?)8+<+<+>?)8+<+<+>?)8+<+<+>?)8??+<=)8??+<=)73x&y(+{C(	
t}}446
67<<>h	&M D!"))+DKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d| j                                |j                  d|j                                |j                  dd       |j                  d	d
       |j                  dd       |j                  dd       t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Ngrid_calculus15zJFailed to create tool: Gradient Vector from Cartesian to Polar CoordinatesFDXDYUNITSradiansSYSTEMgeographicalSYSTEM_ZERO        SYSTEM_ORIENT	clockwiser>   r?   rk   DIR)r   r   rB   r   rC   rm   rp   r   rE   rF   rG   rH   )uwindvwindrN   r   s       r   polar_coordsr   :  s    //1==otTD|Z[++-tU\\^,tU\\^,w	*x0}h/4	
t}}446
67<<>h	&Me$++-DKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d|j                                |j                  d| j                                |j                  dd       |j                  d	t        j                                |j                  d
d       |j                  dd       |j                  dd       |j                  dd       t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nta_morphometryr   z=Failed to create tool: Wind Effect (Windward / Leeward Index)FDEMr   	LEN_SCALE      ?AFHMAXDISTg     r@OLDVERACCELg      ?PYRAMIDSr>   r?   rk   EFFECTr   r   rB   r   rC   rm   rp   r   rq   rE   rF   rG   rH   )dirdemrN   r   s       r   
windeffectr  V  s1    //1==>NPTUD|MN++-ucjjl+ucjjl+{H-uh<<>?y*-x'w)z5)	
t}}446
67<<>h	&Mh'..0DKr   c                    t        j                         j                  dd      }|t        d       y|j	                  dd       |j	                  dd       |j	                  d	d
       |j	                  dd       |j	                  dd       |j	                  d| j                                |j	                  dd       |j	                  dd       |j	                  dd       |j	                  dd       |j	                  dd       |j	                  d|j                                |j	                  d|j                                |j	                  d|j                                |j	                  d|j                                |j	                  d|j                                |j	                  d|j                                |j	                  d|j                                |j	                  dd       |j	                  dd       |j	                  d d       t        d!|j                         j                         z          |j                         st        d"       yt        d#       |j!                  d$      j                         }|S )%Nr   r   z7Failed to create tool: Coordinate Transformation (Grid)Fr   r   r   rW   r   r   r   r   r   r   r<   r   BYTEWISE	KEEP_TYPETARGET_AREAr   r   r   r   r   r   r   r   r   r   r   OUT_X_CREATEOUT_Y_CREATEr>   r?   rk   GRID)r   r   rB   r   rp   r   r   r   r   r   r   r   r   rE   rF   rG   rH   r   r   rN   r   s       r   proj_2_latlongr  t  s     //1==j#ND|GH{$JKz2&z4(/y%(x.|Q'z5){E*}e,*N;)8+@+@+BC)8+<+<+>?)8+<+<+>?)8+<+<+>?)8+<+<+>?)8??+<=)8??+<=)73~u-~u-	
t}}446
67<<>h	&Mf%,,.DKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d      j                         j                  | j                                |j                  dd       |j                  dd       |j                  d	d
       |j                  d|j                                |j                  d|j                                |j                  d|j                                |j                  d|j                                |j                  d|j                                |j                  d|j!                                |j                  d|j#                                |j                  dd       t        d|j%                         j'                         z          |j)                         st        d       yt        d       |j                  t        j*                  d            j-                         j/                  d
      }|S )N
grid_toolsr7   !Failed to create tool: ResamplingFr   r  
SCALE_DOWNr   r   r   r   r   r   r   r   r   r   r   r   r>   r?   rk   r   r   r   rB   r   rC   rm   rH   rn   ro   r   rp   r   r   r   r   r   r   r   rE   rF   rG   rI   rJ   rK   r  s       r   resampler    s    //1==lCPD|12++-w&&(11#**,?{E*|%=>*A.)8+@+@+BC)8+<+<+>?)8+<+<+>?)8+<+<+>?)8+<+<+>?)8??+<=)8??+<=)73	
t}}446
67<<>h	&Mh11(;<GGIRRSTUDKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  dd       |j                  d	d
       |j                  dd       |j                  dd       |j                  dd       |j                  d      j                         j                  | j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr   1&Failed to create tool: Grid CalculatorFr<   r   FORMULAz	a*9.80665NAMEgeopotentialFNAME
USE_NODATAr   rf   r@   r>   r?   rk   RESULTr   r   rB   r   rC   rm   rp   rH   rn   ro   r   rE   rF   rG   r   s      r   calc_geopotentialr'    s#    //1==osSD|67++-|%=>y+.v~.w&|U+vq!w&&(11#**,?	
t}}446
67<<>h	&Mh'..0DKr   c                 2   t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d| j                                |j                  dt        j                                |j                  dd       t        d	|j                         j                         z          |j                         st        d
       yt        d       |j                  d      j                         }|S )Nr  7z!Failed to create tool: Close GapsFr   r%  	THRESHOLD皙?r>   r?   rk   r
  r   s      r   	closegapsr,    s     //1==lCPD|12++-w

-x!?!?!AB{H-	
t}}446
67<<>h	&Mh'..0DKr   c                 z   t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d| j                                |j                  dt        j                                |j                  dd       |j                  d	d
       |j                  dd       t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr  11*Failed to create tool: Change Data StorageFr   r   r   rf   OFFSETr   SCALEr  r>   r?   rk   r
  )rM   rN   r   s      r   change_data_storager2    s     //1==lDQD|:;++-w.x!?!?!ABvq!x*w)	
t}}446
67<<>h	&Mh'..0DKr   c                 z   t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d| j                                |j                  dt        j                                |j                  d|       |j                  dd	       |j                  d
d       t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr  r.  r/  Fr   r   r   r0  r   r1  r  r>   r?   rk   r
  )rM   typerN   r   s       r   change_data_storage2r5    s     //1==lDQD|:;++-w.x!?!?!ABvt$x*w)	
t}}446
67<<>h	&Mh'..0DKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |D ]6  }|j                  d      j                         j                  | d|z             8 |D ]6  }|j                  d      j                         j                  |d|z             8 |j                  d	|j                                |j                  d
|j                                |j                  d|j                                |j                  dt        j                                |j                  dd       |j                  dd       t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nrw   25z$Failed to create tool: Cloud OverlapFCOVERSccHEIGHTSgeoGROUNDWINDCBASEBLOCKSINTERVALg     @MINCOVERg      r>   r?   rk   COVER)r   r   rB   r   rC   rm   rH   rn   ro   rp   r   rq   rE   rF   rG   )	
cloudcoverr"  	cloudbaser  r  levelsrN   levelr   s	            r   cloud_overlaprG  -  s    //1==otTD|45++- Q8$++-66z$,7OPQ U9%,,.77UU]8STU 	x.vz0023w	 0 0 23x!?!?!ABz;/z7+	
t}}446
67<<>h	&Mg&--/DKr   c                 r   t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d| j                                |j                  dt        j                                |j                  d|j                                |j                  dd	       t        d
|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr  5Failed to create tool: PatchingFORIGINAL	COMPLETED
ADDITIONALr<   r   r>   r?   rk   r
  rr   rs   rN   r   s       r   patchingrO  N       //1==lCPD|/0++-z5<<>2{H$B$B$DE|U\\^4|Q'	
t}}446
67<<>h	&Mk*113DKr   c                 r   t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d| j                                |j                  dt        j                                |j                  d|j                                |j                  dd	       t        d
|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr  rI  rJ  FrK  rL  rM  r<   r_   r>   r?   rk   r
  rN  s       r   patchingBsplinerR  h  rP  r   c                 N   t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  dd       |j                  d	d
       |j                  dd       |j                  dd       |j                  dd       |j                  d      j                         j                  | j                                |j                  d      j                         j                  |j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr   r  r  Fr<   r   r   z(a+1)/(b+1)r!  Calculationr#  r$  r   rf   r@   r>   r?   rk   r%  r&  obj1obj2rN   r   s       r   calculate_biasrX    K    //1==osSD|67++-|%=>y-0v}-w&|U+vq!w&&(11$++-@w&&(11$++-@	
t}}446
67<<>h	&Mh'..0DKr   c                 N   t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  dd       |j                  d	d
       |j                  dd       |j                  dd       |j                  dd       |j                  d      j                         j                  | j                                |j                  d      j                         j                  |j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr   r  r  Fr<   r   r   za/(b*0.001)r!  rT  r#  r$  r   rf   r@   r>   r?   rk   r%  r&  rU  s       r   simple_biasr[    rY  r   c                 N   t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  dd       |j                  d	d
       |j                  dd       |j                  dd       |j                  dd       |j                  d      j                         j                  | j                                |j                  d      j                         j                  |j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr   r  r  Fr<   r   r   za*br!  rT  r#  r$  r   rf   r@   XGRIDSr>   r?   rk   r%  r&  rU  s       r   biascorr^    K    //1==osSD|67++-|%=>y%(v}-w&|U+vq!w&&(11$++-@x '')224;;=A	
t}}446
67<<>h	&Mh'..0DKr   c                 N   t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  dd       |j                  d	d
       |j                  dd       |j                  dd       |j                  dd       |j                  d      j                         j                  | j                                |j                  d      j                         j                  |j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr   r  r  Fr<   r   r   za/br!  rT  r#  r$  r   rf   r@   r]  r>   r?   rk   r%  r&  rU  s       r   biascor2ra    r_  r   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  dd       |j                  d	d
       |j                  dd       |j                  dd       |j                  dd       |j                  d      j                         j                  | j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr   r  r  Fr<   r   r   zifelse(a<1,a*1,a-a+1)r!  tccr#  r$  r   rf   r@   r>   r?   rk   r%  r&  rV  rN   r   s      r   capat1re    s&    //1==osSD|67++-|%=>y"9:vu%w&|U+vq!w&&(11$++-@	
t}}446
67<<>h	&M h'..0DKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  dd       |j                  d	d
       |j                  dd       |j                  dd       |j                  dd       |j                  d      j                         j                  | j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr   r  r  Fr<   r   r   za*10000r!  rc  r#  r$  r   r`   r@   r>   r?   rk   r%  r&  rd  s      r   convert2uintegerrg    s%    //1==osSD|67++-|%=>y),vu%w&|U+vq!w&&(11$++-@	
t}}446
67<<>h	&M h'..0DKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  dd       |j                  d	|       |j                  d
d       |j                  dd       |j                  dd       |j                  d      j                         j                  | j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr   r  r  Fr<   r   r   za*10r!  r#  r$  r   r`   r@   r>   r?   rk   r%  r&  )rV  r   rN   r   s       r   convert2uinteger10ri  ;  s%    //1==osSD|67++-|%=>y&)vt$w&|U+vq!w&&(11$++-@	
t}}446
67<<>h	&M h'..0DKr   c                 6   t        j                         j                  dd      }|t        d       y|j	                         }|j                           |d      j                         j                  |         |d      j                  |        |d      j                  d       t        d	|j                         j                         z          |j                         st        d
       yt        d       t        j                         j                  |       y)Nr6   r   z%Failed to create tool: Export GeoTIFFFr@   rT   OPTIONSzCOMPRESS=DEFLATE PREDICTOR=2r>   r?   zokay - geotiff createdT)r   r   rB   r   rC   rm   rn   ro   rD   rE   rF   rG   Delete_Tool)OBJfnamerN   rO   s       r   export_geotiffro  Y  s     //1==iMD|56 DM##C(L5!O<=	
t}}446
67<<>h	
"# ((*66t<r   c                    dd l }dd l}dd l}|dvrdnd}d}t        j                  j                  t        j                  j                  |      dj                  ||j                                     }	t        | |	       |j                  |	      j                  d      |z  |z   }
dg|j                  |j                  |d	   d
      g      fdg|
d   j                         fdg|
d   j                         fd}|g d|
j                         fi}|d   |d   |d   d}|j                  j                   j#                  |||      }ddd|fD ]  }||   ||   _         |j'                  |dgdddii       t        j(                  |	       y)Nr   )prr+  g!tk>r   zaux_{0}_{1}.tiffloattimedatenslatylonx)rs  rv  rx  modelrealization
experiment)rz  r{  r|  )coords	data_varsattrsdtypedouble)unlimited_dimsencodingT)uuid	rioxarraynumpyr   pathjoindirnamerL   uuid4ro  open_rasterioastypearray
datetime64to_numpyxarray_pluginxarrayDatasetr  	to_netcdfremove)rm  variablemetadatarn  r  rioxrnpmuladd	aux_fnamedata_inr}  r~  r  data_outkeys                   r   export_ncdfr  t  s    f,(,C
CRWW__U3.55h

MOI3	"!!),33G<S@3FGx2==&9I4+P*Q!RSgws|4467gws|44679F 2G4D4D4FGHIw'8O#L13E""))119\a1bHufh/ ,&sm, ufX'S[I\@]^IIir   c                 b   t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  dd       |j                  d	d
       |j                  dd       |j                  dd       |j                  dd       |j                  dd       |j                  d      j                         j                  | j                                |j                  d      j                         j                  |j                                |j                  d      j                         j                  |j                                |j                  d      j                         j                  |j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr   r  r  Fr<   r   r   z	d-b*(a-c)r!  rT  r#  r$  r   rf   r_   r@   r]  r>   r?   rk   r%  r&  )r  r   reference_demtemperaturerN   r   s         r   lapse_rate_based_downscalingr    s    //1==osSD|67++-|%=>y+.v}-w&|U+vq!|Q'w&&(11#**,?x '')225<<>Bx '')22=3G3G3IJx '')22;3E3E3GH	
t}}446
67<<>h	&M h'..0DKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  dd       |j                  d	|       |j                  d
d       |j                  dd       |j                  dd       |j                  d      j                         j                  | j                                |j                  d      j                         j                  |j                                |j                  d      j                         j                  |j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr   r  r  Fr<   r   r   za+(b-1/b)*(1-c)r!  r#  r$  r   rf   r@   r]  r>   r?   rk   r%  r&  )r  quotientcloud_coverr   rN   r   s         r   temp_srad_cc_correctionr    s}    //1==osSD|67++-|%=>y"34vt$w&|U+vq!w&&(11+2D2D2FGw&&(11(//2CDx '')22;3E3E3GH	
t}}446
67<<>h	&M h'..0DKr   c                 N   t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  dd       |j                  d	|       |j                  d
d       |j                  dd       |j                  dd       |j                  d      j                         j                  | j                                |j                  d      j                         j                  |j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr   r  r  Fr<   r   r   za*(1-0.75*b^3.4)r!  r#  r$  r   rf   r@   r]  r>   r?   rk   r%  r&  )stotrC  r   rN   r   s        r   surface_radiationr    sQ    //1==osSD|67++-|%=>y"45vt$w&|U+vq!w&&(11$++-@x '')22:3D3D3FG	
t}}446
67<<>h	&M h'..0DKr   c                 N   t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  d|       |j                  dd	       |j                  d
d       |j                  dd       |j                  dd       |j                  d      j                         j                  | j                                |j                  d      j                         j                  |j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S Nr   r  r  Fr<   r   r   r!  rT  r#  r$  r   rf   r@   r>   r?   rk   r%  r&  )rV  rW  equrN   r   s        r   grid_calculatorr    sK    //1==osSD|67++-|%=>y#&v}-w&|U+vq!w&&(11$++-@w&&(11$++-@	
t}}446
67<<>h	&Mh'..0DKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  d|       |j                  dd	       |j                  d
d       |j                  dd       |j                  dd       |j                  d      j                         j                  | j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S r  r&  )rV  r  rN   r   s       r   grid_calculator_simpler    s#    //1==osSD|67++-|%=>y#&v}-w&|U+vq!w&&(11$++-@	
t}}446
67<<>h	&Mh'..0DKr   c                 N   t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  d|       |j                  dd	       |j                  d
d       |j                  dd       |j                  dd       |j                  d      j                         j                  | j                                |j                  d      j                         j                  |j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S Nr   r  r  Fr<   r   r   r!  rT  r#  r$  r   rf   r@   r]  r>   r?   rk   r%  r&  )rV  xobj2r  rN   r   s        r   grid_calculatorXr  5  sK    //1==osSD|67++-|%=>y#&v}-w&|U+vq!w&&(11$++-@x '')225<<>B	
t}}446
67<<>h	&Mh'..0DKr   c                 N   t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  dd       |j                  d	d
       |j                  dd       |j                  dd       |j                  dd       |j                  d      j                         j                  | j                                |j                  d      j                         j                  |j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr   r  r  Fr<   r   r   z
abs((a-b))r!  rT  r#  r$  r   rf   r@   r]  r>   r?   rk   r%  r&  )r  pblhrN   r   s       r   calc_dist2boundr  T  sK    //1==osSD|67++-|%=>y,/v}-w&|U+vq!w&&(11#**,?x '')224;;=A	
t}}446
67<<>h	&Mh'..0DKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d      j                         j                  | j                                |j                  dd       |j                  d|       |j                  dd	       |j                  d
|j                                |j                  d|j                                |j                  d|j                                |j                  d|j                                |j                  d|j                                |j                  d|j!                                |j                  d|j#                                |j                  dd       t        d|j%                         j'                         z          |j)                         st        d       yt        d       |j                  t        j*                  d            j-                         j/                  d	      }|S )Nr  r7   r  Fr   r  SCALE_UPr   r   r   r   r   r   r   r   r   r   r   r>   r?   rk   r   r  )r   r   r4  rN   r   s        r   resample_upr  s  s    //1==lCPD|12++-w&&(11#**,?{E*z4(*A.)8+@+@+BC)8+<+<+>?)8+<+<+>?)8+<+<+>?)8+<+<+>?)8??+<=)8??+<=)73	
t}}446
67<<>h	&Mh11(;<GGIRRSTUDKr   c                 N   t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  dd       |j                  d	d
       |j                  dd       |j                  dd       |j                  dd       |j                  d      j                         j                  | j                                |j                  d      j                         j                  |j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr   r  r  Fr<   r   r   z
abs((b-a))r!  rT  r#  r$  r   rf   r@   r]  r>   r?   rk   r%  r&  )
dist2boundmaxdist2boundrN   r   s       r   invert_dist2boundr    sQ    //1==osSD|67++-|%=>y,/v}-w&|U+vq!w&&(11*2C2C2EFx '')22=3G3G3IJ	
t}}446
67<<>h	&Mh'..0DKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d|       |j                  dd       |j                  d|       |j                  d	d       |j                  d
d       |j                  dd       |j                  d      j                         j                  | j                                |j                  d      j                         j                  |j                                |j                  d      j                         j                  |j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr   r  r  Fr<   r   zb*a/cr!  r#  r$  r   rf   r@   r]  r>   r?   rk   r%  r&  )windhighwindlowprecr   r4  rN   r   s          r   downscale_precipr    st    //1==osSD|67++-|T*y'*vt$w&|U+vq!w&&(11(//2CDx '')224;;=Ax '')227>>3CD	
t}}446
67<<>h	&Mh'..0DKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d      j                         j                  | j                                |j                  d      j                         j                  |j                                |j                  dd       |j                  dt        j                                |j                  d	t        j                                |j                  d
d       t        d|j                         j                         z          |j                         st        d       yt        d       |dk(  r|j                  d	      j                         }|dk(  r|j                  d      j                         }S )Nr   r   r   Fr@   r<   r   MINMAXPCTL_VALg      I@r>   r?   rk   r   r^   )r   r   rB   r   rC   rm   rH   rn   ro   r   rp   rq   rE   rF   rG   r   )rV  rW  param1rN   r   s        r   grid_statisticsr    sf    //1==>OQTUD|;<++-w&&(11$++-@w&&(11$++-@|%=>uh<<>?uh<<>?z9-	
t}}446
67<<>h	&M{!!%(557{!!%(557Kr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d	             |j                  d      j                         j                  | j                         j                  d
             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  d      j                         j                  | j                         j                  d             |j                  dd       |j                  d t        j                                |j                  d!t        j                                t        d"|j                         j                         z          |j                         st        d#       yt        d$       |dk(  r|j                  d       j!                         }|dk(  r|j                  d!      j!                         }S )%Nr   r   r   Fr@   r   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r<   r   r  r  r>   r?   rk   )r   r   rB   r   rC   rm   rH   rn   ro   rJ   rK   rp   rq   rE   rF   rG   r   )r   minmaxrN   r   s       r   
get_minmaxr    s0    //1==>OQTUD|;<++-w&&(11'2D2D2F2O2OPQ2RSw&&(11'2D2D2F2O2OPQ2RSw&&(11'2D2D2F2O2OPQ2RSw&&(11'2D2D2F2O2OPQ2RSw&&(11'2D2D2F2O2OPQ2RSw&&(11'2D2D2F2O2OPQ2RSw&&(11'2D2D2F2O2OPQ2RSw&&(11'2D2D2F2O2OPQ2RSw&&(11'2D2D2F2O2OPQ2RSw&&(11'2D2D2F2O2OPQ2RSw&&(11'2D2D2F2O2OPR2STw&&(11'2D2D2F2O2OPR2STw&&(11'2D2D2F2O2OPR2STw&&(11'2D2D2F2O2OPR2STw&&(11'2D2D2F2O2OPR2STw&&(11'2D2D2F2O2OPR2STw&&(11'2D2D2F2O2OPR2STw&&(11'2D2D2F2O2OPR2STw&&(11'2D2D2F2O2OPR2STw&&(11'2D2D2F2O2OPR2STw&&(11'2D2D2F2O2OPR2STw&&(11'2D2D2F2O2OPR2STw&&(11'2D2D2F2O2OPR2STw&&(11'2D2D2F2O2OPR2ST|%=>uh<<>?uh<<>?	
t}}446
67<<>h	&M {!!%(557{!!%(557Kr   c                 >   t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  d|       |j                  dd	       |j                  d
d       |j                  dd       |j                  dd       |j                  d      j                         j                  | j                                |j                  d      j                         j                  |j                                |j                  d      j                         j                  |j                                |j                  d      j                         j                  |j                                t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S )Nr   r  r  Fr<   r`   r   r!  rT  r#  r$  r   rf   r@   r>   r?   rk   r%  r&  )z1z2t1t2r  rN   r   s          r   tlapser  +  s    //1==osSD|67++-|Q'y#&v}-w&|U+vq!w&&(11"))+>w&&(11"))+>w&&(11"))+>w&&(11"))+>	
t}}446
67<<>h	&Mh'..0DKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d      j                         j                  | j                                |j                  dd       |j                  d|       |j                  d	|       |j                  d
|       |j                  d|       |j                  d|       |j                         s+t        d|j                         j                         z          y|j                  d      j                         j                  d      }|S )Nr  31z!Failed to create tool: Clip GridsFr@   EXTENTr   XMINXMAXYMINYMAXBUFFERfailed to execute tool: CLIPPEDr   )r   r   Get_Toolr   rC   rm   rH   rn   ro   r   rp   rG   rE   rF   rJ   rK   )r   xminxmaxyminymaxbufferrN   dss           r   Run_Clip_Gridsr  L  s!    //1::<ND|12++-w&&(11#**,?x0vt$vt$vt$vt$ 	x(<<>(4==?+@+@+BBC			I	&	1	1	3	<	<Q	?BIr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d      j                         j                  |        |j                  d|       |j                  dd       |j                         s+t        d	|j                         j                         z          y|j                  d
      j                         }|S )Nr   r)  z-Failed to create tool: Clip Grid with PolygonFr   r   r  polygonsr  r   )r   r   r  r   rC   rm   rH   rn   ro   rp   rG   rE   rF   rJ   )gridpolygonrN   r   s       r   clip_with_polygonr  i  s     //1::=#ND|=>++-w&&(11$7z7+x,<<>(4==?+@+@+BBCh'224DKr   c                    t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  d|        |j                  dd       |j                  dd	       |j                  d
d       |j                  dd       |j                         s+t        d|j                         j                         z          y|j                  d      j                         }|S )Nr   rS   z/Failed to create tool: Vectorising Grid ClassesFr  	CLASS_ALLzall classesCLASS_IDr  SPLITz!one single (multi-)polygon objectALLVERTICESr  r   )r   r   r  r   rC   rm   rp   rG   rE   rF   rH   r   r   s      r   Run_Vectorising_Grid_Classesr    s     //1::=#ND|?@++-vs#{M2z8,w CD}e,<<>(4==?+@+@+BBCj)668DKr   c                 r   t        j                         j                  dd      }|t        d       y|j	                         j                          |j                  dd       |j                  d|       |j                  dd	       |j                  d
d       |j                  dd       |j                  dd       |j                  d      j                         j                  |       |j                  d      j                         j                  |        |j                  d      j                         j                  |       t        d|j                         j                         z          |j                         st        d       yt        d       |j                  d      j                         }|S r  )r   r   rB   r   rC   rm   rp   rH   rn   ro   rE   rF   rG   r   )rV  rW  xobj3r  rN   r   s         r   grid_calculator3r    sa    //1==osSD|67++-|%=>y#&v}-w&|U+vq!w&&(11$7x '')2248x '')2259	
t}}446
67<<>h	&Mh'..0DKr   )T)NN)NNNN)<PySAGAr   r   r   datetimeos.pathpsutilshutilr   r4   rQ   rY   ru   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r'  r,  r2  r5  rG  rO  rR  rX  r[  r^  ra  re  rg  ri  ro  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     s3  &  
 	    >$B220fM`8/d/d>22@< F8<&RD<286B44>>>>><<6:!HDB><>>D>@@4nB:.2r   