
    ATe.                     z   d dl mZ d dlZd dlZd dlZd dlZd dlZd dl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/ Z3d0 Z4d1 Z5d2 Z6d3 Z7d4 Z8d5 Z9d6 Z:dS ):    )saga_apiNTc                 0   t          j        d           t          j        dk    rst          j        d         dz   t          j        d         z   dz   t          j        d<   t          j                                        t          j        d         dz   d           n9t          j                                        t          j        d	          d           t          j        d           | rt          d
t          j
        z              t          t          j                               t          dt          t          j                                                              z              t                       t          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    c/p/projects/montevitis/users/menz/CHELSA/scripts/chelsa_isimip3b_ba_1km/functions/saga_functions.pyLoad_Tool_Librariesr       s>   D!!!	w$Z/#5
98MMPVV
6,..<<RZ	=SV^=^`effff,..<<RYG`=a=achiiiE""" !CK/000h+--...,s83W3Y3Y3c3c3e3e/f/ffggg/11;;===    c                     t          j        d           d}t           fddD                       r3t          j                                        t                               }t           fddD                       r3t          j                                        t                               }t           fddD                       r3t          j                                        t                               }d v r3t          j                                        t                               }t           fd	d
D                       r3t          j                    	                    t                               }||
                                dk    rt          d z   dz              dS t          d z   dz              |S )Nr   c              3       K   | ]}|v V  	d S N .0spath_to_sagadatas     r   	<genexpr>z load_sagadata.<locals>.<genexpr>8   )      
K
KQ1  
K
K
K
K
K
Kr   )z.sgrdz.sg-grdzsg-grd-zc              3       K   | ]}|v V  	d S r   r   r   s     r   r#   z load_sagadata.<locals>.<genexpr><   s)      
A
AQ1  
A
A
A
A
A
Ar   )zsg-gdszsg-gds-zc              3       K   | ]}|v V  	d S r   r   r   s     r   r#   z load_sagadata.<locals>.<genexpr>@   s)      
C
CQ1  
C
C
C
C
C
Cr   )z.txtz.csvz.dbfz.shpc              3       K   | ]}|v V  	d S 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_sagadatar3   2   s   !!$$$ 
K
K
K
K*J
K
K
KKK ]&:<<EEcJZF[F[\\ 
A
A
A
A*@
A
A
AAA ^&:<<FFsK[G\G\]] 
C
C
C
C*B
C
C
CCC ^&:<<FFsK[G\G\]] !!!&:<<GGL\H]H]^^ 
K
K
K
K*J
K
K
KKK c&:<<KKCP`LaLabb"&9&B&B&D&D&I&I #33c9:::q	)&
&)<
<===r   c                 $   t          j                                        dd          }|t          d           dS |                                } |d                              |             |d                              d            |d                              d            |d	                              d
           t          d|                                                                z              |                                st          d           dS |	                    t          j
        d                                                                        d          }t          d                    |                      |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_gdalrP   S   sf    /11==iMMD|4555u  DDMMD!!!D{+++D&&&D  !4555	
t}}4466
6777<<>> hu 3G < <==HHJJSSTUVVF	
0
7
7
=
=>>>Mr   c                 :   t          j                                        dd          }|t          d           dS |                                } |d                              |             |d                              d            |d                              d            |d	                              d            |d
                              d           t          d|                                                                z              |                                st          d           dS |	                    t          j
        d                                                    }t          d                    |                      |S )Nr5   6z$Failed to create tool: Import NetCDFFFILE	SAVE_FILE	SAVE_PATH r:   r;   r<   r=   r>   r?   r@   )r   r   rA   r   rB   rC   rD   rE   rF   rG   rH   rI   rK   )ncdffilerM   rN   rO   s       r   import_ncdfrX   l   su    /11==iMMD|4555u  DDLL8$$$D&&&D###D&&&D  !4555	
t}}4466
6777<<>> hu 3G < <==HHJJF	
0
7
7
A
ABBBMr   c                     t          j                                        dd          }|t          d           dS |                                                                 |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d	                     |                    d                                                              | 	                                
                    d
                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    dt          j                               |                    dd           |                    d                                                              |	                                
                    d                     |                    d                                                              |	                                
                    d                     |                    d                                                              |	                                
                    d                     |                    d                                                              |	                                
                    d	                     |                    d                                                              |	                                
                    d
                     |                    d                                                              |	                                
                    d                     |                    d                                                              |	                                
                    d                     |                    d                                                              |	                                
                    d                     |                    d                                                              |	                                
                    d                     |                    d                                                              |	                                
                    d                     |                    d                                                              |	                                
                    d                     t          d|                                                                z              |                                st          d           dS t          d           |                    t          j        d                    	                                
                    d          }|S )Nstatistics_regression9z2Failed to create tool: Polynomial Trend from GridsFY_GRIDSr                           	   
   R2ORDERX_GRIDSr=   r>   okayCOEFF)r   r   rA   r   rB   Reset_Grid_SystemrG   asListAdd_ItemrI   rJ   Set_ParameterSG_Get_Create_PointerrD   rE   rF   rH   )File1File2rM   Lists       r   polynomial_trendsrt      sk    /11==>UWZ[[D|BCCCu++---y!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPR4S4STTTtX;==>>>w"""y!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPQ4R4RSSSy!!((**33E4D4D4F4F4O4OPR4S4STTT	
t}}4466
6777<<>> hu	&MMM
 h1'::;;FFHHQQRSTTD Kr   c                     t          j                                        dd          }|t          d           dS |                                                                 |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d	                    |                    d                                                              |d
                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              |d                    |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                      |                    d                                                              | 	                                
                    d!                     |                    d                                                              | 	                                
                    d"                     |                    d                                                              | 	                                
                    d#                     |                    d                                                              | 	                                
                    d$                     |                    d                                                              | 	                                
                    d%                     |                    d                                                              | 	                                
                    d&                     |                    d                                                              | 	                                
                    d'                     |                    d                                                              | 	                                
                    d(                     |                    d                                                              | 	                                
                    d)                     |                    d                                                              | 	                                
                    d*                     |                    d                                                              | 	                                
                    d+                     |                    d                                                              | 	                                
                    d,                     |                    d                                                              | 	                                
                    d-                     |                    d                                                              | 	                                
                    d.                     |                    d                                                              | 	                                
                    d/                     |                    d                                                              | 	                                
                    d0                     |                    d                                                              | 	                                
                    d1                     |                    d                                                              | 	                                
                    d2                     |                    d                                                              | 	                                
                    d3                     |                    d                                                              | 	                                
                    d4                     |                    d                                                              | 	                                
                    d5                     |                    d                                                              | 	                                
                    d6                     |                    d7|           t          d8|                                                                z              |                                st          d9           dS t          d:           |dk    r'|                    d;                                          }|d k    r'|                    d<                                          }|d!k    r'|                    d=                                          }|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_   r`   ra   rb   rc   rd   re   rf                                          EXTREMEr=   r>   rj   LAPSETEXTREMETIME)r   r   rA   r   rB   rl   rG   rm   rn   rI   rJ   ro   rD   rE   rF   asDataObject)extremeparamdicttimesparam2rM   Datas          r   extreme_lapseratesr      s    /11==otTTD|>???u++---v%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDDv%%''00l1CDDD 	y!!((**33G4F4F4H4H4Q4QRS4T4TUUUy!!((**33G4F4F4H4H4Q4QRS4T4TUUUy!!((**33G4F4F4H4H4Q4QRS4T4TUUUy!!((**33G4F4F4H4H4Q4QRS4T4TUUUy!!((**33G4F4F4H4H4Q4QRS4T4TUUUy!!((**33G4F4F4H4H4Q4QRS4T4TUUUy!!((**33G4F4F4H4H4Q4QRS4T4TUUUy!!((**33G4F4F4H4H4Q4QRS4T4TUUUy!!((**33G4F4F4H4H4Q4QRS4T4TUUUy!!((**33G4F4F4H4H4Q4QRS4T4TUUUy!!((**33G4F4F4H4H4Q4QRT4U4UVVVy!!((**33G4F4F4H4H4Q4QRT4U4UVVVy!!((**33G4F4F4H4H4Q4QRT4U4UVVVy!!((**33G4F4F4H4H4Q4QRT4U4UVVVy!!((**33G4F4F4H4H4Q4QRT4U4UVVVy!!((**33G4F4F4H4H4Q4QRT4U4UVVVy!!((**33G4F4F4H4H4Q4QRT4U4UVVVy!!((**33G4F4F4H4H4Q4QRT4U4UVVVy!!((**33G4F4F4H4H4Q4QRT4U4UVVVy!!((**33G4F4F4H4H4Q4QRT4U4UVVVy!!((**33G4F4F4H4H4Q4QRT4U4UVVVy!!((**33G4F4F4H4H4Q4QRT4U4UVVVy!!((**33G4F4F4H4H4Q4QRT4U4UVVVy!!((**33G4F4F4H4H4Q4QRT4U4UVVVy%(((	
t}}4466
6777<<>> hu	&MMM{{!!'**7799{{!!*--::<<{{!!&))6688Kr   c                    t          j                                        dd          }|t          d           dS |                                                                 |D ]E}|                    d                                                              | d|z                       F|	                    dd           |	                    d	t          j
                               t          d
|                                                                z              |                                st          d           dS t          d           |                                } |d	                                          }|S )Nstatistics_grid4+Failed to create tool: Statistics for GridsFr?   lapser;   B-Spline InterpolationMEANr=   r>   rj   )r   r   rA   r   rB   rl   rG   rm   rn   ro   rp   rD   rE   rF   asGrid)r   r   rM   	timestamprN   r   s         r   get_mean_dictor     s_    /11==>OQTUUD|;<<<u++--- O O	7##**,,55d79;L6MNNNN|%=>>>vx=??@@@	
t}}4466
6777<<>> hu	&MMM  D4<<  DKr   c                 F   t          j                                        dd          }|t          d           dS |                                                                 |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d	                     |                    d                                                              | 	                                
                    d
                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    dd           |                    d t          j                               t          d!|                                                                z              |                                st          d"           dS t          d#           |                                } |d                                           }|S )$Nr   r   r   Fr?   r   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r;   r   r   r=   r>   rj   r   r   rA   r   rB   rl   rG   rm   rn   rI   rJ   ro   rp   rD   rE   rF   r   objrM   rN   r   s       r   get_meanr   $  s    /11==>OQTUUD|;<<<u++---w&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPP|%=>>>vx=??@@@	
t}}4466
6777<<>> hu	&MMM  D4<<  DKr   c                 F   t          j                                        dd          }|t          d           dS |                                                                 |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d	                     |                    d                                                              | 	                                
                    d
                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    dd           |                    d t          j                               t          d!|                                                                z              |                                st          d"           dS t          d#           |                                } |d                                           }|S )$Nr   r   r   Fr?   r   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r;   r   SUMr=   r>   rj   r   r   s       r   get_sumr   V  s    /11==>OQTUUD|;<<<u++---w&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KA2N2NOOOw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPPw&&((11#..2B2B2K2KB2O2OPPP|%=>>>uh<>>???	
t}}4466
6777<<>> hu	&MMM  D4;;DKr   c                    t          j                                        dd          }|t          d           dS |                                                                 |                    d                                                              | 	                                           |
                    dd           |
                    dd	           t          d
|                                                                z              |                                st          d           dS t          d           |                    t          j        d                                                                        d          }|L|                    t          j        d                                                                        d          }|S )Npj_proj413:Failed to create tool: Change Longitudinal Range for GridsFINPUT	DIRECTIONr   PATCHTr=   r>   rj   OUTPUTr   r   rA   r   rB   rl   rG   rm   rn   r   ro   rD   rE   rF   rH   rI   rJ   )r   rM   rs   s      r   change_latlongr     s    /11==j$OOD|JKKKu++---w&&((11#**,,???{A&&&w%%%	
t}}4466
6777<<>> hu	&MMMh1(;;<<GGIIRRSTUUD
 |!!("5g">">??JJLLUUVWXXKr   c                 "   t          j                                        dd          }|t          d           dS |                                                                 |                    d                                                              | 	                                           |
                    d|           |
                    dd           t          d	|                                                                z              |                                st          d
           dS t          d           |                    t          j        d                                                                        d          }|S )Nr   r   r   Fr   r   r   Tr=   r>   rj   r   r   r   )r   	directionrM   rs   s       r   change_latlong360r     sL    /11==j$OOD|JKKKu++---w&&((11#**,,???{I...w%%%	
t}}4466
6777<<>> hu	&MMMh1(;;<<GGIIRRSTUUDKr   c                    t          j                                        dd          }|t          d           dS |                    dd           |                    dd           |                    d	d
           |                    dd           |                    dd           |                    dd           |                    d                                                              |                                            t          d|	                                
                                z              |                                st          d           dS t          d           dS )Nr   r6   z6Failed to create tool: Set Coordinate Reference SystemF
CRS_METHOSr   	CRS_PROJ4$+proj=longlat +datum=WGS84 +no_defs CRS_FILErV   CRS_EPSG  CRS_EPSG_AUTHEPSGPRECISEr?   r=   r>   rj   T)r   r   rA   r   ro   rG   rm   rn   r   rD   rE   rF   )r   rM   s     r   set_2_latlongr     sN    /11==j#NND|FGGGu|Q'''{$JKKKz2&&&z4(((///y%(((w&&((11#**,,???	
t}}4466
6777<<>> hu	&MMM4r   c                 (   t          j                                        dd          }|t          d           dS |                                                                 |                    d                                                              | 	                                           |
                    dd           |
                    dd	           |
                    d
d           t          d|                                                                z              |                                st          d           dS t          d           |                    t          j        d                                                    }|S )Nshapes_grid3z,Failed to create tool: Grid Values to PointsFr?   POLYGONSzShapes input, optionalNODATATTYPEnodesr=   r>   rj   POINTS)r   r   rA   r   rB   rl   rG   rm   rn   r   ro   rD   rE   rF   rH   asShapesr   rM   r   s      r   gridvalues_to_pointsr     sV    /11==mSQQD|<===u++---w&&((11#**,,???z#;<<<x&&&vw'''	
t}}4466
6777<<>> hu	&MMM h1(;;<<EEGGDKr   c                    t          j                                        dd          }|t          d           dS |                    dd           |                    dd           |                    d	d
           |                    dd           |                    dd           |                    d|            |                    dd           |                    dd           t          d|                                                                z              |                                st          d           dS t          d           |                    d          	                                }|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   rV   r   r   r   r   r   SOURCETRANSFORM_ZTCOPYr=   r>   rj   TARGET)
r   r   rA   r   ro   rD   rE   rF   rG   r   r   s      r   reproject_shaper     se    /11==j#NND|IJJJu{$efffz2&&&z4(((///y%(((x%%%}d+++vt$$$	
t}}4466
6777<<>> hu	&MMM h''0022DKr   c                    t          j                                        dd          }|t          d           dS |                    d|            |                    dd           |                    dd	           |                    d
|                                           |                    d|                                           |                    d|                                           |                    d|                                           |                    d|	                                           |                    d|
                                           |                    d|                                           |                    dd           |                    dd           |                    dd           |                    d|           t          d|                                                                z              |                                st          d           dS t          d           |                                } |d                                          }|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>   rj   TARGET_OUT_GRID)r   r   rA   r   ro   Get_CellsizeGet_XMinGet_XMaxGet_YMinGet_YMaxGet_NXGet_NYrD   rE   rF   rB   r   )shapetemplatelevrM   rN   r   s         r   multilevel_B_spliner     sM    /11==mSQQD|:;;;ux'''w"""*N;;;)8+@+@+B+BCCC)8+<+<+>+>???)8+<+<+>+>???)8+<+<+>+>???)8+<+<+>+>???)8??+<+<===)8??+<+<===)7333x&&&y(+++{C(((	
t}}4466
6777<<>> hu	&MMM  D4!""))++DKr   c                 8   t          j                                        dd          }|t          d           dS |                                                                 |                    d|                                            |                    d|                                           |                    dd           |                    d	d
           |                    dd           |                    dd           t          d|                                	                                z              |
                                st          d           dS t          d           |                    d                                          }|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>   rj   DIR)r   r   rA   r   rB   rl   ro   r   rD   rE   rF   rG   )uwindvwindrM   r   s       r   polar_coordsr   :  sd    /11==otTTD|Z[[[u++---tU\\^^,,,tU\\^^,,,w	***x000}h///444	
t}}4466
6777<<>> hu	&MMMe$$++--DKr   c                    t          j                                        dd          }|t          d           dS |                                                                 |                    d|                                           |                    d|                                            |                    dd           |                    d	t          j                               |                    d
d           |                    dd           |                    dd           |                    dd           t          d|	                                
                                z              |                                st          d           dS t          d           |                    d                                          }|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>   rj   EFFECTr   r   rA   r   rB   rl   ro   r   rp   rD   rE   rF   rG   )dirdemrM   r   s       r   
windeffectr  V  s    /11==>NPTUUD|MNNNu++---ucjjll+++ucjjll+++{H---uh<>>???y*---x'''w)))z5)))	
t}}4466
6777<<>> hu	&MMMh''..00DKr   c                 X   t          j                                        dd          }|t          d           dS |                    dd           |                    dd           |                    d	d
           |                    dd           |                    dd           |                    d|                                            |                    dd           |                    dd           |                    dd           |                    dd           |                    dd           |                    d|                                           |                    d|                                           |                    d|                                           |                    d|	                                           |                    d|
                                           |                    d|                                           |                    d|                                           |                    dd           |                    dd           |                    d d           t          d!|                                                                z              |                                st          d"           dS t          d#           |                    d$                                          }|S )%Nr   r   z7Failed to create tool: Coordinate Transformation (Grid)Fr   r   r   rV   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>   rj   GRID)r   r   rA   r   ro   r   r   r   r   r   r   r   r   rD   rE   rF   rG   r   r   rM   r   s       r   proj_2_latlongr  t  s    /11==j#NND|GHHHu{$JKKKz2&&&z4(((///y%(((x...|Q'''z5))){E***}e,,,*N;;;)8+@+@+B+BCCC)8+<+<+>+>???)8+<+<+>+>???)8+<+<+>+>???)8+<+<+>+>???)8??+<+<===)8??+<+<===)7333~u---~u---	
t}}4466
6777<<>> hu	&MMMf%%,,..DKr   c                    t          j                                        dd          }|t          d           dS |                                                                 |                    d                                                              | 	                                           |
                    dd           |
                    dd           |
                    d	d
           |
                    d|                                           |
                    d|                                           |
                    d|                                           |
                    d|                                           |
                    d|                                           |
                    d|                                           |
                    d|                                           |
                    dd           t          d|                                                                z              |                                st          d           dS t          d           |                    t          j        d                                                                        d
          }|S )N
grid_toolsr6   !Failed to create tool: ResamplingFr   r  
SCALE_DOWNr   r   r   r   r   r   r   r   r   r   r   r   r=   r>   rj   r   r   r   rA   r   rB   rl   rG   rm   rn   r   ro   r   r   r   r   r   r   r   rD   rE   rF   rH   rI   rJ   r  s       r   resampler    sl    /11==lCPPD|1222u++---w&&((11#**,,???{E***|%=>>>*A...)8+@+@+B+BCCC)8+<+<+>+>???)8+<+<+>+>???)8+<+<+>+>???)8+<+<+>+>???)8??+<+<===)8??+<+<===)7333	
t}}4466
6777<<>> hu	&MMMh1(;;<<GGIIRRSTUUDKr   c                    t          j                                        dd          }|t          d           dS |                                                                 |                    dd           |                    dd           |                    d	d
           |                    dd           |                    dd           |                    dd           |                    d                                          	                    | 
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S )Nr   1&Failed to create tool: Grid CalculatorFr;   r   FORMULAz	a*9.80665NAMEgeopotentialFNAME
USE_NODATAr   re   r?   r=   r>   rj   RESULTr   r   rA   r   rB   rl   ro   rG   rm   rn   r   rD   rE   rF   r   s      r   calc_geopotentialr&    s    /11==osSSD|6777u++---|%=>>>y+...v~...w&&&|U+++vq!!!w&&((11#**,,???	
t}}4466
6777<<>> hu	&MMMh''..00DKr   c                    t          j                                        dd          }|t          d           dS |                                                                 |                    d|                                            |                    dt          j                               |                    dd           t          d	|	                                
                                z              |                                st          d
           dS t          d           |                    d                                          }|S )Nr  7z!Failed to create tool: Close GapsFr   r$  	THRESHOLD皙?r=   r>   rj   r	  r   s      r   	closegapsr+    s#    /11==lCPPD|1222u++---w

---x!?!A!ABBB{H---	
t}}4466
6777<<>> hu	&MMMh''..00DKr   c                 
   t          j                                        dd          }|t          d           dS |                                                                 |                    d|                                            |                    dt          j                               |                    dd           |                    d	d
           |                    dd           t          d|	                                
                                z              |                                st          d           dS t          d           |                    d                                          }|S )Nr  11*Failed to create tool: Change Data StorageFr   r   r   re   OFFSETr   SCALEr  r=   r>   rj   r	  )rL   rM   r   s      r   change_data_storager1    sO    /11==lDQQD|:;;;u++---w...x!?!A!ABBBvq!!!x***w)))	
t}}4466
6777<<>> hu	&MMMh''..00DKr   c                 
   t          j                                        dd          }|t          d           dS |                                                                 |                    d|                                            |                    dt          j                               |                    d|           |                    dd	           |                    d
d           t          d|	                                
                                z              |                                st          d           dS t          d           |                    d                                          }|S )Nr  r-  r.  Fr   r   r   r/  r   r0  r  r=   r>   rj   r	  )rL   typerM   r   s       r   change_data_storage2r4    sO    /11==lDQQD|:;;;u++---w...x!?!A!ABBBvt$$$x***w)))	
t}}4466
6777<<>> hu	&MMMh''..00DKr   c                    t          j                                        dd          }|t          d           dS |                                                                 |D ]E}|                    d                                                              | d|z                       F|D ]E}|                    d                                                              |d|z                       F|	                    d	|
                                           |	                    d
|
                                           |	                    d|
                                           |	                    dt          j                               |	                    dd           |	                    dd           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S )Nrv   25z$Failed to create tool: Cloud OverlapFCOVERSccHEIGHTSgeoGROUNDWINDCBASEBLOCKSINTERVALg     @MINCOVERg      r=   r>   rj   COVER)r   r   rA   r   rB   rl   rG   rm   rn   ro   r   rp   rD   rE   rF   )	
cloudcoverr!  	cloudbaser  r  levelsrM   levelr   s	            r   cloud_overlaprF  -  s    /11==otTTD|4555u++--- Q Q8$$++--66z$,7OPPPP U U9%%,,..77UU]8STTTTx...vz0022333w	 0 0 2 2333x!?!A!ABBBz;///z7+++	
t}}4466
6777<<>> hu	&MMMg&&--//DKr   c                    t          j                                        dd          }|t          d           dS |                                                                 |                    d|                                            |                    dt          j                               |                    d|                                           |                    dd	           t          d
|	                                
                                z              |                                st          d           dS t          d           |                    d                                          }|S )Nr  5Failed to create tool: PatchingFORIGINAL	COMPLETED
ADDITIONALr;   r   r=   r>   rj   r	  rq   rr   rM   r   s       r   patchingrN  N  A    /11==lCPPD|/000u++---z5<<>>222{H$B$D$DEEE|U\\^^444|Q'''	
t}}4466
6777<<>> hu	&MMMk**1133DKr   c                    t          j                                        dd          }|t          d           dS |                                                                 |                    d|                                            |                    dt          j                               |                    d|                                           |                    dd	           t          d
|	                                
                                z              |                                st          d           dS t          d           |                    d                                          }|S )Nr  rH  rI  FrJ  rK  rL  r;   r^   r=   r>   rj   r	  rM  s       r   patchingBsplinerQ  h  rO  r   c                     t          j                                        dd          }|t          d           dS |                                                                 |                    dd           |                    dd           |                    d	d
           |                    dd           |                    dd           |                    dd           |                    d                                          	                    | 
                                           |                    d                                          	                    |
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S )Nr   r  r  Fr;   r   r  z(a+1)/(b+1)r   Calculationr"  r#  r   re   r?   r=   r>   rj   r$  r%  obj1obj2rM   r   s       r   calculate_biasrW        /11==osSSD|6777u++---|%=>>>y-000v}---w&&&|U+++vq!!!w&&((11$++--@@@w&&((11$++--@@@	
t}}4466
6777<<>> hu	&MMMh''..00DKr   c                     t          j                                        dd          }|t          d           dS |                                                                 |                    dd           |                    dd           |                    d	d
           |                    dd           |                    dd           |                    dd           |                    d                                          	                    | 
                                           |                    d                                          	                    |
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S )Nr   r  r  Fr;   r   r  za/(b*0.001)r   rS  r"  r#  r   re   r?   r=   r>   rj   r$  r%  rT  s       r   simple_biasrZ    rX  r   c                     t          j                                        dd          }|t          d           dS |                                                                 |                    dd           |                    dd           |                    d	d
           |                    dd           |                    dd           |                    dd           |                    d                                          	                    | 
                                           |                    d                                          	                    |
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S )Nr   r  r  Fr;   r   r  za*br   rS  r"  r#  r   re   r?   XGRIDSr=   r>   rj   r$  r%  rT  s       r   biascorr]        /11==osSSD|6777u++---|%=>>>y%(((v}---w&&&|U+++vq!!!w&&((11$++--@@@x  ''))224;;==AAA	
t}}4466
6777<<>> hu	&MMMh''..00DKr   c                     t          j                                        dd          }|t          d           dS |                                                                 |                    dd           |                    dd           |                    d	d
           |                    dd           |                    dd           |                    dd           |                    d                                          	                    | 
                                           |                    d                                          	                    |
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S )Nr   r  r  Fr;   r   r  za/br   rS  r"  r#  r   re   r?   r\  r=   r>   rj   r$  r%  rT  s       r   biascor2r`    r^  r   c                    t          j                                        dd          }|t          d           dS |                                                                 |                    dd           |                    dd           |                    d	d
           |                    dd           |                    dd           |                    dd           |                    d                                          	                    | 
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S )Nr   r  r  Fr;   r   r  zifelse(a<1,a*1,a-a+1)r   tccr"  r#  r   re   r?   r=   r>   rj   r$  r%  rU  rM   r   s      r   capat1rd    s    /11==osSSD|6777u++---|%=>>>y"9:::vu%%%w&&&|U+++vq!!!w&&((11$++--@@@	
t}}4466
6777<<>> hu	&MMM h''..00DKr   c                    t          j                                        dd          }|t          d           dS |                                                                 |                    dd           |                    dd           |                    d	d
           |                    dd           |                    dd           |                    dd           |                    d                                          	                    | 
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S )Nr   r  r  Fr;   r   r  za*10000r   rb  r"  r#  r   r_   r?   r=   r>   rj   r$  r%  rc  s      r   convert2uintegerrf    s    /11==osSSD|6777u++---|%=>>>y),,,vu%%%w&&&|U+++vq!!!w&&((11$++--@@@	
t}}4466
6777<<>> hu	&MMM h''..00DKr   c                    t          j                                        dd          }|t          d           dS |                                                                 |                    dd           |                    dd           |                    d	|           |                    d
d           |                    dd           |                    dd           |                    d                                          	                    | 
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S )Nr   r  r  Fr;   r   r  za*10r   r"  r#  r   r_   r?   r=   r>   rj   r$  r%  )rU  r   rM   r   s       r   convert2uinteger10rh  ;  s    /11==osSSD|6777u++---|%=>>>y&)))vt$$$w&&&|U+++vq!!!w&&((11$++--@@@	
t}}4466
6777<<>> hu	&MMM h''..00DKr   c                    t          j                                        dd          }|t          d           dS |                                }|                                  |d                                                              |             |d                              |            |d                              d           t          d	|	                                
                                z              |                                st          d
           dS t          d           t          j                                        |           dS )Nr5   r   z%Failed to create tool: Export GeoTIFFFr?   rS   OPTIONSzCOMPRESS=DEFLATE PREDICTOR=2r=   r>   zokay - geotiff createdT)r   r   rA   r   rB   rl   rm   rn   rC   rD   rE   rF   Delete_Tool)OBJfnamerM   rN   s       r   export_geotiffrn  Y  s:    /11==iMMD|5666u  DDMM##C(((DLL5!!!DOO<===	
t}}4466
6777<<>> hu	
"### (**66t<<<4r   c                    dd l }dd l}dd l}|dvrdnd}d}t          j                            t          j                            |          d                    ||                                                    }	t          | |	           |
                    |	                              d          |z  |z   }
dg|                    |                    |d	         d
          g          fdg|
d                                         fdg|
d                                         fd}|g d|
                                fi}|d         |d         |d         d}|j        j                            |||          }ddd|fD ]}||         ||         _        |                    |dgdddii           t          j        |	           dS )Nr   )prr*  g!tk>r   zaux_{0}_{1}.tiffloattimedatenslatylonx)rr  ru  rw  modelrealization
experiment)ry  rz  r{  )coords	data_varsattrsdtypedouble)unlimited_dimsencodingT)uuid	rioxarraynumpyr   pathjoindirnamerK   uuid4rn  open_rasterioastypearray
datetime64to_numpyxarray_pluginxarrayDatasetr~  	to_netcdfremove)rl  variablemetadatarm  r  rioxrnpmuladd	aux_fnamedata_inr|  r}  r~  data_outkeys                   r   export_ncdfr  t  s    KKKf,,((,C
CRW__U33.55h

MMO OI3	"""!!),,33G<<S@3FGx2==&9I4+P+P*Q!R!RSgws|44667gws|446679 9F 222G4D4D4F4FGHIw'8O#L13 3E")119\a1bbHufh/ , ,&smufX'S[I\@]^^^Ii4r   c                 |   t          j                                        dd          }|t          d           dS |                                                                 |                    dd           |                    dd           |                    d	d
           |                    dd           |                    dd           |                    dd           |                    dd           |                    d                                          	                    | 
                                           |                    d                                          	                    |
                                           |                    d                                          	                    |
                                           |                    d                                          	                    |
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S )Nr   r  r  Fr;   r   r  z	d-b*(a-c)r   rS  r"  r#  r   re   r^   r?   r\  r=   r>   rj   r$  r%  )r  r   reference_demtemperaturerM   r   s         r   lapse_rate_based_downscalingr    sM    /11==osSSD|6777u++---|%=>>>y+...v}---w&&&|U+++vq!!!|Q'''w&&((11#**,,???x  ''))225<<>>BBBx  ''))22=3G3G3I3IJJJx  ''))22;3E3E3G3GHHH	
t}}4466
6777<<>> hu	&MMM h''..00DKr   c                    t          j                                        dd          }|t          d           dS |                                                                 |                    dd           |                    dd           |                    d	|           |                    d
d           |                    dd           |                    dd           |                    d                                          	                    | 
                                           |                    d                                          	                    |
                                           |                    d                                          	                    |
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S )Nr   r  r  Fr;   r   r  za+(b-1/b)*(1-c)r   r"  r#  r   re   r?   r\  r=   r>   rj   r$  r%  )r  quotientcloud_coverr   rM   r   s         r   temp_srad_cc_correctionr    s    /11==osSSD|6777u++---|%=>>>y"3444vt$$$w&&&|U+++vq!!!w&&((11+2D2D2F2FGGGw&&((11(//2C2CDDDx  ''))22;3E3E3G3GHHH	
t}}4466
6777<<>> hu	&MMM h''..00DKr   c                     t          j                                        dd          }|t          d           dS |                                                                 |                    dd           |                    dd           |                    d	|           |                    d
d           |                    dd           |                    dd           |                    d                                          	                    | 
                                           |                    d                                          	                    |
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S )Nr   r  r  Fr;   r   r  za*(1-0.75*b^3.4)r   r"  r#  r   re   r?   r\  r=   r>   rj   r$  r%  )stotrB  r   rM   r   s        r   surface_radiationr    s    /11==osSSD|6777u++---|%=>>>y"4555vt$$$w&&&|U+++vq!!!w&&((11$++--@@@x  ''))22:3D3D3F3FGGG	
t}}4466
6777<<>> hu	&MMM h''..00DKr   c                     t          j                                        dd          }|t          d           dS |                                                                 |                    dd           |                    d|           |                    dd	           |                    d
d           |                    dd           |                    dd           |                    d                                          	                    | 
                                           |                    d                                          	                    |
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S Nr   r  r  Fr;   r   r  r   rS  r"  r#  r   re   r?   r=   r>   rj   r$  r%  )rU  rV  equrM   r   s        r   grid_calculatorr    s    /11==osSSD|6777u++---|%=>>>y#&&&v}---w&&&|U+++vq!!!w&&((11$++--@@@w&&((11$++--@@@	
t}}4466
6777<<>> hu	&MMMh''..00DKr   c                    t          j                                        dd          }|t          d           dS |                                                                 |                    dd           |                    d|           |                    dd	           |                    d
d           |                    dd           |                    dd           |                    d                                          	                    | 
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S r  r%  )rU  r  rM   r   s       r   grid_calculator_simpler    s    /11==osSSD|6777u++---|%=>>>y#&&&v}---w&&&|U+++vq!!!w&&((11$++--@@@	
t}}4466
6777<<>> hu	&MMMh''..00DKr   c                     t          j                                        dd          }|t          d           dS |                                                                 |                    dd           |                    d|           |                    dd	           |                    d
d           |                    dd           |                    dd           |                    d                                          	                    | 
                                           |                    d                                          	                    |
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S )Nr   r  r  Fr;   r   r  r   rS  r"  r#  r   re   r?   r\  r=   r>   rj   r$  r%  )rU  xobj2r  rM   r   s        r   grid_calculatorXr  5  s    /11==osSSD|6777u++---|%=>>>y#&&&v}---w&&&|U+++vq!!!w&&((11$++--@@@x  ''))225<<>>BBB	
t}}4466
6777<<>> hu	&MMMh''..00DKr   c                     t          j                                        dd          }|t          d           dS |                                                                 |                    dd           |                    dd           |                    d	d
           |                    dd           |                    dd           |                    dd           |                    d                                          	                    | 
                                           |                    d                                          	                    |
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S )Nr   r  r  Fr;   r   r  z
abs((a-b))r   rS  r"  r#  r   re   r?   r\  r=   r>   rj   r$  r%  )r  pblhrM   r   s       r   calc_dist2boundr  T  s    /11==osSSD|6777u++---|%=>>>y,///v}---w&&&|U+++vq!!!w&&((11#**,,???x  ''))224;;==AAA	
t}}4466
6777<<>> hu	&MMMh''..00DKr   c                    t          j                                        dd          }|t          d           dS |                                                                 |                    d                                                              | 	                                           |
                    dd           |
                    d|           |
                    dd	           |
                    d
|                                           |
                    d|                                           |
                    d|                                           |
                    d|                                           |
                    d|                                           |
                    d|                                           |
                    d|                                           |
                    dd           t          d|                                                                z              |                                st          d           dS t          d           |                    t          j        d                                                                        d	          }|S )Nr  r6   r  Fr   r  SCALE_UPr   r   r   r   r   r   r   r   r   r   r   r=   r>   rj   r   r  )r   r   r3  rM   r   s        r   resample_upr  s  sk    /11==lCPPD|1222u++---w&&((11#**,,???{E***z4(((*A...)8+@+@+B+BCCC)8+<+<+>+>???)8+<+<+>+>???)8+<+<+>+>???)8+<+<+>+>???)8??+<+<===)8??+<+<===)7333	
t}}4466
6777<<>> hu	&MMMh1(;;<<GGIIRRSTUUDKr   c                     t          j                                        dd          }|t          d           dS |                                                                 |                    dd           |                    dd           |                    d	d
           |                    dd           |                    dd           |                    dd           |                    d                                          	                    | 
                                           |                    d                                          	                    |
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S )Nr   r  r  Fr;   r   r  z
abs((b-a))r   rS  r"  r#  r   re   r?   r\  r=   r>   rj   r$  r%  )
dist2boundmaxdist2boundrM   r   s       r   invert_dist2boundr    s    /11==osSSD|6777u++---|%=>>>y,///v}---w&&&|U+++vq!!!w&&((11*2C2C2E2EFFFx  ''))22=3G3G3I3IJJJ	
t}}4466
6777<<>> hu	&MMMh''..00DKr   c                    t          j                                        dd          }|t          d           dS |                                                                 |                    d|           |                    dd           |                    d|           |                    d	d           |                    d
d           |                    dd           |                    d                                          	                    | 
                                           |                    d                                          	                    |
                                           |                    d                                          	                    |
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S )Nr   r  r  Fr;   r  zb*a/cr   r"  r#  r   re   r?   r\  r=   r>   rj   r$  r%  )windhighwindlowprecr   r3  rM   r   s          r   downscale_precipr    s    /11==osSSD|6777u++---|T***y'***vt$$$w&&&|U+++vq!!!w&&((11(//2C2CDDDx  ''))224;;==AAAx  ''))227>>3C3CDDD	
t}}4466
6777<<>> hu	&MMMh''..00DKr   c                 r   t          j                                        dd          }|t          d           dS |                                                                 |                    d                                                              | 	                                           |                    d                                                              |	                                           |
                    dd           |
                    dt          j                               |
                    d	t          j                               |
                    d
d           t          d|                                                                z              |                                st          d           dS t          d           |dk    r'|                    d	                                          }|dk    r'|                    d                                          }|S )Nr   r   r   Fr?   r;   r   MINMAXPCTL_VALg      I@r=   r>   rj   r   r]   )r   r   rA   r   rB   rl   rG   rm   rn   r   ro   rp   rD   rE   rF   r   )rU  rV  param1rM   r   s        r   grid_statisticsr    s    /11==>OQTUUD|;<<<u++---w&&((11$++--@@@w&&((11$++--@@@|%=>>>uh<>>???uh<>>???z9---	
t}}4466
6777<<>> hu	&MMM{{!!%((5577{{!!%((5577Kr   c                    t          j                                        dd          }|t          d           dS |                                                                 |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d	                     |                    d                                                              | 	                                
                    d
                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    d                                                              | 	                                
                    d                     |                    dd           |                    d t          j                               |                    d!t          j                               t          d"|                                                                z              |                                st          d#           dS t          d$           |dk    r'|                    d                                           }|dk    r'|                    d!                                          }|S )%Nr   r   r   Fr?   r   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r;   r   r  r  r=   r>   rj   )r   r   rA   r   rB   rl   rG   rm   rn   rI   rJ   ro   rp   rD   rE   rF   r   )r   minmaxrM   r   s       r   
get_minmaxr    s2    /11==>OQTUUD|;<<<u++---w&&((11'2D2D2F2F2O2OPQ2R2RSSSw&&((11'2D2D2F2F2O2OPQ2R2RSSSw&&((11'2D2D2F2F2O2OPQ2R2RSSSw&&((11'2D2D2F2F2O2OPQ2R2RSSSw&&((11'2D2D2F2F2O2OPQ2R2RSSSw&&((11'2D2D2F2F2O2OPQ2R2RSSSw&&((11'2D2D2F2F2O2OPQ2R2RSSSw&&((11'2D2D2F2F2O2OPQ2R2RSSSw&&((11'2D2D2F2F2O2OPQ2R2RSSSw&&((11'2D2D2F2F2O2OPQ2R2RSSSw&&((11'2D2D2F2F2O2OPR2S2STTTw&&((11'2D2D2F2F2O2OPR2S2STTTw&&((11'2D2D2F2F2O2OPR2S2STTTw&&((11'2D2D2F2F2O2OPR2S2STTTw&&((11'2D2D2F2F2O2OPR2S2STTTw&&((11'2D2D2F2F2O2OPR2S2STTTw&&((11'2D2D2F2F2O2OPR2S2STTTw&&((11'2D2D2F2F2O2OPR2S2STTTw&&((11'2D2D2F2F2O2OPR2S2STTTw&&((11'2D2D2F2F2O2OPR2S2STTTw&&((11'2D2D2F2F2O2OPR2S2STTTw&&((11'2D2D2F2F2O2OPR2S2STTTw&&((11'2D2D2F2F2O2OPR2S2STTTw&&((11'2D2D2F2F2O2OPR2S2STTT|%=>>>uh<>>???uh<>>???	
t}}4466
6777<<>> hu	&MMM {{!!%((5577{{!!%((5577Kr   c                 P   t          j                                        dd          }|t          d           dS |                                                                 |                    dd           |                    d|           |                    dd	           |                    d
d           |                    dd           |                    dd           |                    d                                          	                    | 
                                           |                    d                                          	                    |
                                           |                    d                                          	                    |
                                           |                    d                                          	                    |
                                           t          d|                                                                z              |                                st          d           dS t          d           |                    d          
                                }|S )Nr   r  r  Fr;   r_   r  r   rS  r"  r#  r   re   r?   r=   r>   rj   r$  r%  )z1z2t1t2r  rM   r   s          r   tlapser  +  s,    /11==osSSD|6777u++---|Q'''y#&&&v}---w&&&|U+++vq!!!w&&((11"))++>>>w&&((11"))++>>>w&&((11"))++>>>w&&((11"))++>>>	
t}}4466
6777<<>> hu	&MMMh''..00DKr   c                 r   t          j                                        dd          }|t          d           dS |                                                                 |                    d                                                              | 	                                           |
                    dd           |
                    d|           |
                    d	|           |
                    d
|           |
                    d|           |
                    d|           |                                s8t          d|                                                                z              dS |                    d                                                              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   rB   rl   rG   rm   rn   r   ro   rF   rD   rE   rI   rJ   )r   xminxmaxyminymaxbufferrM   dss           r   Run_Clip_Gridsr  L  s    /11::<NND|1222u++---w&&((11#**,,???x000vt$$$vt$$$vt$$$vt$$$ 	x(((<<>> (4==??+@+@+B+BBCCCu			I	&	&	1	1	3	3	<	<Q	?	?BIr   c                 x   t          j                                        dd          }|t          d           dS |                                                                 |                    d                                                              |            |	                    d|           |	                    dd           |
                                s8t          d	|                                                                z              dS |                    d
                                          }|S )Nr   r(  z-Failed to create tool: Clip Grid with PolygonFr   r   r  polygonsr  r   )r   r   r  r   rB   rl   rG   rm   rn   ro   rF   rD   rE   rI   )gridpolygonrM   r   s       r   clip_with_polygonr  i  s    /11::=#NND|=>>>u++---w&&((11$777z7+++x,,,<<>> (4==??+@+@+B+BBCCCuh''2244DKr   c                    t          j                                        dd          }|t          d           dS |                                                                 |                    d|            |                    dd           |                    dd	           |                    d
d           |                    dd           |                                s8t          d|                                	                                z              dS |
                    d                                          }|S )Nr   rR   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   rB   rl   ro   rF   rD   rE   rG   r   r   s      r   Run_Vectorising_Grid_Classesr    s)    /11::=#NND|?@@@u++---vs###{M222z8,,,w CDDD}e,,,<<>> (4==??+@+@+B+BBCCCuj))6688DKr   )T)NN)NNNN);PySAGAr   r   r   datetimeos.pathpsutilshutilr   r3   rP   rX   rt   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r&  r+  r1  r4  rF  rN  rQ  rW  rZ  r]  r`  rd  rf  rh  rn  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     sz  &       



 				    > > > >$  B  2  20 0 0fM M M`  8/ / /d/ / /d  >  2  2  @  <     F  8  <& & &R  D  <  2  8  6  B  4  4  >  >  >  >  >  <  <   6   :! ! !H  D  B  >  <  >  >  D  >  @  @4 4 4n  B  :  .    r   