4848## Define input parameters
4949KWARGS = {
5050 "sclass" : [1 , 2 , 3 , 4 , 5 ],
51- "I_lim" : [0.7 , 2.0 , 3.7 , 5.0 ],
51+ "I_lim" : [0.72 , 2.0 , 3.7 , 5.0 ],
5252 "epsg_wgs84" : 4326 ,
5353 'MULTIPROCESSING' : False ,
5454 'MAX_NUMBER_OF_PROCESSES' : 10 ,
@@ -195,6 +195,9 @@ def ComputeRainCnt(self, MeanRain, StdRain, acum24):
195195 # Normalize
196196 I24norm_da = (acum24 - MeanRain )/ StdRain
197197
198+ # Set normalized value to -9999 where rainfall is <= 5 mm
199+ I24norm_da [acum24 <= 5 ] = - 9999 #This is done to trat extremely small rainfall differently
200+
198201 return (I24norm_da )
199202
200203 def ComputeRainHazard (self , I24norm_da , I_lim , file_name1 , ncols , nrows , kwds ):
@@ -213,21 +216,18 @@ def ComputeRainHazard(self, I24norm_da, I_lim, file_name1, ncols, nrows, kwds):
213216
214217 RainHazard_aux = np .zeros_like (aux )
215218
216- # Assign rain hazard
217- for ii in range (len (I_lim )):
219+ # Assign rain hazard based on I_lim thresholds (Classes 1 to len(I_lim))
220+ for ii in range (len (I_lim )):
218221 if ii == 0 :
219- mask = (aux <= ii )
222+ mask = (aux > - 9999 ) & ( aux < I_lim [ ii ]) # First rainhazard class, all -9999 will remain as 0 in this case
220223 RainHazard_aux = np .where (mask , ii + 1 , RainHazard_aux )
221224 else :
222- if ii < 3 :
223- mask = (aux <= ii ) & (aux > ii - 1 )
224- RainHazard_aux = np .where (mask , ii + 1 , RainHazard_aux )
225- else :
226- mask = (aux <= ii ) & (aux > ii - 1 )
227- RainHazard_aux = np .where (mask , ii + 1 , RainHazard_aux )
228-
229- mask = (aux > ii )
230- RainHazard_aux = np .where (mask , ii + 2 , RainHazard_aux )
225+ mask = (aux >= I_lim [ii - 1 ]) & (aux < I_lim [ii ])
226+ RainHazard_aux = np .where (mask , ii + 1 , RainHazard_aux )
227+
228+ # Handle values greater than or equal to the last threshold (Class len(I_lim)+1)
229+ mask = aux >= I_lim [- 1 ]
230+ RainHazard_aux = np .where (mask , len (I_lim ) + 1 , RainHazard_aux )
231231
232232 # Save to file
233233 folder_out = self .path_out / self .mode
@@ -265,6 +265,13 @@ def ComputeHazard(self, susc_da, RainHazard_aux, file_name1, kwds):
265265
266266 # Check hazard by going through hazard matrix
267267 hazard_aux = np .where (np .isnan (susc_da ), np .nan , hazard_aux )
268+
269+ mask = (susc_da == 1 ) & (RainHazard_aux == 3 )
270+ hazard_aux = np .where (mask , 1 , hazard_aux )
271+ mask = (susc_da == 1 ) & (RainHazard_aux == 4 )
272+ hazard_aux = np .where (mask , 2 , hazard_aux )
273+ mask = (susc_da == 1 ) & (RainHazard_aux == 5 )
274+ hazard_aux = np .where (mask , 3 , hazard_aux )
268275
269276 mask = (susc_da == 2 ) & (RainHazard_aux == 2 )
270277 hazard_aux = np .where (mask , 1 , hazard_aux )
@@ -275,6 +282,8 @@ def ComputeHazard(self, susc_da, RainHazard_aux, file_name1, kwds):
275282 mask = (susc_da == 2 ) & (RainHazard_aux == 5 )
276283 hazard_aux = np .where (mask , 5 , hazard_aux )
277284
285+ mask = (susc_da == 3 ) & (RainHazard_aux == 1 )
286+ hazard_aux = np .where (mask , 1 , hazard_aux )
278287 mask = (susc_da == 3 ) & (RainHazard_aux == 2 )
279288 hazard_aux = np .where (mask , 2 , hazard_aux )
280289 mask = (susc_da == 3 ) & (RainHazard_aux == 3 )
@@ -284,6 +293,8 @@ def ComputeHazard(self, susc_da, RainHazard_aux, file_name1, kwds):
284293 mask = (susc_da == 3 ) & (RainHazard_aux == 5 )
285294 hazard_aux = np .where (mask , 10 , hazard_aux )
286295
296+ mask = (susc_da == 4 ) & (RainHazard_aux == 1 )
297+ hazard_aux = np .where (mask , 2 , hazard_aux )
287298 mask = (susc_da == 4 ) & (RainHazard_aux == 2 )
288299 hazard_aux = np .where (mask , 3 , hazard_aux )
289300 mask = (susc_da == 4 ) & (RainHazard_aux == 3 )
@@ -293,6 +304,8 @@ def ComputeHazard(self, susc_da, RainHazard_aux, file_name1, kwds):
293304 mask = (susc_da == 4 ) & (RainHazard_aux == 5 )
294305 hazard_aux = np .where (mask , 15 , hazard_aux )
295306
307+ mask = (susc_da == 5 ) & (RainHazard_aux == 1 )
308+ hazard_aux = np .where (mask , 3 , hazard_aux )
296309 mask = (susc_da == 5 ) & (RainHazard_aux == 2 )
297310 hazard_aux = np .where (mask , 5 , hazard_aux )
298311 mask = (susc_da == 5 ) & (RainHazard_aux == 3 )
0 commit comments