Hello everyone,
I am happy to start using some useful tools available in libraries such as wradlib.
I am currently performing quality control on X-band radar data. For the moment, I have created cumulative beam blockage (CBB) maps and am trying to define a workflow for clutter removal and posterior attenuation correction.
I would like to use the wrl.classify.classify_echo_fuzzy tool to perform echo classification, but I have some specific questions:
-
I read in other posts that the static clutter map can be obtained through the Gabella filter, so I am doing it like that. Although I haven’t been able to find the paper that is constantly cited in the web. Is there any criteria to set the parameters?
-
Assuming that I have a proper static clutter map in my dataset (sweep), when I try to apply the fuzzy logic for the echo classification, I am getting some errors. I have tried doing this:
# Identify non-meteorological echoes using fuzzy echo classification moments = dict(zdr = 'ZDR', rho = 'RHOHV', phi = 'PHIDP', dop = 'VEL', map = 'CMAP') weights = {'zdr': 0.4, 'rho': 0.4, 'phi': 0.1, 'dop': 0.1, 'map': 0.5} prob, nanmask = swp.wrl.classify.classify_echo_fuzzy(moments, weights = weights)But then I get this error:
ValueError: Argument dat must be a dictionary with mandatory keywords (‘zdr’, ‘rho’, ‘phi’, ‘dop’, ‘map’).The documentation (I am using version 2.4.0) calls the differential phase ‘phidp’ in the docstring. So I have tried using:
# Identify non-meteorological echoes using fuzzy echo classification moments = dict(zdr = 'ZDR', rho = 'RHOHV', phidp = 'PHIDP', dop = 'VEL', map = 'CMAP') weights = {'zdr': 0.4, 'rho': 0.4, 'phidp': 0.1, 'dop': 0.1, 'map': 0.5} prob, nanmask = swp.wrl.classify.classify_echo_fuzzy(moments, weights = weights)But then again, I get an error related to the number of arguments:
ValueError: input_core_dims must be None or a tuple with the length same to the number of arguments. Given 5 input_core_dims: [[‘azimuth’, ‘range’], [‘azimuth’, ‘range’], [‘azimuth’, ‘range’], [‘azimuth’, ‘range’], [‘azimuth’, ‘range’]], but number of args is 4.So I would like to know what I am doing wrong. I think that I am missing something related to the variables I am giving to the echo classification. I have checked the dimensions and coordinates of the variables, especially for the clutter map, but it seems to be coherent with the other variables (I did it using
swp = swp.assign({‘CMAP’: CMAP})). -
Finally, as I am new to the use of radars, I would like to confirm whether the workflow I intend to follow is optimal. I am taking the raw data. I want to filter the variables by beam blockage, clutter (using the meteo echo classification), and then, with the filtered data by clutter and beam blockage, I intend to check for bright band, and finally for attenuation correction. Do you think it is robust enough for future QPE? Do you have any hints on which tools to use?
Thank you in advance for your responses, and I hope I described the problem in a proper and not so extensive way.
Nicolás