How to Read in Multiple Volume Scans Into a Single Object and Visualize#
Imports#
[1]:
import warnings
import cartopy.crs as ccrs
import cmweather # noqa
import matplotlib.pyplot as plt
import numpy as np
import xarray as xr
from open_radar_data import DATASETS
import xradar as xd
warnings.filterwarnings("ignore")
Access Radar Data from the Open Radar Data Package#
[2]:
radar_files = [
"gucxprecipradarcmacppiS2.c1.20220314.021559.nc",
"gucxprecipradarcmacppiS2.c1.20220314.024239.nc",
"gucxprecipradarcmacppiS2.c1.20220314.025840.nc",
]
files = [DATASETS.fetch(file) for file in radar_files]
Downloading file 'gucxprecipradarcmacppiS2.c1.20220314.021559.nc' from 'https://github.com/openradar/open-radar-data/raw/main/data/gucxprecipradarcmacppiS2.c1.20220314.021559.nc' to '/home/docs/.cache/open-radar-data'.
Downloading file 'gucxprecipradarcmacppiS2.c1.20220314.024239.nc' from 'https://github.com/openradar/open-radar-data/raw/main/data/gucxprecipradarcmacppiS2.c1.20220314.024239.nc' to '/home/docs/.cache/open-radar-data'.
Downloading file 'gucxprecipradarcmacppiS2.c1.20220314.025840.nc' from 'https://github.com/openradar/open-radar-data/raw/main/data/gucxprecipradarcmacppiS2.c1.20220314.025840.nc' to '/home/docs/.cache/open-radar-data'.
Read the Data using Xradar#
We can read the data into xradar by using the xr.open_mfdataset
function, but first, we need to align the angles of the different radar volumes.
[3]:
def fix_angle(ds):
"""
Aligns the radar volumes
"""
ds["time"] = ds.time.load() # Convert time from dask to numpy
start_ang = 0 # Set consistent start/end values
stop_ang = 360
# Find the median angle resolution
angle_res = ds.azimuth.diff("azimuth").median()
# Determine whether the radar is spinning clockwise or counterclockwise
median_diff = ds.azimuth.diff("time").median()
ascending = median_diff > 0
direction = 1 if ascending else -1
# first find exact duplicates and remove
ds = xd.util.remove_duplicate_rays(ds)
# second reindex according to retrieved parameters
ds = xd.util.reindex_angle(
ds, start_ang, stop_ang, angle_res, direction, method="nearest"
)
ds = ds.expand_dims("volume_time") # Expand for volumes for concatenation
ds["volume_time"] = [np.nanmin(ds.time.values)]
return ds
[4]:
# Concatenate in xarray ds
ds = xr.open_mfdataset(
files,
preprocess=fix_angle,
engine="cfradial1",
group="sweep_0",
concat_dim="volume_time",
combine="nested",
)
ds
[4]:
<xarray.Dataset> Size: 2GB Dimensions: (volume_time: 3, azimuth: 1130, range: 2004) Coordinates: * range (range) float32 8kB 306.9 ... 4... * azimuth (azimuth) float32 5kB 0.1593 ..... * volume_time (volume_time) datetime64[ns] 24B ... time (volume_time, azimuth) datetime64[ns] 27kB ... elevation (volume_time, azimuth) float32 14kB ... latitude float64 8B 38.9 longitude float64 8B -106.9 altitude float64 8B 3.149e+03 Data variables: (12/37) DBZ (volume_time, azimuth, range) float64 54MB dask.array<chunksize=(1, 1130, 668), meta=np.ndarray> VEL (volume_time, azimuth, range) float64 54MB dask.array<chunksize=(1, 1130, 668), meta=np.ndarray> WIDTH (volume_time, azimuth, range) float64 54MB dask.array<chunksize=(1, 1130, 668), meta=np.ndarray> ZDR (volume_time, azimuth, range) float64 54MB dask.array<chunksize=(1, 1130, 668), meta=np.ndarray> PHIDP (volume_time, azimuth, range) float64 54MB dask.array<chunksize=(1, 1130, 668), meta=np.ndarray> RHOHV (volume_time, azimuth, range) float64 54MB dask.array<chunksize=(1, 1130, 668), meta=np.ndarray> ... ... snow_rate_m2009_1 (volume_time, azimuth, range) float64 54MB dask.array<chunksize=(1, 1130, 668), meta=np.ndarray> snow_rate_m2009_2 (volume_time, azimuth, range) float64 54MB dask.array<chunksize=(1, 1130, 668), meta=np.ndarray> sweep_number (volume_time) int32 12B 0 0 0 sweep_fixed_angle (volume_time) float32 12B 5.988... sweep_mode (volume_time) <U188 2kB 'azimut... nyquist_velocity (volume_time, azimuth) float64 27kB dask.array<chunksize=(1, 1130), meta=np.ndarray>
xarray.Dataset
- volume_time: 3
- azimuth: 1130
- range: 2004
- range(range)float32306.9 306.9 ... 4.029e+04 4.029e+04
- long_name :
- Range to measurement volume
- units :
- meter
- standard_name :
- projection_range_coordinate
- spacing_is_constant :
- true
- axis :
- radial_range_coordinate
- meters_to_center_of_first_gate :
- -112.6891
- meters_between_gates :
- 59.94095
array([ 306.88168, 306.89145, 306.90283, ..., 40287.496 , 40287.504 , 40287.516 ], dtype=float32)
- azimuth(azimuth)float320.1593 0.4779 ... 359.5 359.9
- long_name :
- Azimuth Angle from True North
- units :
- degree
- axis :
- radial_azimuth_coordinate
- standard_name :
- sensor_to_target_azimuth_angle
array([1.593018e-01, 4.779053e-01, 7.965088e-01, ..., 3.592255e+02, 3.595441e+02, 3.598627e+02], dtype=float32)
- volume_time(volume_time)datetime64[ns]2022-03-14T02:17:35 ... 2022-03-...
array(['2022-03-14T02:17:35.000000000', '2022-03-14T02:44:15.000000000', '2022-03-14T03:00:16.000000000'], dtype='datetime64[ns]')
- time(volume_time, azimuth)datetime64[ns]2022-03-14T02:18:06 ... 2022-03-...
- long_name :
- Time in Seconds from Volume Start
- standard_name :
- time
array([['2022-03-14T02:18:06.000000000', '2022-03-14T02:17:35.000000000', '2022-03-14T02:17:35.000000000', ..., '2022-03-14T02:18:06.000000000', '2022-03-14T02:18:06.000000000', '2022-03-14T02:18:06.000000000'], ['2022-03-14T02:44:46.000000000', '2022-03-14T02:44:15.000000000', '2022-03-14T02:44:15.000000000', ..., '2022-03-14T02:44:46.000000000', '2022-03-14T02:44:46.000000000', '2022-03-14T02:44:46.000000000'], ['2022-03-14T03:00:47.000000000', '2022-03-14T03:00:16.000000000', '2022-03-14T03:00:16.000000000', ..., '2022-03-14T03:00:46.000000000', '2022-03-14T03:00:46.000000000', '2022-03-14T03:00:46.000000000']], dtype='datetime64[ns]')
- elevation(volume_time, azimuth)float325.988 5.96 5.971 ... 5.988 5.988
- long_name :
- Elevation angle from horizontal plane
- units :
- degree
- axis :
- radial_elevation_coordinate
- standard_name :
- sensor_to_target_elevation_angle
array([[5.987549 , 5.960083 , 5.9710693, ..., 5.987549 , 5.987549 , 5.987549 ], [5.987549 , 5.965576 , 5.9765625, ..., 5.987549 , 5.987549 , 5.987549 ], [5.987549 , 5.960083 , 5.9765625, ..., 5.987549 , 5.987549 , 5.987549 ]], dtype=float32)
- latitude()float6438.9
- long_name :
- Latitude
- units :
- degree_N
- standard_name :
- latitude
- valid_min :
- -90.0
- valid_max :
- 90.0
array(38.89838028)
- longitude()float64-106.9
- long_name :
- Longitude
- units :
- degree_E
- standard_name :
- longitude
- valid_min :
- -180.0
- valid_max :
- 180.0
array(-106.94321442)
- altitude()float643.149e+03
- long_name :
- Altitude
- units :
- m
- standard_name :
- altitude
array(3149.19995117)
- DBZ(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Equaivalent_radar_reflectiivity_factor
- units :
- dBZ
- standard_name :
- equivalent_reflectivity_factor
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - VEL(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Radial Doppler Velocity, Positive for Motion Away from Instrument
- units :
- m/s
- standard_name :
- radial_velocity_of_scatterers_away_from_instruments
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - WIDTH(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Spectral Width
- units :
- m/s
- standard_name :
- doppler_spectrum_width
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - ZDR(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Differential Reflectivity
- units :
- dB
- standard_name :
- log_differential_reflectivity_hv
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - PHIDP(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Differential Phase
- units :
- degree
- standard_name :
- differential_phase_hv
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - RHOHV(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Cross-Polar Correlation Ratio
- units :
- 1
- standard_name :
- cross_correlation_ratio_hv
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - NCP(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Normalized Coherent Power, also known as SQI
- units :
- 1
- standard_name :
- normalized_coherent_power
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - DBZhv(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Equivalent Reflectivity Factor HV
- units :
- dBZ
- standard_name :
- equivalent_reflectivity_factor_hv
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - cbb_flag(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Cumulative Beam Block Fraction Flag
- units :
- 1
- comment :
- Cumulative beam block flag due to terrain.
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - sounding_temperature(volume_time, azimuth, range)float32dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Interpolated profile
- units :
- degC
- standard_name :
- interpolated_profile
Array Chunk Bytes 25.92 MiB 2.88 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float32 numpy.ndarray - height(volume_time, azimuth, range)float32dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Height of radar beam
- units :
- m
- standard_name :
- height
Array Chunk Bytes 25.92 MiB 2.88 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float32 numpy.ndarray - signal_to_noise_ratio(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Signal to Noise Ratio
- units :
- dB
- standard_name :
- signal_to_noise_ratio
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - velocity_texture(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Mean dopper velocity
- units :
- m/s
- standard_name :
- radial_velocity_of_scatterers_away_from_instrument
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - gate_id(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Classification of dominant scatterer
- units :
- 1
- notes :
- 0:multi_trip,1:rain,2:snow,3:no_scatter,4:melting,5:clutter,6:terrain_blockage
- valid_max :
- 6
- valid_min :
- 0
- flag_values :
- 0, 1, 2, 3, 4, 5, 6
- flag_meanings :
- multi_trip rain snow no_scatter melting clutter terrain_blockage
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 62 graph layers Data type float64 numpy.ndarray - simulated_velocity(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Simulated mean doppler velocity
- units :
- m/s
- standard_name :
- radial_velocity_of_scatterers_away_from_instrument
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - corrected_velocity(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Corrected mean doppler velocity
- units :
- m/s
- standard_name :
- corrected_radial_velocity_of_scatterers_away_from_instrument
- valid_min :
- -79.5
- valid_max :
- 79.5
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - unfolded_differential_phase(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Unfolded differential propagation phase shift
- units :
- degree
- standard_name :
- differential_phase_hv
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - corrected_differential_phase(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Corrected differential propagation phase shift
- units :
- degree
- standard_name :
- differential_phase_hv
- valid_min :
- 0.0
- valid_max :
- 400.0
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - filtered_corrected_differential_phase(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Filtered Corrected Differential Phase
- units :
- degree
- standard_name :
- differential_phase_hv
- valid_min :
- 0.0
- valid_max :
- 400.0
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - corrected_specific_diff_phase(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Specific differential phase (KDP)
- units :
- degrees/km
- standard_name :
- specific_differential_phase_hv
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - filtered_corrected_specific_diff_phase(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Filtered Corrected Specific differential phase (KDP)
- units :
- degrees/km
- standard_name :
- specific_differential_phase_hv
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - corrected_differential_reflectivity(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Corrected differential reflectivity
- units :
- dB
- standard_name :
- corrected_log_differential_reflectivity_hv
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - corrected_reflectivity(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Corrected reflectivity
- units :
- dBZ
- standard_name :
- corrected_equivalent_reflectivity_factor
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - height_over_iso0(volume_time, azimuth, range)float32dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Height of radar beam over freezing level
- units :
- m
- standard_name :
- height
Array Chunk Bytes 25.92 MiB 2.88 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float32 numpy.ndarray - specific_attenuation(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Specific attenuation
- units :
- dB/km
- standard_name :
- specific_attenuation
- valid_min :
- 0.0
- valid_max :
- 1.0
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - path_integrated_attenuation(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Path Integrated Attenuation
- units :
- dB
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - specific_differential_attenuation(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Specific Differential Attenuation
- units :
- dB/km
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - path_integrated_differential_attenuation(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Path Integrated Differential Attenuation
- units :
- dB
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - rain_rate_A(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Rainfall Rate from Specific Attenuation
- units :
- mm/hr
- standard_name :
- rainfall_rate
- comment :
- Rain rate calculated from specific_attenuation, R=43.5*specific_attenuation**0.79, note R=0.0 where norm coherent power < 0.4 or rhohv < 0.8
- valid_min :
- 0.0
- valid_max :
- 400.0
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - snow_rate_ws2012(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Snowfall rate from Z using Wolf and Snider (2012)
- units :
- mm/h
- standard_name :
- snowfall_rate
- valid_min :
- 0
- valid_max :
- 500
- swe_ratio :
- 13.699
- A :
- 110
- B :
- 2
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - snow_rate_ws88diw(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Snowfall rate from Z using WSR 88D High Plains
- units :
- mm/h
- standard_name :
- snowfall_rate
- valid_min :
- 0
- valid_max :
- 500
- swe_ratio :
- 13.699
- A :
- 40
- B :
- 2
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - snow_rate_m2009_1(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Snowfall rate from Z using Matrosov et al.(2009) Braham(1990) 1
- units :
- mm/h
- standard_name :
- snowfall_rate
- valid_min :
- 0
- valid_max :
- 500
- swe_ratio :
- 13.699
- A :
- 67
- B :
- 1.28
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - snow_rate_m2009_2(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Snowfall rate from Z using Matrosov et al.(2009) Braham(1990) 2
- units :
- mm/h
- standard_name :
- snowfall_rate
- valid_min :
- 0
- valid_max :
- 500
- swe_ratio :
- 13.699
- A :
- 114
- B :
- 1.39
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - sweep_number(volume_time)int320 0 0
- long_name :
- Sweep index number 0 based
- units :
- 1
array([0, 0, 0], dtype=int32)
- sweep_fixed_angle(volume_time)float325.988 5.988 5.988
- long_name :
- Ray Target Fixed Angle
- units :
- degree
array([5.987549, 5.987549, 5.987549], dtype=float32)
- sweep_mode(volume_time)<U188'azimuth_surveillance\x00\x00\x0...
array(['azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance', 'azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance', 'azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance'], dtype='<U188')
- nyquist_velocity(volume_time, azimuth)float64dask.array<chunksize=(1, 1130), meta=np.ndarray>
- long_name :
- Nyquist velocity
- units :
- m/s
- standard_name :
- nyquist_velocity
Array Chunk Bytes 26.48 kiB 8.83 kiB Shape (3, 1130) (1, 1130) Dask graph 3 chunks in 31 graph layers Data type float64 numpy.ndarray
- rangePandasIndex
PandasIndex(Index([ 306.8816833496094, 306.8914489746094, 306.90283203125, 366.8226318359375, 366.8323974609375, 366.8437805175781, 426.7635803222656, 426.7733459472656, 426.78472900390625, 486.70452880859375, ... 40107.69140625, 40167.609375, 40167.62109375, 40167.6328125, 40227.5546875, 40227.56640625, 40227.578125, 40287.49609375, 40287.50390625, 40287.515625], dtype='float32', name='range', length=2004))
- azimuthPandasIndex
PandasIndex(Index([ 0.1593017578125, 0.4779052734375, 0.7965087890625, 1.1151123046875, 1.4337158203125, 1.7523193359375, 2.0709228515625, 2.3895263671875, 2.7081298828125, 3.0267333984375, ... 356.9952392578125, 357.3138427734375, 357.6324462890625, 357.9510498046875, 358.2696533203125, 358.5882568359375, 358.9068603515625, 359.2254638671875, 359.5440673828125, 359.8626708984375], dtype='float32', name='azimuth', length=1130))
- volume_timePandasIndex
PandasIndex(DatetimeIndex(['2022-03-14 02:17:35', '2022-03-14 02:44:15', '2022-03-14 03:00:16'], dtype='datetime64[ns]', name='volume_time', freq=None))
Visualize the Dataset#
Now that we have our dataset, we can visualize it.
We need to georeference first, then plot it!
Georeference the Dataset#
[5]:
ds = ds.xradar.georeference()
ds
[5]:
<xarray.Dataset> Size: 2GB Dimensions: (volume_time: 3, azimuth: 1130, range: 2004) Coordinates: * range (range) float32 8kB 306.9 ... 4... * azimuth (azimuth) float32 5kB 0.1593 ..... * volume_time (volume_time) datetime64[ns] 24B ... time (volume_time, azimuth) datetime64[ns] 27kB ... elevation (volume_time, azimuth) float32 14kB ... latitude float64 8B 38.9 longitude float64 8B -106.9 altitude float64 8B 3.149e+03 crs_wkt int64 8B 0 x (azimuth, range, volume_time) float64 54MB ... y (azimuth, range, volume_time) float64 54MB ... z (volume_time, azimuth, range) float64 54MB ... Data variables: (12/37) DBZ (volume_time, azimuth, range) float64 54MB dask.array<chunksize=(1, 1130, 668), meta=np.ndarray> VEL (volume_time, azimuth, range) float64 54MB dask.array<chunksize=(1, 1130, 668), meta=np.ndarray> WIDTH (volume_time, azimuth, range) float64 54MB dask.array<chunksize=(1, 1130, 668), meta=np.ndarray> ZDR (volume_time, azimuth, range) float64 54MB dask.array<chunksize=(1, 1130, 668), meta=np.ndarray> PHIDP (volume_time, azimuth, range) float64 54MB dask.array<chunksize=(1, 1130, 668), meta=np.ndarray> RHOHV (volume_time, azimuth, range) float64 54MB dask.array<chunksize=(1, 1130, 668), meta=np.ndarray> ... ... snow_rate_m2009_1 (volume_time, azimuth, range) float64 54MB dask.array<chunksize=(1, 1130, 668), meta=np.ndarray> snow_rate_m2009_2 (volume_time, azimuth, range) float64 54MB dask.array<chunksize=(1, 1130, 668), meta=np.ndarray> sweep_number (volume_time) int32 12B 0 0 0 sweep_fixed_angle (volume_time) float32 12B 5.988... sweep_mode (volume_time) <U188 2kB 'azimut... nyquist_velocity (volume_time, azimuth) float64 27kB dask.array<chunksize=(1, 1130), meta=np.ndarray>
xarray.Dataset
- volume_time: 3
- azimuth: 1130
- range: 2004
- range(range)float32306.9 306.9 ... 4.029e+04 4.029e+04
- long_name :
- Range to measurement volume
- units :
- meter
- standard_name :
- projection_range_coordinate
- spacing_is_constant :
- true
- axis :
- radial_range_coordinate
- meters_to_center_of_first_gate :
- -112.6891
- meters_between_gates :
- 59.94095
array([ 306.88168, 306.89145, 306.90283, ..., 40287.496 , 40287.504 , 40287.516 ], dtype=float32)
- azimuth(azimuth)float320.1593 0.4779 ... 359.5 359.9
- long_name :
- Azimuth Angle from True North
- units :
- degree
- axis :
- radial_azimuth_coordinate
- standard_name :
- sensor_to_target_azimuth_angle
array([1.593018e-01, 4.779053e-01, 7.965088e-01, ..., 3.592255e+02, 3.595441e+02, 3.598627e+02], dtype=float32)
- volume_time(volume_time)datetime64[ns]2022-03-14T02:17:35 ... 2022-03-...
array(['2022-03-14T02:17:35.000000000', '2022-03-14T02:44:15.000000000', '2022-03-14T03:00:16.000000000'], dtype='datetime64[ns]')
- time(volume_time, azimuth)datetime64[ns]2022-03-14T02:18:06 ... 2022-03-...
- long_name :
- Time in Seconds from Volume Start
- standard_name :
- time
array([['2022-03-14T02:18:06.000000000', '2022-03-14T02:17:35.000000000', '2022-03-14T02:17:35.000000000', ..., '2022-03-14T02:18:06.000000000', '2022-03-14T02:18:06.000000000', '2022-03-14T02:18:06.000000000'], ['2022-03-14T02:44:46.000000000', '2022-03-14T02:44:15.000000000', '2022-03-14T02:44:15.000000000', ..., '2022-03-14T02:44:46.000000000', '2022-03-14T02:44:46.000000000', '2022-03-14T02:44:46.000000000'], ['2022-03-14T03:00:47.000000000', '2022-03-14T03:00:16.000000000', '2022-03-14T03:00:16.000000000', ..., '2022-03-14T03:00:46.000000000', '2022-03-14T03:00:46.000000000', '2022-03-14T03:00:46.000000000']], dtype='datetime64[ns]')
- elevation(volume_time, azimuth)float325.988 5.96 5.971 ... 5.988 5.988
- long_name :
- Elevation angle from horizontal plane
- units :
- degree
- axis :
- radial_elevation_coordinate
- standard_name :
- sensor_to_target_elevation_angle
array([[5.987549 , 5.960083 , 5.9710693, ..., 5.987549 , 5.987549 , 5.987549 ], [5.987549 , 5.965576 , 5.9765625, ..., 5.987549 , 5.987549 , 5.987549 ], [5.987549 , 5.960083 , 5.9765625, ..., 5.987549 , 5.987549 , 5.987549 ]], dtype=float32)
- latitude()float6438.9
- long_name :
- Latitude
- units :
- degree_N
- standard_name :
- latitude
- valid_min :
- -90.0
- valid_max :
- 90.0
array(38.89838028)
- longitude()float64-106.9
- long_name :
- Longitude
- units :
- degree_E
- standard_name :
- longitude
- valid_min :
- -180.0
- valid_max :
- 180.0
array(-106.94321442)
- altitude()float643.149e+03
- long_name :
- Altitude
- units :
- m
- standard_name :
- altitude
array(3149.19995117)
- crs_wkt()int640
- crs_wkt :
- PROJCRS["unknown",BASEGEOGCRS["unknown",DATUM["World Geodetic System 1984",ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ID["EPSG",6326]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8901]]],CONVERSION["unknown",METHOD["Azimuthal Equidistant",ID["EPSG",1125]],PARAMETER["Latitude of natural origin",38.898380279541,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",-106.943214416504,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["(E)",east,ORDER[1],LENGTHUNIT["metre",1,ID["EPSG",9001]]],AXIS["(N)",north,ORDER[2],LENGTHUNIT["metre",1,ID["EPSG",9001]]]]
- semi_major_axis :
- 6378137.0
- semi_minor_axis :
- 6356752.314245179
- inverse_flattening :
- 298.257223563
- reference_ellipsoid_name :
- WGS 84
- longitude_of_prime_meridian :
- 0.0
- prime_meridian_name :
- Greenwich
- geographic_crs_name :
- unknown
- horizontal_datum_name :
- World Geodetic System 1984
- projected_crs_name :
- unknown
- grid_mapping_name :
- azimuthal_equidistant
- latitude_of_projection_origin :
- 38.898380279541016
- longitude_of_projection_origin :
- -106.9432144165039
- false_easting :
- 0.0
- false_northing :
- 0.0
array(0)
- x(azimuth, range, volume_time)float640.8483 0.8483 ... -95.95 -95.95
- standard_name :
- east_west_distance_from_radar
- units :
- meters
array([[[ 0.84826192, 0.84826192, 0.84826192], [ 0.84828889, 0.84828889, 0.84828889], [ 0.84832036, 0.84832036, 0.84832036], ..., [ 111.30455318, 111.30455318, 111.30455318], [ 111.30457487, 111.30457487, 111.30457487], [ 111.30460741, 111.30460741, 111.30460741]], [[ 2.54488707, 2.54486162, 2.54488707], [ 2.54496824, 2.54494279, 2.54496824], [ 2.54506264, 2.54503719, 2.54506264], ..., [ 333.92770687, 333.92423556, 333.92770687], [ 333.92777194, 333.92430064, 333.92777194], [ 333.92786956, 333.92439825, 333.92786956]], [[ 4.24130609, 4.24126367, 4.24126367], [ 4.24144095, 4.24139853, 4.24139853], [ 4.24159828, 4.24155586, 4.24155586], ..., ... ..., [-541.15272503, -541.15272503, -541.15272503], [-541.15283048, -541.15283048, -541.15283048], [-541.15298869, -541.15298869, -541.15298869]], [[ -2.42783329, -2.42783329, -2.42783329], [ -2.42791049, -2.42791049, -2.42791049], [ -2.42800055, -2.42800055, -2.42800055], ..., [-318.56775967, -318.56775967, -318.56775967], [-318.56782175, -318.56782175, -318.56782175], [-318.56791488, -318.56791488, -318.56791488]], [[ -0.73127287, -0.73127287, -0.73127287], [ -0.73129612, -0.73129612, -0.73129612], [ -0.73132325, -0.73132325, -0.73132325], ..., [ -95.95385306, -95.95385306, -95.95385306], [ -95.95387176, -95.95387176, -95.95387176], [ -95.95389981, -95.95389981, -95.95389981]]])
- y(azimuth, range, volume_time)float64305.1 305.1 ... 4.003e+04 4.003e+04
- standard_name :
- north_south_distance_from_radar
- units :
- meters
array([[[ 305.09205897, 305.09205897, 305.09205897], [ 305.10175985, 305.10175985, 305.10175985], [ 305.11307755, 305.11307755, 305.11307755], ..., [40032.60605323, 40032.60605323, 40032.60605323], [40032.61385417, 40032.61385417, 40032.61385417], [40032.62555789, 40032.62555789, 40032.62555789]], [[ 305.09790927, 305.09485772, 305.09790927], [ 305.10764036, 305.1045888 , 305.10764036], [ 305.11895771, 305.11590615, 305.11895771], ..., [40033.4640701 , 40033.04790605, 40033.4640701 ], [40033.47187081, 40033.05570906, 40033.47187081], [40033.4835742 , 40033.06741014, 40033.4835742 ]], [[ 305.07294777, 305.0698964 , 305.0698964 ], [ 305.08264775, 305.07959638, 305.07959638], [ 305.0939644 , 305.09091303, 305.09091303], ..., ... ..., [40029.1032019 , 40029.1032019 , 40029.1032019 ], [40029.11100216, 40029.11100216, 40029.11100216], [40029.12270486, 40029.12270486, 40029.12270486]], [[ 305.08358477, 305.08358477, 305.08358477], [ 305.09328539, 305.09328539, 305.09328539], [ 305.10460277, 305.10460277, 305.10460277], ..., [40031.49411268, 40031.49411268, 40031.49411268], [40031.50191341, 40031.50191341, 40031.50191341], [40031.51361681, 40031.51361681, 40031.51361681]], [[ 305.09236812, 305.09236812, 305.09236812], [ 305.10206901, 305.10206901, 305.10206901], [ 305.11338672, 305.11338672, 305.11338672], ..., [40032.64661758, 40032.64661758, 40032.64661758], [40032.65441853, 40032.65441853, 40032.65441853], [40032.66612227, 40032.66612227, 40032.66612227]]])
- z(volume_time, azimuth, range)float643.181e+03 3.181e+03 ... 7.446e+03
- standard_name :
- height_above_ground
- units :
- meters
array([[[3181.21698023, 3181.2179991 , 3181.21918588, ..., 7446.11502369, 7446.1160374 , 7446.11706618], [3181.07066807, 3181.07168122, 3181.07286418, ..., 7426.91670371, 7426.91771743, 7426.9187462 ], [3181.12919293, 3181.1302099 , 3181.13139477, ..., 7434.59642734, 7434.59695302, 7434.59846982], ..., [3181.21698023, 3181.2179991 , 3181.21918588, ..., 7446.11502369, 7446.1160374 , 7446.11706618], [3181.21698023, 3181.2179991 , 3181.21918588, ..., 7446.11502369, 7446.1160374 , 7446.11706618], [3181.21698023, 3181.2179991 , 3181.21918588, ..., 7446.11502369, 7446.1160374 , 7446.11706618]], [[3181.21698023, 3181.2179991 , 3181.21918588, ..., 7446.11502369, 7446.1160374 , 7446.11706618], [3181.09992859, 3181.10094556, 3181.10212852, ..., 7430.75656639, 7430.75709207, 7430.75860888], [3181.15845537, 3181.15947233, 3181.1606572 , ..., 7438.43579851, 7438.43681222, 7438.437841 ], ... [3181.21698023, 3181.2179991 , 3181.21918588, ..., 7446.11502369, 7446.1160374 , 7446.11706618], [3181.21698023, 3181.2179991 , 3181.21918588, ..., 7446.11502369, 7446.1160374 , 7446.11706618], [3181.21698023, 3181.2179991 , 3181.21918588, ..., 7446.11502369, 7446.1160374 , 7446.11706618]], [[3181.21698023, 3181.2179991 , 3181.21918588, ..., 7446.11502369, 7446.1160374 , 7446.11706618], [3181.07066807, 3181.07168122, 3181.07286418, ..., 7426.91670371, 7426.91771743, 7426.9187462 ], [3181.15845537, 3181.15947233, 3181.1606572 , ..., 7438.43579851, 7438.43681222, 7438.437841 ], ..., [3181.21698023, 3181.2179991 , 3181.21918588, ..., 7446.11502369, 7446.1160374 , 7446.11706618], [3181.21698023, 3181.2179991 , 3181.21918588, ..., 7446.11502369, 7446.1160374 , 7446.11706618], [3181.21698023, 3181.2179991 , 3181.21918588, ..., 7446.11502369, 7446.1160374 , 7446.11706618]]])
- DBZ(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Equaivalent_radar_reflectiivity_factor
- units :
- dBZ
- standard_name :
- equivalent_reflectivity_factor
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - VEL(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Radial Doppler Velocity, Positive for Motion Away from Instrument
- units :
- m/s
- standard_name :
- radial_velocity_of_scatterers_away_from_instruments
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - WIDTH(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Spectral Width
- units :
- m/s
- standard_name :
- doppler_spectrum_width
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - ZDR(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Differential Reflectivity
- units :
- dB
- standard_name :
- log_differential_reflectivity_hv
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - PHIDP(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Differential Phase
- units :
- degree
- standard_name :
- differential_phase_hv
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - RHOHV(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Cross-Polar Correlation Ratio
- units :
- 1
- standard_name :
- cross_correlation_ratio_hv
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - NCP(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Normalized Coherent Power, also known as SQI
- units :
- 1
- standard_name :
- normalized_coherent_power
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - DBZhv(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Equivalent Reflectivity Factor HV
- units :
- dBZ
- standard_name :
- equivalent_reflectivity_factor_hv
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - cbb_flag(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Cumulative Beam Block Fraction Flag
- units :
- 1
- comment :
- Cumulative beam block flag due to terrain.
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - sounding_temperature(volume_time, azimuth, range)float32dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Interpolated profile
- units :
- degC
- standard_name :
- interpolated_profile
Array Chunk Bytes 25.92 MiB 2.88 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float32 numpy.ndarray - height(volume_time, azimuth, range)float32dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Height of radar beam
- units :
- m
- standard_name :
- height
Array Chunk Bytes 25.92 MiB 2.88 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float32 numpy.ndarray - signal_to_noise_ratio(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Signal to Noise Ratio
- units :
- dB
- standard_name :
- signal_to_noise_ratio
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - velocity_texture(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Mean dopper velocity
- units :
- m/s
- standard_name :
- radial_velocity_of_scatterers_away_from_instrument
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - gate_id(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Classification of dominant scatterer
- units :
- 1
- notes :
- 0:multi_trip,1:rain,2:snow,3:no_scatter,4:melting,5:clutter,6:terrain_blockage
- valid_max :
- 6
- valid_min :
- 0
- flag_values :
- 0, 1, 2, 3, 4, 5, 6
- flag_meanings :
- multi_trip rain snow no_scatter melting clutter terrain_blockage
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 62 graph layers Data type float64 numpy.ndarray - simulated_velocity(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Simulated mean doppler velocity
- units :
- m/s
- standard_name :
- radial_velocity_of_scatterers_away_from_instrument
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - corrected_velocity(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Corrected mean doppler velocity
- units :
- m/s
- standard_name :
- corrected_radial_velocity_of_scatterers_away_from_instrument
- valid_min :
- -79.5
- valid_max :
- 79.5
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - unfolded_differential_phase(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Unfolded differential propagation phase shift
- units :
- degree
- standard_name :
- differential_phase_hv
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - corrected_differential_phase(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Corrected differential propagation phase shift
- units :
- degree
- standard_name :
- differential_phase_hv
- valid_min :
- 0.0
- valid_max :
- 400.0
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - filtered_corrected_differential_phase(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Filtered Corrected Differential Phase
- units :
- degree
- standard_name :
- differential_phase_hv
- valid_min :
- 0.0
- valid_max :
- 400.0
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - corrected_specific_diff_phase(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Specific differential phase (KDP)
- units :
- degrees/km
- standard_name :
- specific_differential_phase_hv
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - filtered_corrected_specific_diff_phase(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Filtered Corrected Specific differential phase (KDP)
- units :
- degrees/km
- standard_name :
- specific_differential_phase_hv
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - corrected_differential_reflectivity(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Corrected differential reflectivity
- units :
- dB
- standard_name :
- corrected_log_differential_reflectivity_hv
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - corrected_reflectivity(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Corrected reflectivity
- units :
- dBZ
- standard_name :
- corrected_equivalent_reflectivity_factor
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - height_over_iso0(volume_time, azimuth, range)float32dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Height of radar beam over freezing level
- units :
- m
- standard_name :
- height
Array Chunk Bytes 25.92 MiB 2.88 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float32 numpy.ndarray - specific_attenuation(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Specific attenuation
- units :
- dB/km
- standard_name :
- specific_attenuation
- valid_min :
- 0.0
- valid_max :
- 1.0
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - path_integrated_attenuation(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Path Integrated Attenuation
- units :
- dB
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - specific_differential_attenuation(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Specific Differential Attenuation
- units :
- dB/km
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - path_integrated_differential_attenuation(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Path Integrated Differential Attenuation
- units :
- dB
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - rain_rate_A(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Rainfall Rate from Specific Attenuation
- units :
- mm/hr
- standard_name :
- rainfall_rate
- comment :
- Rain rate calculated from specific_attenuation, R=43.5*specific_attenuation**0.79, note R=0.0 where norm coherent power < 0.4 or rhohv < 0.8
- valid_min :
- 0.0
- valid_max :
- 400.0
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - snow_rate_ws2012(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Snowfall rate from Z using Wolf and Snider (2012)
- units :
- mm/h
- standard_name :
- snowfall_rate
- valid_min :
- 0
- valid_max :
- 500
- swe_ratio :
- 13.699
- A :
- 110
- B :
- 2
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - snow_rate_ws88diw(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Snowfall rate from Z using WSR 88D High Plains
- units :
- mm/h
- standard_name :
- snowfall_rate
- valid_min :
- 0
- valid_max :
- 500
- swe_ratio :
- 13.699
- A :
- 40
- B :
- 2
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - snow_rate_m2009_1(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Snowfall rate from Z using Matrosov et al.(2009) Braham(1990) 1
- units :
- mm/h
- standard_name :
- snowfall_rate
- valid_min :
- 0
- valid_max :
- 500
- swe_ratio :
- 13.699
- A :
- 67
- B :
- 1.28
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - snow_rate_m2009_2(volume_time, azimuth, range)float64dask.array<chunksize=(1, 1130, 668), meta=np.ndarray>
- long_name :
- Snowfall rate from Z using Matrosov et al.(2009) Braham(1990) 2
- units :
- mm/h
- standard_name :
- snowfall_rate
- valid_min :
- 0
- valid_max :
- 500
- swe_ratio :
- 13.699
- A :
- 114
- B :
- 1.39
Array Chunk Bytes 51.83 MiB 5.76 MiB Shape (3, 1130, 2004) (1, 1130, 668) Dask graph 9 chunks in 59 graph layers Data type float64 numpy.ndarray - sweep_number(volume_time)int320 0 0
- long_name :
- Sweep index number 0 based
- units :
- 1
array([0, 0, 0], dtype=int32)
- sweep_fixed_angle(volume_time)float325.988 5.988 5.988
- long_name :
- Ray Target Fixed Angle
- units :
- degree
array([5.987549, 5.987549, 5.987549], dtype=float32)
- sweep_mode(volume_time)<U188'azimuth_surveillance\x00\x00\x0...
array(['azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance', 'azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance', 'azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance\x00\x00\x00\x00azimuth_surveillance'], dtype='<U188')
- nyquist_velocity(volume_time, azimuth)float64dask.array<chunksize=(1, 1130), meta=np.ndarray>
- long_name :
- Nyquist velocity
- units :
- m/s
- standard_name :
- nyquist_velocity
Array Chunk Bytes 26.48 kiB 8.83 kiB Shape (3, 1130) (1, 1130) Dask graph 3 chunks in 31 graph layers Data type float64 numpy.ndarray
- rangePandasIndex
PandasIndex(Index([ 306.8816833496094, 306.8914489746094, 306.90283203125, 366.8226318359375, 366.8323974609375, 366.8437805175781, 426.7635803222656, 426.7733459472656, 426.78472900390625, 486.70452880859375, ... 40107.69140625, 40167.609375, 40167.62109375, 40167.6328125, 40227.5546875, 40227.56640625, 40227.578125, 40287.49609375, 40287.50390625, 40287.515625], dtype='float32', name='range', length=2004))
- azimuthPandasIndex
PandasIndex(Index([ 0.1593017578125, 0.4779052734375, 0.7965087890625, 1.1151123046875, 1.4337158203125, 1.7523193359375, 2.0709228515625, 2.3895263671875, 2.7081298828125, 3.0267333984375, ... 356.9952392578125, 357.3138427734375, 357.6324462890625, 357.9510498046875, 358.2696533203125, 358.5882568359375, 358.9068603515625, 359.2254638671875, 359.5440673828125, 359.8626708984375], dtype='float32', name='azimuth', length=1130))
- volume_timePandasIndex
PandasIndex(DatetimeIndex(['2022-03-14 02:17:35', '2022-03-14 02:44:15', '2022-03-14 03:00:16'], dtype='datetime64[ns]', name='volume_time', freq=None))
Extract the geoaxis information#
[6]:
proj_crs = xd.georeference.get_crs(ds)
cart_crs = ccrs.Projection(proj_crs)
Use the FacetGrid to visualize#
[7]:
# Create our facets grid
fg = ds.DBZ.plot.pcolormesh(
x="x",
y="y",
vmin=-20,
vmax=40,
cmap="ChaseSpectral",
col="volume_time",
edgecolors="face",
figsize=(14, 4),
transform=cart_crs,
subplot_kws={"projection": ccrs.PlateCarree()},
)
# Set the title
fg.set_titles("{value}")
# Fix the geo-axes labels
first_axis = True
for ax in fg.axes.flat:
ax.coastlines()
gl = ax.gridlines(
crs=ccrs.PlateCarree(),
draw_labels=True,
linewidth=1,
color="gray",
alpha=0.3,
linestyle="--",
)
plt.gca().xaxis.set_major_locator(plt.NullLocator())
gl.top_labels = False
gl.right_labels = False
if first_axis:
gl.left_labels = True
else:
gl.left_labels = False
first_axis = False
[ ]: