Source code for moaap.trackers.fronts

import numpy as np
from scipy import ndimage

[docs] def frontal_identification(Frontal_Diagnostic, front_treshold, MinAreaFR, Area): """ Identifies frontal zones based on a thermal frontal parameter. Parameters ---------- Frontal_Diagnostic : np.ndarray Calculated frontal diagnostic field (F*). front_treshold : float Threshold value to identify fronts. MinAreaFR : float Minimum area required for a frontal zone (km^2). Area : np.ndarray Grid cell area array. Returns ------- FR_objects : np.ndarray Labeled frontal zone objects. """ rgiObj_Struct_Fronts=np.zeros((3,3,3)); rgiObj_Struct_Fronts[1,:,:]=1 Fmask = (Frontal_Diagnostic > front_treshold) rgiObjectsUD, nr_objectsUD = ndimage.label(Fmask,structure=rgiObj_Struct_Fronts) print(' '+str(nr_objectsUD)+' object found') # # calculate object size Objects=ndimage.find_objects(rgiObjectsUD) rgiAreaObj = np.array([np.sum(Area[Objects[ob][1:]][rgiObjectsUD[Objects[ob]][0,:,:] == ob+1]) for ob in range(nr_objectsUD)]) # rgiAreaObj=np.array([np.sum(rgiObjectsUD[Objects[ob]] == ob+1) for ob in range(nr_objectsUD)]) # create final object array FR_objects=np.copy(rgiObjectsUD) TooSmall = np.where(rgiAreaObj < MinAreaFR*1000**2) FR_objects[np.isin(FR_objects, TooSmall[0]+1)] = 0 return FR_objects