NEXRAD Split Cuts

Hi, I want to use some of the dual-polar variables to help clean up NEXRAD radial velocity radar data. However, when I create a gatefilter all the data gets filtered out at lower elevations angles since the lower elevations angles are split cut. Is there a way to merge the split cut fields available in pyart? Or do you have any other suggestions for this issue?

Thanks
Hannah

1 Like

Thanks for the question here @hvagasky - what do you mean by splitcut here? There is a way to extract sweeps, and you could apply different filters to different radar objects using this framework?

I saw it explain this way “NEXRAD, in most volume coverage patterns, operates with the lowest few sweeps/elevations collected using so-called “split cuts”. In a split cut, the radar collects one full rotation at an elevation with a low PRF (high unambiguous range) to collect the power-based measurements (reflectivity + dual pol), then does another full rotation at the same elevation with a higher PRF (lower unambiguous range and higher unambiguous velocity) to collect the Doppler-based measurements (velocity and spectrum width). The power data from the first part of the split cut is used to identify (and possibly fix) any range ambiguity/folding in the Doppler data from the second part. Both sweeps from the split cut are written to the final data, but separately.
This is used to allow better data quality and clutter filtering than the batch mode or even single PRFs used at higher elevations. The downside is that this becomes a bigger chore to deal with on the data processing end since you have two complete sweeps at e.g. 0.5 elevation.”

If I print out the elevation angle and nyquist velocity in my dataset I get: (sweep elevation nyquist)
0 0.5342941 9.039999961853027
1 0.52734375 28.489999771118164
2 0.9184952 9.039999961853027
3 0.92285156 28.489999771118164
4 1.3615723 9.039999961853027
5 1.3623047 28.489999771118164
6 1.8580627 28.489999771118164
7 2.4004364 28.489999771118164
8 3.1756897 28.489999771118164
9 3.9837036 28.489999771118164
10 5.155777 28.489999771118164
11 6.395355 28.489999771118164
12 8.001053 30.809999465942383
13 10.072037 33.27000045776367
14 12.4897 36.15999984741211
15 15.647888 36.15999984741211
16 19.494492 36.15999984741211

Sweeps 0 and 1 that have nearly the same elevation angle, but not all the data is available in both. For example, rhoHV is only in sweep = 0, but not sweep = 1. On the other hand radial velocity is available for sweep = 1, but not sweep = 0. Reflectivity is available for sweeps 0 and 1.

If I use a gatefilter based on rhoHV it just removes everything from sweep 1 since it is zero everywhere.

1 Like

@mgrover1 the problem with using different sweeps is that the azimuths probably wont line up (in the sense of the data matrix [index 0 will not be the same azimuth in both]. Maybe we could build the same ordering procedure in the composite ref. code to order the azimuths then apply the gatefilter (its a simple argsort command). Thoughts?

1 Like

I like this idea of an argsort command…

Just for reference, here’s a description of what LROSE does: lrose-core/RadxVol.hh at 73c02fdaa49ffaf6a38c056d1de74634d4a00564 · NCAR/lrose-core · GitHub

And I think the actual code to do it is in here: lrose-core/RadxVol.cc at 73c02fdaa49ffaf6a38c056d1de74634d4a00564 · NCAR/lrose-core · GitHub

Also, I think it is theoretically possible (not sure how practical) that you don’t start near 0 deg azimuth in both sweeps. There is likely additional bookkeeping that needs to be done to in terms of ray indices.

I guess this being said @hvagasky for a short term solution, you might run the nexrad volume through RadxConvert to produce a cfradial and go into the params file to make sure you enable split cut recombination. Then that file could be read in via PyART.

1 Like

@nick.guy thanks for the suggestion about LROSE. RadxConvert resolved the issue.