@@ -45,6 +45,7 @@ def wr2nc(
4545 wr = WeatherRadar (input_files , site_meta , date )
4646 wr .sort_and_dedup_timestamps ()
4747 wr .convert_to_cloudnet_arrays ()
48+ wr .screen_clutter ()
4849 wr .screen_noise ()
4950 wr .add_meta ()
5051 attributes = output .add_time_attribute (ATTRIBUTES , wr .date )
@@ -145,11 +146,25 @@ def convert_to_cloudnet_arrays(self) -> None:
145146 self .scalars ["NEZ" ], "calibration_reflectivity_factor"
146147 )
147148
149+ def screen_clutter (self ) -> None :
150+ n_range = len (self .data ["range" ][:])
151+ max_range = 10
152+ threshold = - 10 # dBZ
153+ mean_z = np .mean (self .data ["Zh" ].data [:, :max_range ], axis = 0 )
154+ is_clutter = mean_z > threshold
155+ ind_last = np .nonzero (is_clutter )[0 ][- 1 ]
156+ mask = np .zeros (n_range , dtype = np .bool )
157+ mask [: ind_last + 1 ] = True
158+ self ._screen_indices ((slice (None ), mask ))
159+
148160 def screen_noise (self ) -> None :
149161 is_noise = self .data ["SNR" ].data < 0
162+ self ._screen_indices (is_noise )
163+
164+ def _screen_indices (self , ind : list | tuple ) -> None :
150165 for cloudnet_array in self .data .values ():
151166 if cloudnet_array .data .ndim == 2 :
152- cloudnet_array .mask_indices (is_noise )
167+ cloudnet_array .mask_indices (ind )
153168
154169
155170class InvalidRangeError (CloudnetException ):
0 commit comments