ZPHI-Method#
Testud, J., Le Bouar, E., Obligis, E., & Ali-Mehenni, M. (2000). The Rain Profiling Algorithm Applied to Polarimetric Weather Radar, Journal of Atmospheric and Oceanic Technology, 17(3), 332-356. Retrieved Nov 24, 2021, from https://doi.org/10.1175/1520-0426(2000)017<0332:TRPAAT>2.0.CO;2
Ryzhkov, A., M. Diederich, P. Zhang, and C. Simmer, 2014: Potential Utilization of Specific Attenuation for Rainfall Estimation, Mitigation of Partial Beam Blockage, and Radar Networking. J. Atmos. Oceanic Technol., 31, 599–619, https://doi.org/10.1175/JTECH-D-13-00038.1.
Diederich, M., Ryzhkov, A., Simmer, C., Zhang, P., & Trömel, S. (2015). Use of Specific Attenuation for Rainfall Measurement at X-Band Radar Wavelengths.: Part I: Radar Calibration and Partial Beam Blockage Estimation. Journal of Hydrometeorology, 16(2), 487–502. https://www.jstor.org/stable/24914953
import matplotlib.pyplot as plt
import numpy as np
import xarray as xr
import radarpolarimetry as rp
Load Data#
stage = "05_delta_phi"
dtime = "20170810T1100"
fname = rp.data_path() / "lecture" / f"{stage}_{dtime}.zarr"
swp = xr.open_dataset(fname, chunks={})
display(swp)
<xarray.Dataset> Size: 71MB
Dimensions: (azimuth: 360, range: 750)
Coordinates: (12/16)
* azimuth (azimuth) float64 3kB 0.5 1.5 2.5 ... 357.5 358.5 359.5
elevation (azimuth) float64 3kB dask.array<chunksize=(360,), meta=np.ndarray>
time (azimuth) datetime64[ns] 3kB dask.array<chunksize=(360,), meta=np.ndarray>
* range (range) float32 3kB 100.0 300.0 ... 1.497e+05 1.499e+05
bins (azimuth, range) float32 1MB dask.array<chunksize=(180, 375), meta=np.ndarray>
gr (azimuth, range) float64 2MB dask.array<chunksize=(90, 375), meta=np.ndarray>
... ...
altitude float64 8B ...
crs_wkt int64 8B ...
latitude float64 8B ...
longitude float64 8B ...
NOISE_LEVEL float64 8B ...
sweep_mode <U20 80B ...
Data variables: (12/46)
CMAP (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
CMAP2 (azimuth, range) uint8 270kB dask.array<chunksize=(180, 750), meta=np.ndarray>
DBTH (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
DBTV (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
DBZH (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
DBZV (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
... ...
SYSPHI4 (azimuth) float64 3kB dask.array<chunksize=(360,), meta=np.ndarray>
VRADH (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
VRADV (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
WRADH (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
WRADV (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
ZDR (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
Attributes:
source: gamic
ant_gain_h: 44.0
ant_gain_v: 44.0
noise_power_h: -1.39495
noise_power_v: -1.09706
rx_loss_h: 0.73
rx_loss_v: 0.73- azimuth: 360
- range: 750
- azimuth(azimuth)float640.5 1.5 2.5 ... 357.5 358.5 359.5
- standard_name :
- ray_azimuth_angle
- long_name :
- azimuth_angle_from_true_north
- units :
- degrees
- axis :
- radial_azimuth_coordinate
array([ 0.5, 1.5, 2.5, ..., 357.5, 358.5, 359.5], shape=(360,))
- elevation(azimuth)float64dask.array<chunksize=(360,), meta=np.ndarray>
- standard_name :
- ray_elevation_angle
- long_name :
- elevation_angle_from_horizontal_plane
- units :
- degrees
- axis :
- radial_elevation_coordinate
Array Chunk Bytes 2.81 kiB 2.81 kiB Shape (360,) (360,) Dask graph 1 chunks in 2 graph layers Data type float64 numpy.ndarray - time(azimuth)datetime64[ns]dask.array<chunksize=(360,), meta=np.ndarray>
- standard_name :
- time
Array Chunk Bytes 2.81 kiB 2.81 kiB Shape (360,) (360,) Dask graph 1 chunks in 2 graph layers Data type datetime64[ns] numpy.ndarray - range(range)float32100.0 300.0 ... 1.497e+05 1.499e+05
- units :
- meters
- standard_name :
- projection_range_coordinate
- long_name :
- range_to_measurement_volume
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
array([1.000e+02, 3.000e+02, 5.000e+02, ..., 1.495e+05, 1.497e+05, 1.499e+05], shape=(750,), dtype=float32) - bins(azimuth, range)float32dask.array<chunksize=(180, 375), meta=np.ndarray>
- units :
- meters
- standard_name :
- projection_range_coordinate
- long_name :
- range_to_measurement_volume
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
Array Chunk Bytes 1.03 MiB 263.67 kiB Shape (360, 750) (180, 375) Dask graph 4 chunks in 2 graph layers Data type float32 numpy.ndarray - gr(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- distance_from_radar
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - rays(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- ray_azimuth_angle
- long_name :
- azimuth_angle_from_true_north
- units :
- degrees
- axis :
- radial_azimuth_coordinate
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - x(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- axis :
- X
- long_name :
- Easting
- standard_name :
- projection_x_coordinate
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - y(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- axis :
- Y
- long_name :
- Northing
- standard_name :
- projection_y_coordinate
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - z(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- height_above_ground
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - altitude()float64...
- long_name :
- altitude
- units :
- meters
- standard_name :
- altitude
[1 values with dtype=float64]
- crs_wkt()int64...
- crs_wkt :
- PROJCRS["AEQD centered at 50.73052N 7.071663E",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",50.73052,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",7.071663,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 :
- AEQD centered at 50.73052N 7.071663E
- grid_mapping_name :
- azimuthal_equidistant
- latitude_of_projection_origin :
- 50.73052
- longitude_of_projection_origin :
- 7.071663
- false_easting :
- 0.0
- false_northing :
- 0.0
[1 values with dtype=int64]
- latitude()float64...
- long_name :
- latitude
- units :
- degrees_north
- positive :
- up
- standard_name :
- latitude
[1 values with dtype=float64]
- longitude()float64...
- long_name :
- longitude
- units :
- degrees_east
- standard_name :
- longitude
[1 values with dtype=float64]
- NOISE_LEVEL()float64...
[1 values with dtype=float64]
- sweep_mode()<U20...
[1 values with dtype=<U20]
- CMAP(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- units :
- unitless
- long_name :
- Clutter Map
- standard_name :
- clutter_map
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - CMAP2(azimuth, range)uint8dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- unitless
- long_name :
- Clutter Map
- standard_name :
- clutter_map
- _Undetect :
- 0.0
- short_name :
- CMAP
Array Chunk Bytes 263.67 kiB 131.84 kiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type uint8 numpy.ndarray - DBTH(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- dBZ
- long_name :
- Total power H (uncorrected reflectivity)
- standard_name :
- radar_equivalent_reflectivity_factor_h
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - DBTV(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- dBZ
- long_name :
- Total power V (uncorrected reflectivity)
- standard_name :
- radar_equivalent_reflectivity_factor_v
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - DBZH(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- dBZ
- long_name :
- Equivalent reflectivity factor H
- standard_name :
- radar_equivalent_reflectivity_factor_h
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - DBZV(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- dBZ
- long_name :
- Equivalent reflectivity factor V
- standard_name :
- radar_equivalent_reflectivity_factor_v
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - dphi(azimuth)float64dask.array<chunksize=(180,), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.81 kiB 1.41 kiB Shape (360,) (180,) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - first(azimuth)float64dask.array<chunksize=(180,), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.81 kiB 1.41 kiB Shape (360,) (180,) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - first_idx(azimuth)int64dask.array<chunksize=(180,), meta=np.ndarray>
Array Chunk Bytes 2.81 kiB 1.41 kiB Shape (360,) (180,) Dask graph 2 chunks in 2 graph layers Data type int64 numpy.ndarray - follow_mode()<U7...
[1 values with dtype=<U7]
- KDP(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- deg/km
- units :
- degrees per kilometer
- long_name :
- Specific differential phase HV
- standard_name :
- radar_specific_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - KDP_LANC(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- radar_specific_differential_phase_hv
- long_name :
- Specific differential phase HV
- short_name :
- KDP
- units :
- degrees per kilometer
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - KDP_VULP(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- radar_specific_differential_phase_hv
- long_name :
- Specific differential phase HV
- short_name :
- KDP
- units :
- degrees per kilometer
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - last(azimuth)float64dask.array<chunksize=(180,), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.81 kiB 1.41 kiB Shape (360,) (180,) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - last_idx(azimuth)int64dask.array<chunksize=(180,), meta=np.ndarray>
Array Chunk Bytes 2.81 kiB 1.41 kiB Shape (360,) (180,) Dask graph 2 chunks in 2 graph layers Data type int64 numpy.ndarray - nyquist_velocity()float64...
- standard_name :
- nyquist_velocity
- units :
- m s-1
[1 values with dtype=float64]
- offset()float32...
[1 values with dtype=float32]
- offset_idx()int64...
[1 values with dtype=int64]
- phib(azimuth, range)float64dask.array<chunksize=(180, 741), meta=np.ndarray>
Array Chunk Bytes 2.06 MiB 1.02 MiB Shape (360, 750) (180, 741) Dask graph 4 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_CORR1(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_CORR2(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_CORR3(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_CORR4(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_OC1(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_OC2(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_OC3(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_OC4(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - prt_mode()<U7...
[1 values with dtype=<U7]
- RHOHV(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- units :
- unitless
- long_name :
- Correlation coefficient HV
- standard_name :
- radar_correlation_coefficient_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - RHOHV_NC(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- units :
- unitless
- _Undetect :
- 0.0
- unit :
- dBZ
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
- short_name :
- SNRH
- long_name :
- Correlation coefficient HV
- standard_name :
- radar_correlation_coefficient_hv
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - RSUM(azimuth, range)float64dask.array<chunksize=(360, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- dBZ
- long_name :
- Total power H (uncorrected reflectivity)
- standard_name :
- radar_equivalent_reflectivity_factor_h
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 2.06 MiB Shape (360, 750) (360, 750) Dask graph 1 chunks in 2 graph layers Data type float64 numpy.ndarray - SNRH(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- _Undetect :
- 0.0
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
- units :
- unitless
- standard_name :
- signal_noise_ratio_h
- long_name :
- Signal Noise Ratio H
- short_name :
- SNRH
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - start_range(azimuth)float32dask.array<chunksize=(360,), meta=np.ndarray>
Array Chunk Bytes 1.41 kiB 1.41 kiB Shape (360,) (360,) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - stop_range(azimuth)float32dask.array<chunksize=(360,), meta=np.ndarray>
Array Chunk Bytes 1.41 kiB 1.41 kiB Shape (360,) (360,) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - sweep_fixed_angle()float64...
[1 values with dtype=float64]
- sweep_number()int64...
[1 values with dtype=int64]
- SYSPHI1()float64...
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
[1 values with dtype=float64]
- SYSPHI2()float64...
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
[1 values with dtype=float64]
- SYSPHI3()float64...
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
[1 values with dtype=float64]
- SYSPHI4(azimuth)float64dask.array<chunksize=(360,), meta=np.ndarray>
Array Chunk Bytes 2.81 kiB 2.81 kiB Shape (360,) (360,) Dask graph 1 chunks in 2 graph layers Data type float64 numpy.ndarray - VRADH(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- m/s
- units :
- meters per seconds
- long_name :
- Radial velocity of scatterers away from instrument H
- standard_name :
- radial_velocity_of_scatterers_away_from_instrument_h
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - VRADV(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- m/s
- units :
- meters per second
- long_name :
- Radial velocity of scatterers away from instrument V
- standard_name :
- radial_velocity_of_scatterers_away_from_instrument_v
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - WRADH(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- m/s
- units :
- meters per seconds
- long_name :
- Doppler spectrum width H
- standard_name :
- radar_doppler_spectrum_width_h
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - WRADV(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- m/s
- units :
- meters per second
- long_name :
- Doppler spectrum width V
- standard_name :
- radar_doppler_spectrum_width_v
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - ZDR(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dB
- units :
- dB
- long_name :
- Log differential reflectivity H/V
- standard_name :
- radar_differential_reflectivity_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray
- source :
- gamic
- ant_gain_h :
- 44.0
- ant_gain_v :
- 44.0
- noise_power_h :
- -1.39495
- noise_power_v :
- -1.09706
- rx_loss_h :
- 0.73
- rx_loss_v :
- 0.73
Plot Overview#
fig = plt.figure(figsize=(14, 6))
ax1 = fig.add_subplot(121)
im1 = rp.plot_moment(swp.PHIDP_CORR1, ax=ax1)
t = plt.title(r"Corrected $\phi_{DP}$")
t.set_y(1.1)
ax2 = fig.add_subplot(122)
im2 = rp.plot_moment(swp.DBZH, ax=ax2)
t = plt.title(r"Corrected $Z_{H}$")
t.set_y(1.1)
fig.suptitle(swp.time.min().values.astype("<M8[s]"), fontsize=14)
fig.tight_layout()
Formulas ZPHI-Method#
see Testud et.al. (chapter 4. p. 339ff.), Ryzhkov et.al. (chapter 3. p. 601 ff) and Diederich et.al. (chapter 3. p. 492 ff).
There is an equational difference between the first and the other two papers, which can be solved like this:
\(\begin{equation} f\Delta\phi_{DP} = 10^{0.1 \cdot b \cdot \alpha \cdot \Delta\phi_{DP}} - 1 \tag{1} \end{equation}\)
\(\begin{equation} C(b, PIA) = \exp[{0.23 \cdot b \cdot (PIA)}] - 1 \tag{2} \end{equation}\)
with
\(\begin{equation} PIA = \alpha \cdot \Delta\phi_{DP} \tag{3} \end{equation}\)
\(\begin{equation} C(b, PIA) = \exp[{0.23 \cdot b \cdot \alpha \cdot \Delta\phi_{DP}}] - 1 \tag{4} \end{equation}\)
Both expressions are used equivalently:
\(\begin{equation} 10^{0.1 \cdot b \cdot \alpha \cdot \Delta\phi_{DP}} - 1 = \exp[{0.23 \cdot b \cdot \alpha \cdot \Delta\phi_{DP}}] - 1 \tag{5} \end{equation}\)
Using logarithmic identities:
\(\begin{equation} \ln {u^r} = r \cdot \ln {u} \tag{6a} \end{equation}\)
\(\begin{equation} \exp {\ln x} = x \tag{6b} \end{equation}\)
the left hand side can be further expressed as:
\(\begin{equation} \exp [\ln {10^{0.1 \cdot b \cdot \alpha \cdot \Delta\phi_{DP}}}] - 1 = \exp[{0.23 \cdot b \cdot \alpha \cdot \Delta\phi_{DP}}] - 1 \tag{7a} \end{equation}\)
\(\begin{equation} \exp[0.1 \cdot b \cdot \alpha \cdot \Delta\phi_{DP} \cdot \ln {10}] - 1 = \exp[{0.23 \cdot b \cdot \alpha \cdot \Delta\phi_{DP}}] - 1 \tag{7b} \end{equation}\)
leading to equality
\(\begin{equation} \exp[0.23 \cdot b \cdot \alpha \cdot \Delta\phi_{DP}] - 1 = \exp[{0.23 \cdot b \cdot \alpha \cdot \Delta\phi_{DP}}] - 1 \tag{7c} \end{equation}\)
We are using the following equations derived from the above papers:
\(\begin{equation} \Delta \phi_{DP} = \phi_{DP}(r2) - \phi_{DP} (r1) \tag{1} \end{equation}\)
\(\begin{equation} f\Delta\phi_{DP} = 10^{0.1 \cdot b \cdot \alpha \cdot \Delta\phi_{DP}} - 1 \tag{2} \end{equation}\)
\(\begin{equation} A_{H}(r) = \frac{\left [Z_a(r) \right ]^b \cdot f(\Delta \phi_{DP})}{0.46b \int_{r1}^{r2} \left [Z_a(s) \right ]^b ds + f(\Delta \phi_{DP}) \cdot 0.46b \int_{r}^{r2} \left [Z_a(s) \right ]^b ds} \tag{3} \end{equation}\)
\(\begin{equation} \phi_{DP}^{cal}(r_i, \alpha) = 2 \cdot \int_{r1}^{r2} \frac{A_H(s; \alpha)}{\alpha}ds \tag{4} \end{equation}\)
\(\begin{equation} \Delta = \sum_{i=1}^{N} \left|{\phi_{DP}^{cal}(r_i, \alpha, b)- \phi_{DP}^{m}(r_i)}\right| \tag{5} \end{equation}\)
\(\begin{equation} A_{H} = \beta Z_{H}^{b} \tag{6} \end{equation}\)
\(\begin{equation} A_{H} = \alpha K_{DP} \tag{7} \end{equation}\)
Retrieving \(\Delta \phi_{DP}\)#
See Delta PhiDP Notebook.
Todo: Use cphase from delta phi notebook, so we do not recalculate here.
CMAP = swp.CMAP.astype("uint16")
noise = ((CMAP >> 0) & 0x1).astype(bool)
clutter = ((CMAP >> 2) & 0x1).astype(bool)
masked = noise | clutter
valid = ~masked
phi = swp.PHIDP.where((swp.CMAP2 == 0) & valid & (swp.RHOHV > 0.9))
rng = 2000.0
cphase = rp.phase_zphi(phi, rng=rng)
dphi = cphase.dphi.where(cphase.dphi >= 0, 1e-4)
\(\Delta \phi_{DP}\) - Linear Plots#
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(16, 8))
cphase.first.plot(label="first", ax=ax1)
cphase.last.plot(label="last", ax=ax1)
ax1.grid()
ax1.legend()
dphi.plot(ls="-", marker=".", label="delta", ax=ax2)
ax2.grid()
ax2.legend()
plt.tight_layout()
\(\Delta \phi_{DP}\) - Polar Plots#
This visualizes first and last indizes including \(\Delta \phi_{DP}\).
fig = plt.figure(figsize=(20, 14))
ax1 = plt.subplot(231, projection="polar")
ax2 = plt.subplot(232, projection="polar")
ax3 = plt.subplot(233, projection="polar")
# set the lable go clockwise and start from the top
ax1.set_theta_zero_location("N")
ax2.set_theta_zero_location("N")
ax3.set_theta_zero_location("N")
# clockwise
ax1.set_theta_direction(-1)
ax2.set_theta_direction(-1)
ax3.set_theta_direction(-1)
theta = np.linspace(0, 2 * np.pi, num=360, endpoint=False)
ax1.plot(theta, cphase.first_idx, color="b", linewidth=3)
_ = ax1.set_title("Delta PHIDP - First Index")
ax2.plot(theta, cphase.last_idx, color="r", linewidth=3)
_ = ax2.set_title("Delta PHIDP - Last Index")
ax3.plot(theta, dphi, color="g", linewidth=3)
_ = ax3.set_title("Delta PHIDP")
Calculating \(f\Delta\phi_{DP}\)#
alphax = np.arange(0.1, 0.35, 0.01)
alphax = xr.DataArray(alphax, coords={"alpha": alphax}, dims="alpha")
betax = 0.05
bx = 0.78
# need to expand alphax to dphi-shape
fdphi = 10 ** (0.1 * bx * alphax * dphi) - 1
display(fdphi)
<xarray.DataArray (alpha: 25, azimuth: 360)> Size: 72kB
dask.array<sub, shape=(25, 360), dtype=float64, chunksize=(25, 180), chunktype=numpy.ndarray>
Coordinates:
* alpha (alpha) float64 200B 0.1 0.11 0.12 0.13 ... 0.31 0.32 0.33 0.34
* azimuth (azimuth) float64 3kB 0.5 1.5 2.5 3.5 ... 357.5 358.5 359.5
elevation (azimuth) float64 3kB 0.9998 0.9998 0.9998 ... 0.9998 0.9998
time (azimuth) datetime64[ns] 3kB 2017-08-10T11:03:42.699000 ... ...
altitude float64 8B 99.5
crs_wkt int64 8B 0
latitude float64 8B 50.73
longitude float64 8B 7.072
NOISE_LEVEL float64 8B -24.7
sweep_mode <U20 80B 'azimuth_surveillance'
Attributes:
format: UV16
is_dft: 0
unit: deg
units: degrees
long_name: Differential phase HV
standard_name: radar_differential_phase_hv
_Undetect: 0.0- alpha: 25
- azimuth: 360
- dask.array<chunksize=(25, 180), meta=np.ndarray>
Array Chunk Bytes 70.31 kiB 35.16 kiB Shape (25, 360) (25, 180) Dask graph 2 chunks in 38 graph layers Data type float64 numpy.ndarray - alpha(alpha)float640.1 0.11 0.12 ... 0.32 0.33 0.34
array([0.1 , 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2 , 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3 , 0.31, 0.32, 0.33, 0.34]) - azimuth(azimuth)float640.5 1.5 2.5 ... 357.5 358.5 359.5
array([ 0.5, 1.5, 2.5, ..., 357.5, 358.5, 359.5], shape=(360,))
- elevation(azimuth)float640.9998 0.9998 ... 0.9998 0.9998
array([0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, ... 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586]) - time(azimuth)datetime64[ns]2017-08-10T11:03:42.699000 ... 2...
array(['2017-08-10T11:03:42.699000000', '2017-08-10T11:03:42.800000000', '2017-08-10T11:03:42.902000000', '2017-08-10T11:03:43.001000000', '2017-08-10T11:03:43.102000000', '2017-08-10T11:03:43.202000000', '2017-08-10T11:03:43.302000000', '2017-08-10T11:03:43.402000000', '2017-08-10T11:03:43.504000000', '2017-08-10T11:03:43.603000000', '2017-08-10T11:03:43.705000000', '2017-08-10T11:03:43.803000000', '2017-08-10T11:03:43.905000000', '2017-08-10T11:03:44.008000000', '2017-08-10T11:03:44.108000000', '2017-08-10T11:03:44.208000000', '2017-08-10T11:03:44.308000000', '2017-08-10T11:03:44.408000000', '2017-08-10T11:03:44.510000000', '2017-08-10T11:03:44.608000000', '2017-08-10T11:03:44.710000000', '2017-08-10T11:03:44.809000000', '2017-08-10T11:03:44.910000000', '2017-08-10T11:03:45.010000000', '2017-08-10T11:03:45.110000000', '2017-08-10T11:03:45.210000000', '2017-08-10T11:03:45.314000000', '2017-08-10T11:03:45.414000000', '2017-08-10T11:03:45.514000000', '2017-08-10T11:03:45.614000000', '2017-08-10T11:03:45.716000000', '2017-08-10T11:03:45.814000000', '2017-08-10T11:03:45.916000000', '2017-08-10T11:03:46.016000000', '2017-08-10T11:03:46.116000000', '2017-08-10T11:03:46.216000000', '2017-08-10T11:03:46.318000000', '2017-08-10T11:03:46.416000000', '2017-08-10T11:03:46.518000000', '2017-08-10T11:03:46.617000000', ... '2017-08-10T11:03:38.879000000', '2017-08-10T11:03:38.982000000', '2017-08-10T11:03:39.082000000', '2017-08-10T11:03:39.182000000', '2017-08-10T11:03:39.282000000', '2017-08-10T11:03:39.382000000', '2017-08-10T11:03:39.484000000', '2017-08-10T11:03:39.584000000', '2017-08-10T11:03:39.684000000', '2017-08-10T11:03:39.784000000', '2017-08-10T11:03:39.884000000', '2017-08-10T11:03:39.984000000', '2017-08-10T11:03:40.086000000', '2017-08-10T11:03:40.184000000', '2017-08-10T11:03:40.288000000', '2017-08-10T11:03:40.388000000', '2017-08-10T11:03:40.490000000', '2017-08-10T11:03:40.590000000', '2017-08-10T11:03:40.690000000', '2017-08-10T11:03:40.790000000', '2017-08-10T11:03:40.890000000', '2017-08-10T11:03:40.990000000', '2017-08-10T11:03:41.091000000', '2017-08-10T11:03:41.191000000', '2017-08-10T11:03:41.291000000', '2017-08-10T11:03:41.391000000', '2017-08-10T11:03:41.491000000', '2017-08-10T11:03:41.591000000', '2017-08-10T11:03:41.695000000', '2017-08-10T11:03:41.795000000', '2017-08-10T11:03:41.897000000', '2017-08-10T11:03:41.995000000', '2017-08-10T11:03:42.097000000', '2017-08-10T11:03:42.197000000', '2017-08-10T11:03:42.297000000', '2017-08-10T11:03:42.397000000', '2017-08-10T11:03:42.497000000', '2017-08-10T11:03:42.597000000'], dtype='datetime64[ns]') - altitude()float6499.5
array(99.5)
- crs_wkt()int640
array(0)
- latitude()float6450.73
array(50.73052)
- longitude()float647.072
array(7.071663)
- NOISE_LEVEL()float64-24.7
array(-24.7)
- sweep_mode()<U20'azimuth_surveillance'
array('azimuth_surveillance', dtype='<U20')
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Calculating Reflectivity Integrals/Sums#
We do not restrict (mask) the reflectivities for now, but switch between DBTH and DBZH to see the difference.
zhraw = swp.DBTH.where((swp.CMAP2 == 0) & valid & (swp.RHOHV > 0.9))
zhraw = zhraw.where((swp.range > cphase.start_range) & (swp.range < cphase.stop_range))
zhraw.plot(x="azimuth", vmin=-10, vmax=100)
<matplotlib.collections.QuadMesh at 0x7f3a921f1810>
# calculate linear reflectivity and ^b
zax = zhraw.wrl.trafo.idecibel().fillna(1e-4)
zh_cal = zax.wrl.trafo.decibel()
zh_cal.wrl.vis.plot()
<matplotlib.collections.QuadMesh at 0x7f3a90172d50>
za = zax**bx
za.wrl.vis.plot(vmax=1000)
<matplotlib.collections.QuadMesh at 0x7f3a6876a0d0>
# set masked to zero for integration
za_zero = za.fillna(0)
za_zero.wrl.vis.plot(vmax=1000)
<matplotlib.collections.QuadMesh at 0x7f3a68628e10>
# integrate
iza_x = 0.46 * bx * za_zero.pipe(rp.x_cumtrapz)
iza = iza_x.max("range") - iza_x
iza.wrl.vis.plot()
display(iza)
range res [km]: 0.2
<xarray.DataArray 'DBTH' (azimuth: 360, range: 750)> Size: 2MB
dask.array<sub, shape=(360, 750), dtype=float64, chunksize=(180, 750), chunktype=numpy.ndarray>
Coordinates: (12/16)
* azimuth (azimuth) float64 3kB 0.5 1.5 2.5 3.5 ... 357.5 358.5 359.5
elevation (azimuth) float64 3kB 0.9998 0.9998 0.9998 ... 0.9998 0.9998
time (azimuth) datetime64[ns] 3kB 2017-08-10T11:03:42.699000 ... ...
* range (range) float32 3kB 100.0 300.0 500.0 ... 1.497e+05 1.499e+05
bins (azimuth, range) float32 1MB dask.array<chunksize=(180, 375), meta=np.ndarray>
gr (azimuth, range) float64 2MB dask.array<chunksize=(90, 375), meta=np.ndarray>
... ...
altitude float64 8B 99.5
crs_wkt int64 8B 0
latitude float64 8B 50.73
longitude float64 8B 7.072
NOISE_LEVEL float64 8B -24.7
sweep_mode <U20 80B 'azimuth_surveillance'
Attributes:
format: UV8
is_dft: 0
unit: dBZ
units: dBZ
long_name: Total power H (uncorrected reflectivity)
standard_name: radar_equivalent_reflectivity_factor_h
_Undetect: 0.0- azimuth: 360
- range: 750
- dask.array<chunksize=(180, 750), meta=np.ndarray>
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 43 graph layers Data type float64 numpy.ndarray - azimuth(azimuth)float640.5 1.5 2.5 ... 357.5 358.5 359.5
- standard_name :
- ray_azimuth_angle
- long_name :
- azimuth_angle_from_true_north
- units :
- degrees
- axis :
- radial_azimuth_coordinate
array([ 0.5, 1.5, 2.5, ..., 357.5, 358.5, 359.5], shape=(360,))
- elevation(azimuth)float640.9998 0.9998 ... 0.9998 0.9998
- standard_name :
- ray_elevation_angle
- long_name :
- elevation_angle_from_horizontal_plane
- units :
- degrees
- axis :
- radial_elevation_coordinate
array([0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, ... 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586]) - time(azimuth)datetime64[ns]2017-08-10T11:03:42.699000 ... 2...
- standard_name :
- time
array(['2017-08-10T11:03:42.699000000', '2017-08-10T11:03:42.800000000', '2017-08-10T11:03:42.902000000', '2017-08-10T11:03:43.001000000', '2017-08-10T11:03:43.102000000', '2017-08-10T11:03:43.202000000', '2017-08-10T11:03:43.302000000', '2017-08-10T11:03:43.402000000', '2017-08-10T11:03:43.504000000', '2017-08-10T11:03:43.603000000', '2017-08-10T11:03:43.705000000', '2017-08-10T11:03:43.803000000', '2017-08-10T11:03:43.905000000', '2017-08-10T11:03:44.008000000', '2017-08-10T11:03:44.108000000', '2017-08-10T11:03:44.208000000', '2017-08-10T11:03:44.308000000', '2017-08-10T11:03:44.408000000', '2017-08-10T11:03:44.510000000', '2017-08-10T11:03:44.608000000', '2017-08-10T11:03:44.710000000', '2017-08-10T11:03:44.809000000', '2017-08-10T11:03:44.910000000', '2017-08-10T11:03:45.010000000', '2017-08-10T11:03:45.110000000', '2017-08-10T11:03:45.210000000', '2017-08-10T11:03:45.314000000', '2017-08-10T11:03:45.414000000', '2017-08-10T11:03:45.514000000', '2017-08-10T11:03:45.614000000', '2017-08-10T11:03:45.716000000', '2017-08-10T11:03:45.814000000', '2017-08-10T11:03:45.916000000', '2017-08-10T11:03:46.016000000', '2017-08-10T11:03:46.116000000', '2017-08-10T11:03:46.216000000', '2017-08-10T11:03:46.318000000', '2017-08-10T11:03:46.416000000', '2017-08-10T11:03:46.518000000', '2017-08-10T11:03:46.617000000', ... '2017-08-10T11:03:38.879000000', '2017-08-10T11:03:38.982000000', '2017-08-10T11:03:39.082000000', '2017-08-10T11:03:39.182000000', '2017-08-10T11:03:39.282000000', '2017-08-10T11:03:39.382000000', '2017-08-10T11:03:39.484000000', '2017-08-10T11:03:39.584000000', '2017-08-10T11:03:39.684000000', '2017-08-10T11:03:39.784000000', '2017-08-10T11:03:39.884000000', '2017-08-10T11:03:39.984000000', '2017-08-10T11:03:40.086000000', '2017-08-10T11:03:40.184000000', '2017-08-10T11:03:40.288000000', '2017-08-10T11:03:40.388000000', '2017-08-10T11:03:40.490000000', '2017-08-10T11:03:40.590000000', '2017-08-10T11:03:40.690000000', '2017-08-10T11:03:40.790000000', '2017-08-10T11:03:40.890000000', '2017-08-10T11:03:40.990000000', '2017-08-10T11:03:41.091000000', '2017-08-10T11:03:41.191000000', '2017-08-10T11:03:41.291000000', '2017-08-10T11:03:41.391000000', '2017-08-10T11:03:41.491000000', '2017-08-10T11:03:41.591000000', '2017-08-10T11:03:41.695000000', '2017-08-10T11:03:41.795000000', '2017-08-10T11:03:41.897000000', '2017-08-10T11:03:41.995000000', '2017-08-10T11:03:42.097000000', '2017-08-10T11:03:42.197000000', '2017-08-10T11:03:42.297000000', '2017-08-10T11:03:42.397000000', '2017-08-10T11:03:42.497000000', '2017-08-10T11:03:42.597000000'], dtype='datetime64[ns]') - range(range)float32100.0 300.0 ... 1.497e+05 1.499e+05
- units :
- meters
- standard_name :
- projection_range_coordinate
- long_name :
- range_to_measurement_volume
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
array([1.000e+02, 3.000e+02, 5.000e+02, ..., 1.495e+05, 1.497e+05, 1.499e+05], shape=(750,), dtype=float32) - bins(azimuth, range)float32dask.array<chunksize=(180, 375), meta=np.ndarray>
- units :
- meters
- standard_name :
- projection_range_coordinate
- long_name :
- range_to_measurement_volume
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
Array Chunk Bytes 1.03 MiB 263.67 kiB Shape (360, 750) (180, 375) Dask graph 4 chunks in 2 graph layers Data type float32 numpy.ndarray - gr(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- distance_from_radar
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - rays(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- ray_azimuth_angle
- long_name :
- azimuth_angle_from_true_north
- units :
- degrees
- axis :
- radial_azimuth_coordinate
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - x(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- axis :
- X
- long_name :
- Easting
- standard_name :
- projection_x_coordinate
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - y(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- axis :
- Y
- long_name :
- Northing
- standard_name :
- projection_y_coordinate
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - z(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- height_above_ground
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - altitude()float6499.5
- long_name :
- altitude
- units :
- meters
- standard_name :
- altitude
array(99.5)
- crs_wkt()int640
- crs_wkt :
- PROJCRS["AEQD centered at 50.73052N 7.071663E",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",50.73052,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",7.071663,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 :
- AEQD centered at 50.73052N 7.071663E
- grid_mapping_name :
- azimuthal_equidistant
- latitude_of_projection_origin :
- 50.73052
- longitude_of_projection_origin :
- 7.071663
- false_easting :
- 0.0
- false_northing :
- 0.0
array(0)
- latitude()float6450.73
- long_name :
- latitude
- units :
- degrees_north
- positive :
- up
- standard_name :
- latitude
array(50.73052)
- longitude()float647.072
- long_name :
- longitude
- units :
- degrees_east
- standard_name :
- longitude
array(7.071663)
- NOISE_LEVEL()float64-24.7
array(-24.7)
- sweep_mode()<U20'azimuth_surveillance'
array('azimuth_surveillance', dtype='<U20')
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- dBZ
- long_name :
- Total power H (uncorrected reflectivity)
- standard_name :
- radar_equivalent_reflectivity_factor_h
- _Undetect :
- 0.0
Calculating Attenuation \(A_{H}\) for whole domain#
We can reduce the number of operations by rearranging the equation like this:
iza_fdphi = iza / fdphi
display(iza_fdphi)
<xarray.DataArray (azimuth: 360, range: 750, alpha: 25)> Size: 54MB
dask.array<truediv, shape=(360, 750, 25), dtype=float64, chunksize=(180, 750, 25), chunktype=numpy.ndarray>
Coordinates: (12/17)
* azimuth (azimuth) float64 3kB 0.5 1.5 2.5 3.5 ... 357.5 358.5 359.5
elevation (azimuth) float64 3kB 0.9998 0.9998 0.9998 ... 0.9998 0.9998
time (azimuth) datetime64[ns] 3kB 2017-08-10T11:03:42.699000 ... ...
* range (range) float32 3kB 100.0 300.0 500.0 ... 1.497e+05 1.499e+05
bins (azimuth, range) float32 1MB dask.array<chunksize=(180, 375), meta=np.ndarray>
gr (azimuth, range) float64 2MB dask.array<chunksize=(90, 375), meta=np.ndarray>
... ...
altitude float64 8B 99.5
crs_wkt int64 8B 0
latitude float64 8B 50.73
longitude float64 8B 7.072
NOISE_LEVEL float64 8B -24.7
sweep_mode <U20 80B 'azimuth_surveillance'
Attributes:
is_dft: 0
_Undetect: 0.0- azimuth: 360
- range: 750
- alpha: 25
- dask.array<chunksize=(180, 750, 25), meta=np.ndarray>
Array Chunk Bytes 51.50 MiB 25.75 MiB Shape (360, 750, 25) (180, 750, 25) Dask graph 2 chunks in 67 graph layers Data type float64 numpy.ndarray - azimuth(azimuth)float640.5 1.5 2.5 ... 357.5 358.5 359.5
- standard_name :
- ray_azimuth_angle
- long_name :
- azimuth_angle_from_true_north
- units :
- degrees
- axis :
- radial_azimuth_coordinate
array([ 0.5, 1.5, 2.5, ..., 357.5, 358.5, 359.5], shape=(360,))
- elevation(azimuth)float640.9998 0.9998 ... 0.9998 0.9998
- standard_name :
- ray_elevation_angle
- long_name :
- elevation_angle_from_horizontal_plane
- units :
- degrees
- axis :
- radial_elevation_coordinate
array([0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, ... 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586]) - time(azimuth)datetime64[ns]2017-08-10T11:03:42.699000 ... 2...
- standard_name :
- time
array(['2017-08-10T11:03:42.699000000', '2017-08-10T11:03:42.800000000', '2017-08-10T11:03:42.902000000', '2017-08-10T11:03:43.001000000', '2017-08-10T11:03:43.102000000', '2017-08-10T11:03:43.202000000', '2017-08-10T11:03:43.302000000', '2017-08-10T11:03:43.402000000', '2017-08-10T11:03:43.504000000', '2017-08-10T11:03:43.603000000', '2017-08-10T11:03:43.705000000', '2017-08-10T11:03:43.803000000', '2017-08-10T11:03:43.905000000', '2017-08-10T11:03:44.008000000', '2017-08-10T11:03:44.108000000', '2017-08-10T11:03:44.208000000', '2017-08-10T11:03:44.308000000', '2017-08-10T11:03:44.408000000', '2017-08-10T11:03:44.510000000', '2017-08-10T11:03:44.608000000', '2017-08-10T11:03:44.710000000', '2017-08-10T11:03:44.809000000', '2017-08-10T11:03:44.910000000', '2017-08-10T11:03:45.010000000', '2017-08-10T11:03:45.110000000', '2017-08-10T11:03:45.210000000', '2017-08-10T11:03:45.314000000', '2017-08-10T11:03:45.414000000', '2017-08-10T11:03:45.514000000', '2017-08-10T11:03:45.614000000', '2017-08-10T11:03:45.716000000', '2017-08-10T11:03:45.814000000', '2017-08-10T11:03:45.916000000', '2017-08-10T11:03:46.016000000', '2017-08-10T11:03:46.116000000', '2017-08-10T11:03:46.216000000', '2017-08-10T11:03:46.318000000', '2017-08-10T11:03:46.416000000', '2017-08-10T11:03:46.518000000', '2017-08-10T11:03:46.617000000', ... '2017-08-10T11:03:38.879000000', '2017-08-10T11:03:38.982000000', '2017-08-10T11:03:39.082000000', '2017-08-10T11:03:39.182000000', '2017-08-10T11:03:39.282000000', '2017-08-10T11:03:39.382000000', '2017-08-10T11:03:39.484000000', '2017-08-10T11:03:39.584000000', '2017-08-10T11:03:39.684000000', '2017-08-10T11:03:39.784000000', '2017-08-10T11:03:39.884000000', '2017-08-10T11:03:39.984000000', '2017-08-10T11:03:40.086000000', '2017-08-10T11:03:40.184000000', '2017-08-10T11:03:40.288000000', '2017-08-10T11:03:40.388000000', '2017-08-10T11:03:40.490000000', '2017-08-10T11:03:40.590000000', '2017-08-10T11:03:40.690000000', '2017-08-10T11:03:40.790000000', '2017-08-10T11:03:40.890000000', '2017-08-10T11:03:40.990000000', '2017-08-10T11:03:41.091000000', '2017-08-10T11:03:41.191000000', '2017-08-10T11:03:41.291000000', '2017-08-10T11:03:41.391000000', '2017-08-10T11:03:41.491000000', '2017-08-10T11:03:41.591000000', '2017-08-10T11:03:41.695000000', '2017-08-10T11:03:41.795000000', '2017-08-10T11:03:41.897000000', '2017-08-10T11:03:41.995000000', '2017-08-10T11:03:42.097000000', '2017-08-10T11:03:42.197000000', '2017-08-10T11:03:42.297000000', '2017-08-10T11:03:42.397000000', '2017-08-10T11:03:42.497000000', '2017-08-10T11:03:42.597000000'], dtype='datetime64[ns]') - range(range)float32100.0 300.0 ... 1.497e+05 1.499e+05
- units :
- meters
- standard_name :
- projection_range_coordinate
- long_name :
- range_to_measurement_volume
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
array([1.000e+02, 3.000e+02, 5.000e+02, ..., 1.495e+05, 1.497e+05, 1.499e+05], shape=(750,), dtype=float32) - bins(azimuth, range)float32dask.array<chunksize=(180, 375), meta=np.ndarray>
- units :
- meters
- standard_name :
- projection_range_coordinate
- long_name :
- range_to_measurement_volume
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
Array Chunk Bytes 1.03 MiB 263.67 kiB Shape (360, 750) (180, 375) Dask graph 4 chunks in 2 graph layers Data type float32 numpy.ndarray - gr(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- distance_from_radar
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - rays(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- ray_azimuth_angle
- long_name :
- azimuth_angle_from_true_north
- units :
- degrees
- axis :
- radial_azimuth_coordinate
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - x(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- axis :
- X
- long_name :
- Easting
- standard_name :
- projection_x_coordinate
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - y(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- axis :
- Y
- long_name :
- Northing
- standard_name :
- projection_y_coordinate
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - z(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- height_above_ground
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - alpha(alpha)float640.1 0.11 0.12 ... 0.32 0.33 0.34
array([0.1 , 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2 , 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3 , 0.31, 0.32, 0.33, 0.34]) - altitude()float6499.5
- long_name :
- altitude
- units :
- meters
- standard_name :
- altitude
array(99.5)
- crs_wkt()int640
- crs_wkt :
- PROJCRS["AEQD centered at 50.73052N 7.071663E",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",50.73052,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",7.071663,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 :
- AEQD centered at 50.73052N 7.071663E
- grid_mapping_name :
- azimuthal_equidistant
- latitude_of_projection_origin :
- 50.73052
- longitude_of_projection_origin :
- 7.071663
- false_easting :
- 0.0
- false_northing :
- 0.0
array(0)
- latitude()float6450.73
- long_name :
- latitude
- units :
- degrees_north
- positive :
- up
- standard_name :
- latitude
array(50.73052)
- longitude()float647.072
- long_name :
- longitude
- units :
- degrees_east
- standard_name :
- longitude
array(7.071663)
- NOISE_LEVEL()float64-24.7
array(-24.7)
- sweep_mode()<U20'azimuth_surveillance'
array('azimuth_surveillance', dtype='<U20')
- is_dft :
- 0
- _Undetect :
- 0.0
# integral from r1 to r2
iza_first = iza_fdphi[:, cphase.first_idx.compute()]
display(iza_first)
<xarray.DataArray (azimuth: 360, alpha: 25)> Size: 72kB
dask.array<transpose, shape=(360, 25), dtype=float64, chunksize=(360, 25), chunktype=numpy.ndarray>
Coordinates: (12/17)
* azimuth (azimuth) float64 3kB 0.5 1.5 2.5 3.5 ... 357.5 358.5 359.5
elevation (azimuth) float64 3kB 0.9998 0.9998 0.9998 ... 0.9998 0.9998
time (azimuth) datetime64[ns] 3kB 2017-08-10T11:03:42.699000 ... ...
bins (azimuth) float32 1kB dask.array<chunksize=(360,), meta=np.ndarray>
gr (azimuth) float64 3kB dask.array<chunksize=(360,), meta=np.ndarray>
range (azimuth) float32 1kB 5.49e+04 5.49e+04 ... 1.21e+04 1.21e+04
... ...
altitude float64 8B 99.5
crs_wkt int64 8B 0
latitude float64 8B 50.73
longitude float64 8B 7.072
NOISE_LEVEL float64 8B -24.7
sweep_mode <U20 80B 'azimuth_surveillance'
Attributes:
is_dft: 0
_Undetect: 0.0- azimuth: 360
- alpha: 25
- dask.array<chunksize=(360, 25), meta=np.ndarray>
Array Chunk Bytes 70.31 kiB 70.31 kiB Shape (360, 25) (360, 25) Dask graph 1 chunks in 69 graph layers Data type float64 numpy.ndarray - azimuth(azimuth)float640.5 1.5 2.5 ... 357.5 358.5 359.5
- standard_name :
- ray_azimuth_angle
- long_name :
- azimuth_angle_from_true_north
- units :
- degrees
- axis :
- radial_azimuth_coordinate
array([ 0.5, 1.5, 2.5, ..., 357.5, 358.5, 359.5], shape=(360,))
- elevation(azimuth)float640.9998 0.9998 ... 0.9998 0.9998
- standard_name :
- ray_elevation_angle
- long_name :
- elevation_angle_from_horizontal_plane
- units :
- degrees
- axis :
- radial_elevation_coordinate
array([0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, ... 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586]) - time(azimuth)datetime64[ns]2017-08-10T11:03:42.699000 ... 2...
- standard_name :
- time
array(['2017-08-10T11:03:42.699000000', '2017-08-10T11:03:42.800000000', '2017-08-10T11:03:42.902000000', '2017-08-10T11:03:43.001000000', '2017-08-10T11:03:43.102000000', '2017-08-10T11:03:43.202000000', '2017-08-10T11:03:43.302000000', '2017-08-10T11:03:43.402000000', '2017-08-10T11:03:43.504000000', '2017-08-10T11:03:43.603000000', '2017-08-10T11:03:43.705000000', '2017-08-10T11:03:43.803000000', '2017-08-10T11:03:43.905000000', '2017-08-10T11:03:44.008000000', '2017-08-10T11:03:44.108000000', '2017-08-10T11:03:44.208000000', '2017-08-10T11:03:44.308000000', '2017-08-10T11:03:44.408000000', '2017-08-10T11:03:44.510000000', '2017-08-10T11:03:44.608000000', '2017-08-10T11:03:44.710000000', '2017-08-10T11:03:44.809000000', '2017-08-10T11:03:44.910000000', '2017-08-10T11:03:45.010000000', '2017-08-10T11:03:45.110000000', '2017-08-10T11:03:45.210000000', '2017-08-10T11:03:45.314000000', '2017-08-10T11:03:45.414000000', '2017-08-10T11:03:45.514000000', '2017-08-10T11:03:45.614000000', '2017-08-10T11:03:45.716000000', '2017-08-10T11:03:45.814000000', '2017-08-10T11:03:45.916000000', '2017-08-10T11:03:46.016000000', '2017-08-10T11:03:46.116000000', '2017-08-10T11:03:46.216000000', '2017-08-10T11:03:46.318000000', '2017-08-10T11:03:46.416000000', '2017-08-10T11:03:46.518000000', '2017-08-10T11:03:46.617000000', ... '2017-08-10T11:03:38.879000000', '2017-08-10T11:03:38.982000000', '2017-08-10T11:03:39.082000000', '2017-08-10T11:03:39.182000000', '2017-08-10T11:03:39.282000000', '2017-08-10T11:03:39.382000000', '2017-08-10T11:03:39.484000000', '2017-08-10T11:03:39.584000000', '2017-08-10T11:03:39.684000000', '2017-08-10T11:03:39.784000000', '2017-08-10T11:03:39.884000000', '2017-08-10T11:03:39.984000000', '2017-08-10T11:03:40.086000000', '2017-08-10T11:03:40.184000000', '2017-08-10T11:03:40.288000000', '2017-08-10T11:03:40.388000000', '2017-08-10T11:03:40.490000000', '2017-08-10T11:03:40.590000000', '2017-08-10T11:03:40.690000000', '2017-08-10T11:03:40.790000000', '2017-08-10T11:03:40.890000000', '2017-08-10T11:03:40.990000000', '2017-08-10T11:03:41.091000000', '2017-08-10T11:03:41.191000000', '2017-08-10T11:03:41.291000000', '2017-08-10T11:03:41.391000000', '2017-08-10T11:03:41.491000000', '2017-08-10T11:03:41.591000000', '2017-08-10T11:03:41.695000000', '2017-08-10T11:03:41.795000000', '2017-08-10T11:03:41.897000000', '2017-08-10T11:03:41.995000000', '2017-08-10T11:03:42.097000000', '2017-08-10T11:03:42.197000000', '2017-08-10T11:03:42.297000000', '2017-08-10T11:03:42.397000000', '2017-08-10T11:03:42.497000000', '2017-08-10T11:03:42.597000000'], dtype='datetime64[ns]') - bins(azimuth)float32dask.array<chunksize=(360,), meta=np.ndarray>
- units :
- meters
- standard_name :
- projection_range_coordinate
- long_name :
- range_to_measurement_volume
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
Array Chunk Bytes 1.41 kiB 1.41 kiB Shape (360,) (360,) Dask graph 1 chunks in 3 graph layers Data type float32 numpy.ndarray - gr(azimuth)float64dask.array<chunksize=(360,), meta=np.ndarray>
- standard_name :
- distance_from_radar
- units :
- metre
Array Chunk Bytes 2.81 kiB 2.81 kiB Shape (360,) (360,) Dask graph 1 chunks in 3 graph layers Data type float64 numpy.ndarray - range(azimuth)float325.49e+04 5.49e+04 ... 1.21e+04
- units :
- meters
- standard_name :
- projection_range_coordinate
- long_name :
- range_to_measurement_volume
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
array([54900., 54900., 25500., ..., 24100., 12100., 12100.], shape=(360,), dtype=float32) - rays(azimuth)float64dask.array<chunksize=(360,), meta=np.ndarray>
- standard_name :
- ray_azimuth_angle
- long_name :
- azimuth_angle_from_true_north
- units :
- degrees
- axis :
- radial_azimuth_coordinate
Array Chunk Bytes 2.81 kiB 2.81 kiB Shape (360,) (360,) Dask graph 1 chunks in 3 graph layers Data type float64 numpy.ndarray - x(azimuth)float64dask.array<chunksize=(360,), meta=np.ndarray>
- axis :
- X
- long_name :
- Easting
- standard_name :
- projection_x_coordinate
- units :
- metre
Array Chunk Bytes 2.81 kiB 2.81 kiB Shape (360,) (360,) Dask graph 1 chunks in 3 graph layers Data type float64 numpy.ndarray - y(azimuth)float64dask.array<chunksize=(360,), meta=np.ndarray>
- axis :
- Y
- long_name :
- Northing
- standard_name :
- projection_y_coordinate
- units :
- metre
Array Chunk Bytes 2.81 kiB 2.81 kiB Shape (360,) (360,) Dask graph 1 chunks in 3 graph layers Data type float64 numpy.ndarray - z(azimuth)float64dask.array<chunksize=(360,), meta=np.ndarray>
- standard_name :
- height_above_ground
- units :
- metre
Array Chunk Bytes 2.81 kiB 2.81 kiB Shape (360,) (360,) Dask graph 1 chunks in 3 graph layers Data type float64 numpy.ndarray - alpha(alpha)float640.1 0.11 0.12 ... 0.32 0.33 0.34
array([0.1 , 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2 , 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3 , 0.31, 0.32, 0.33, 0.34]) - altitude()float6499.5
- long_name :
- altitude
- units :
- meters
- standard_name :
- altitude
array(99.5)
- crs_wkt()int640
- crs_wkt :
- PROJCRS["AEQD centered at 50.73052N 7.071663E",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",50.73052,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",7.071663,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 :
- AEQD centered at 50.73052N 7.071663E
- grid_mapping_name :
- azimuthal_equidistant
- latitude_of_projection_origin :
- 50.73052
- longitude_of_projection_origin :
- 7.071663
- false_easting :
- 0.0
- false_northing :
- 0.0
array(0)
- latitude()float6450.73
- long_name :
- latitude
- units :
- degrees_north
- positive :
- up
- standard_name :
- latitude
array(50.73052)
- longitude()float647.072
- long_name :
- longitude
- units :
- degrees_east
- standard_name :
- longitude
array(7.071663)
- NOISE_LEVEL()float64-24.7
array(-24.7)
- sweep_mode()<U20'azimuth_surveillance'
array('azimuth_surveillance', dtype='<U20')
- is_dft :
- 0
- _Undetect :
- 0.0
# Specific attenutation attributes
spec_att = dict(
units="dB/km",
standard_name="specific_attenuation_h",
long_name="Specific attenuation H",
short_name="AH",
)
ah = za / (iza_first + iza)
ah.attrs = spec_att
display(ah)
<xarray.DataArray (azimuth: 360, range: 750, alpha: 25)> Size: 54MB
dask.array<truediv, shape=(360, 750, 25), dtype=float64, chunksize=(180, 750, 25), chunktype=numpy.ndarray>
Coordinates: (12/17)
* azimuth (azimuth) float64 3kB 0.5 1.5 2.5 3.5 ... 357.5 358.5 359.5
elevation (azimuth) float64 3kB 0.9998 0.9998 0.9998 ... 0.9998 0.9998
time (azimuth) datetime64[ns] 3kB 2017-08-10T11:03:42.699000 ... ...
* range (range) float32 3kB 100.0 300.0 500.0 ... 1.497e+05 1.499e+05
bins (azimuth, range) float32 1MB dask.array<chunksize=(180, 375), meta=np.ndarray>
gr (azimuth, range) float64 2MB dask.array<chunksize=(90, 375), meta=np.ndarray>
... ...
altitude float64 8B 99.5
crs_wkt int64 8B 0
latitude float64 8B 50.73
longitude float64 8B 7.072
NOISE_LEVEL float64 8B -24.7
sweep_mode <U20 80B 'azimuth_surveillance'
Attributes:
units: dB/km
standard_name: specific_attenuation_h
long_name: Specific attenuation H
short_name: AH- azimuth: 360
- range: 750
- alpha: 25
- dask.array<chunksize=(180, 750, 25), meta=np.ndarray>
Array Chunk Bytes 51.50 MiB 25.75 MiB Shape (360, 750, 25) (180, 750, 25) Dask graph 2 chunks in 78 graph layers Data type float64 numpy.ndarray - azimuth(azimuth)float640.5 1.5 2.5 ... 357.5 358.5 359.5
- standard_name :
- ray_azimuth_angle
- long_name :
- azimuth_angle_from_true_north
- units :
- degrees
- axis :
- radial_azimuth_coordinate
array([ 0.5, 1.5, 2.5, ..., 357.5, 358.5, 359.5], shape=(360,))
- elevation(azimuth)float640.9998 0.9998 ... 0.9998 0.9998
- standard_name :
- ray_elevation_angle
- long_name :
- elevation_angle_from_horizontal_plane
- units :
- degrees
- axis :
- radial_elevation_coordinate
array([0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, ... 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586]) - time(azimuth)datetime64[ns]2017-08-10T11:03:42.699000 ... 2...
- standard_name :
- time
array(['2017-08-10T11:03:42.699000000', '2017-08-10T11:03:42.800000000', '2017-08-10T11:03:42.902000000', '2017-08-10T11:03:43.001000000', '2017-08-10T11:03:43.102000000', '2017-08-10T11:03:43.202000000', '2017-08-10T11:03:43.302000000', '2017-08-10T11:03:43.402000000', '2017-08-10T11:03:43.504000000', '2017-08-10T11:03:43.603000000', '2017-08-10T11:03:43.705000000', '2017-08-10T11:03:43.803000000', '2017-08-10T11:03:43.905000000', '2017-08-10T11:03:44.008000000', '2017-08-10T11:03:44.108000000', '2017-08-10T11:03:44.208000000', '2017-08-10T11:03:44.308000000', '2017-08-10T11:03:44.408000000', '2017-08-10T11:03:44.510000000', '2017-08-10T11:03:44.608000000', '2017-08-10T11:03:44.710000000', '2017-08-10T11:03:44.809000000', '2017-08-10T11:03:44.910000000', '2017-08-10T11:03:45.010000000', '2017-08-10T11:03:45.110000000', '2017-08-10T11:03:45.210000000', '2017-08-10T11:03:45.314000000', '2017-08-10T11:03:45.414000000', '2017-08-10T11:03:45.514000000', '2017-08-10T11:03:45.614000000', '2017-08-10T11:03:45.716000000', '2017-08-10T11:03:45.814000000', '2017-08-10T11:03:45.916000000', '2017-08-10T11:03:46.016000000', '2017-08-10T11:03:46.116000000', '2017-08-10T11:03:46.216000000', '2017-08-10T11:03:46.318000000', '2017-08-10T11:03:46.416000000', '2017-08-10T11:03:46.518000000', '2017-08-10T11:03:46.617000000', ... '2017-08-10T11:03:38.879000000', '2017-08-10T11:03:38.982000000', '2017-08-10T11:03:39.082000000', '2017-08-10T11:03:39.182000000', '2017-08-10T11:03:39.282000000', '2017-08-10T11:03:39.382000000', '2017-08-10T11:03:39.484000000', '2017-08-10T11:03:39.584000000', '2017-08-10T11:03:39.684000000', '2017-08-10T11:03:39.784000000', '2017-08-10T11:03:39.884000000', '2017-08-10T11:03:39.984000000', '2017-08-10T11:03:40.086000000', '2017-08-10T11:03:40.184000000', '2017-08-10T11:03:40.288000000', '2017-08-10T11:03:40.388000000', '2017-08-10T11:03:40.490000000', '2017-08-10T11:03:40.590000000', '2017-08-10T11:03:40.690000000', '2017-08-10T11:03:40.790000000', '2017-08-10T11:03:40.890000000', '2017-08-10T11:03:40.990000000', '2017-08-10T11:03:41.091000000', '2017-08-10T11:03:41.191000000', '2017-08-10T11:03:41.291000000', '2017-08-10T11:03:41.391000000', '2017-08-10T11:03:41.491000000', '2017-08-10T11:03:41.591000000', '2017-08-10T11:03:41.695000000', '2017-08-10T11:03:41.795000000', '2017-08-10T11:03:41.897000000', '2017-08-10T11:03:41.995000000', '2017-08-10T11:03:42.097000000', '2017-08-10T11:03:42.197000000', '2017-08-10T11:03:42.297000000', '2017-08-10T11:03:42.397000000', '2017-08-10T11:03:42.497000000', '2017-08-10T11:03:42.597000000'], dtype='datetime64[ns]') - range(range)float32100.0 300.0 ... 1.497e+05 1.499e+05
- units :
- meters
- standard_name :
- projection_range_coordinate
- long_name :
- range_to_measurement_volume
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
array([1.000e+02, 3.000e+02, 5.000e+02, ..., 1.495e+05, 1.497e+05, 1.499e+05], shape=(750,), dtype=float32) - bins(azimuth, range)float32dask.array<chunksize=(180, 375), meta=np.ndarray>
- units :
- meters
- standard_name :
- projection_range_coordinate
- long_name :
- range_to_measurement_volume
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
Array Chunk Bytes 1.03 MiB 263.67 kiB Shape (360, 750) (180, 375) Dask graph 4 chunks in 2 graph layers Data type float32 numpy.ndarray - gr(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- distance_from_radar
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - rays(azimuth, range)float640.5 0.5 0.5 ... 359.5 359.5 359.5
- standard_name :
- ray_azimuth_angle
- long_name :
- azimuth_angle_from_true_north
- units :
- degrees
- axis :
- radial_azimuth_coordinate
array([[ 0.5, 0.5, 0.5, ..., 0.5, 0.5, 0.5], [ 1.5, 1.5, 1.5, ..., 1.5, 1.5, 1.5], [ 2.5, 2.5, 2.5, ..., 2.5, 2.5, 2.5], ..., [357.5, 357.5, 357.5, ..., 357.5, 357.5, 357.5], [358.5, 358.5, 358.5, ..., 358.5, 358.5, 358.5], [359.5, 359.5, 359.5, ..., 359.5, 359.5, 359.5]], shape=(360, 750)) - x(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- axis :
- X
- long_name :
- Easting
- standard_name :
- projection_x_coordinate
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - y(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- axis :
- Y
- long_name :
- Northing
- standard_name :
- projection_y_coordinate
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - z(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- height_above_ground
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - alpha(alpha)float640.1 0.11 0.12 ... 0.32 0.33 0.34
array([0.1 , 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2 , 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3 , 0.31, 0.32, 0.33, 0.34]) - altitude()float6499.5
- long_name :
- altitude
- units :
- meters
- standard_name :
- altitude
array(99.5)
- crs_wkt()int640
- crs_wkt :
- PROJCRS["AEQD centered at 50.73052N 7.071663E",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",50.73052,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",7.071663,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 :
- AEQD centered at 50.73052N 7.071663E
- grid_mapping_name :
- azimuthal_equidistant
- latitude_of_projection_origin :
- 50.73052
- longitude_of_projection_origin :
- 7.071663
- false_easting :
- 0.0
- false_northing :
- 0.0
array(0)
- latitude()float6450.73
- long_name :
- latitude
- units :
- degrees_north
- positive :
- up
- standard_name :
- latitude
array(50.73052)
- longitude()float647.072
- long_name :
- longitude
- units :
- degrees_east
- standard_name :
- longitude
array(7.071663)
- NOISE_LEVEL()float64-24.7
array(-24.7)
- sweep_mode()<U20'azimuth_surveillance'
array('azimuth_surveillance', dtype='<U20')
- units :
- dB/km
- standard_name :
- specific_attenuation_h
- long_name :
- Specific attenuation H
- short_name :
- AH
fig = plt.figure(figsize=(8, 8))
ticks_ah = np.arange(0, 1, 0.05)
cmap = rp.get_discrete_cmap(ticks_ah, "HomeyerRainbow")
norm = rp.get_discrete_norm(ticks_ah)
im = ah.sel(alpha=0.28, method="nearest").wrl.vis.plot(
ax=111, fig=fig, norm=norm, cmap=cmap
)
\(K_{DP}\) from \(A_H\) vs. \(K_{DP}\) from \(\phi_{DP}\)#
\(K_{DP} = \frac{A_H}{\alpha}\)
\(K_{DP} = \frac{1}{2}\frac{\mathrm{d}\phi_{DP}}{\mathrm{d}r}\)
What are the benefits of \(K_{DP}(A_H)\)?
no noise artefacts
no \(\delta\)
no negative \(K_{DP}\)
no spatial degradation
filling nan with zero
kdp_ah = ah.fillna(0) / alphax
kdp_ah.attrs = swp.KDP.attrs
Calculate \(\phi_{DP}^{cal}(r, \alpha)\) for whole domain#
phical = kdp_ah.wrl.dp.phidp_from_kdp()
phical = phical.rename("PHICAL")
phical.attrs = swp.PHIDP.attrs
display(phical)
<xarray.DataArray 'PHICAL' (azimuth: 360, alpha: 25, range: 750)> Size: 54MB
dask.array<mul, shape=(360, 25, 750), dtype=float64, chunksize=(180, 25, 750), chunktype=numpy.ndarray>
Coordinates: (12/17)
* azimuth (azimuth) float64 3kB 0.5 1.5 2.5 3.5 ... 357.5 358.5 359.5
elevation (azimuth) float64 3kB 0.9998 0.9998 0.9998 ... 0.9998 0.9998
time (azimuth) datetime64[ns] 3kB 2017-08-10T11:03:42.699000 ... ...
* alpha (alpha) float64 200B 0.1 0.11 0.12 0.13 ... 0.31 0.32 0.33 0.34
* range (range) float32 3kB 100.0 300.0 500.0 ... 1.497e+05 1.499e+05
bins (azimuth, range) float32 1MB dask.array<chunksize=(180, 375), meta=np.ndarray>
... ...
altitude float64 8B 99.5
crs_wkt int64 8B 0
latitude float64 8B 50.73
longitude float64 8B 7.072
NOISE_LEVEL float64 8B -24.7
sweep_mode <U20 80B 'azimuth_surveillance'
Attributes:
format: UV16
is_dft: 0
unit: deg
units: degrees
long_name: Differential phase HV
standard_name: radar_differential_phase_hv
_Undetect: 0.0- azimuth: 360
- alpha: 25
- range: 750
- dask.array<chunksize=(180, 25, 750), meta=np.ndarray>
Array Chunk Bytes 51.50 MiB 25.75 MiB Shape (360, 25, 750) (180, 25, 750) Dask graph 2 chunks in 88 graph layers Data type float64 numpy.ndarray - azimuth(azimuth)float640.5 1.5 2.5 ... 357.5 358.5 359.5
- standard_name :
- ray_azimuth_angle
- long_name :
- azimuth_angle_from_true_north
- units :
- degrees
- axis :
- radial_azimuth_coordinate
array([ 0.5, 1.5, 2.5, ..., 357.5, 358.5, 359.5], shape=(360,))
- elevation(azimuth)float640.9998 0.9998 ... 0.9998 0.9998
- standard_name :
- ray_elevation_angle
- long_name :
- elevation_angle_from_horizontal_plane
- units :
- degrees
- axis :
- radial_elevation_coordinate
array([0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, ... 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586]) - time(azimuth)datetime64[ns]2017-08-10T11:03:42.699000 ... 2...
- standard_name :
- time
array(['2017-08-10T11:03:42.699000000', '2017-08-10T11:03:42.800000000', '2017-08-10T11:03:42.902000000', '2017-08-10T11:03:43.001000000', '2017-08-10T11:03:43.102000000', '2017-08-10T11:03:43.202000000', '2017-08-10T11:03:43.302000000', '2017-08-10T11:03:43.402000000', '2017-08-10T11:03:43.504000000', '2017-08-10T11:03:43.603000000', '2017-08-10T11:03:43.705000000', '2017-08-10T11:03:43.803000000', '2017-08-10T11:03:43.905000000', '2017-08-10T11:03:44.008000000', '2017-08-10T11:03:44.108000000', '2017-08-10T11:03:44.208000000', '2017-08-10T11:03:44.308000000', '2017-08-10T11:03:44.408000000', '2017-08-10T11:03:44.510000000', '2017-08-10T11:03:44.608000000', '2017-08-10T11:03:44.710000000', '2017-08-10T11:03:44.809000000', '2017-08-10T11:03:44.910000000', '2017-08-10T11:03:45.010000000', '2017-08-10T11:03:45.110000000', '2017-08-10T11:03:45.210000000', '2017-08-10T11:03:45.314000000', '2017-08-10T11:03:45.414000000', '2017-08-10T11:03:45.514000000', '2017-08-10T11:03:45.614000000', '2017-08-10T11:03:45.716000000', '2017-08-10T11:03:45.814000000', '2017-08-10T11:03:45.916000000', '2017-08-10T11:03:46.016000000', '2017-08-10T11:03:46.116000000', '2017-08-10T11:03:46.216000000', '2017-08-10T11:03:46.318000000', '2017-08-10T11:03:46.416000000', '2017-08-10T11:03:46.518000000', '2017-08-10T11:03:46.617000000', ... '2017-08-10T11:03:38.879000000', '2017-08-10T11:03:38.982000000', '2017-08-10T11:03:39.082000000', '2017-08-10T11:03:39.182000000', '2017-08-10T11:03:39.282000000', '2017-08-10T11:03:39.382000000', '2017-08-10T11:03:39.484000000', '2017-08-10T11:03:39.584000000', '2017-08-10T11:03:39.684000000', '2017-08-10T11:03:39.784000000', '2017-08-10T11:03:39.884000000', '2017-08-10T11:03:39.984000000', '2017-08-10T11:03:40.086000000', '2017-08-10T11:03:40.184000000', '2017-08-10T11:03:40.288000000', '2017-08-10T11:03:40.388000000', '2017-08-10T11:03:40.490000000', '2017-08-10T11:03:40.590000000', '2017-08-10T11:03:40.690000000', '2017-08-10T11:03:40.790000000', '2017-08-10T11:03:40.890000000', '2017-08-10T11:03:40.990000000', '2017-08-10T11:03:41.091000000', '2017-08-10T11:03:41.191000000', '2017-08-10T11:03:41.291000000', '2017-08-10T11:03:41.391000000', '2017-08-10T11:03:41.491000000', '2017-08-10T11:03:41.591000000', '2017-08-10T11:03:41.695000000', '2017-08-10T11:03:41.795000000', '2017-08-10T11:03:41.897000000', '2017-08-10T11:03:41.995000000', '2017-08-10T11:03:42.097000000', '2017-08-10T11:03:42.197000000', '2017-08-10T11:03:42.297000000', '2017-08-10T11:03:42.397000000', '2017-08-10T11:03:42.497000000', '2017-08-10T11:03:42.597000000'], dtype='datetime64[ns]') - alpha(alpha)float640.1 0.11 0.12 ... 0.32 0.33 0.34
array([0.1 , 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2 , 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3 , 0.31, 0.32, 0.33, 0.34]) - range(range)float32100.0 300.0 ... 1.497e+05 1.499e+05
- units :
- meters
- standard_name :
- projection_range_coordinate
- long_name :
- range_to_measurement_volume
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
array([1.000e+02, 3.000e+02, 5.000e+02, ..., 1.495e+05, 1.497e+05, 1.499e+05], shape=(750,), dtype=float32) - bins(azimuth, range)float32dask.array<chunksize=(180, 375), meta=np.ndarray>
- units :
- meters
- standard_name :
- projection_range_coordinate
- long_name :
- range_to_measurement_volume
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
Array Chunk Bytes 1.03 MiB 263.67 kiB Shape (360, 750) (180, 375) Dask graph 4 chunks in 2 graph layers Data type float32 numpy.ndarray - gr(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- distance_from_radar
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - rays(azimuth, range)float640.5 0.5 0.5 ... 359.5 359.5 359.5
- standard_name :
- ray_azimuth_angle
- long_name :
- azimuth_angle_from_true_north
- units :
- degrees
- axis :
- radial_azimuth_coordinate
array([[ 0.5, 0.5, 0.5, ..., 0.5, 0.5, 0.5], [ 1.5, 1.5, 1.5, ..., 1.5, 1.5, 1.5], [ 2.5, 2.5, 2.5, ..., 2.5, 2.5, 2.5], ..., [357.5, 357.5, 357.5, ..., 357.5, 357.5, 357.5], [358.5, 358.5, 358.5, ..., 358.5, 358.5, 358.5], [359.5, 359.5, 359.5, ..., 359.5, 359.5, 359.5]], shape=(360, 750)) - x(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- axis :
- X
- long_name :
- Easting
- standard_name :
- projection_x_coordinate
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - y(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- axis :
- Y
- long_name :
- Northing
- standard_name :
- projection_y_coordinate
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - z(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- height_above_ground
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - altitude()float6499.5
- long_name :
- altitude
- units :
- meters
- standard_name :
- altitude
array(99.5)
- crs_wkt()int640
- crs_wkt :
- PROJCRS["AEQD centered at 50.73052N 7.071663E",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",50.73052,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",7.071663,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 :
- AEQD centered at 50.73052N 7.071663E
- grid_mapping_name :
- azimuthal_equidistant
- latitude_of_projection_origin :
- 50.73052
- longitude_of_projection_origin :
- 7.071663
- false_easting :
- 0.0
- false_northing :
- 0.0
array(0)
- latitude()float6450.73
- long_name :
- latitude
- units :
- degrees_north
- positive :
- up
- standard_name :
- latitude
array(50.73052)
- longitude()float647.072
- long_name :
- longitude
- units :
- degrees_east
- standard_name :
- longitude
array(7.071663)
- NOISE_LEVEL()float64-24.7
array(-24.7)
- sweep_mode()<U20'azimuth_surveillance'
array('azimuth_surveillance', dtype='<U20')
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Add Moments#
swp = swp.assign(
AH=ah.sel(alpha=0.28, method="nearest"),
KDP_AH=kdp_ah.sel(alpha=0.28, method="nearest"),
PHIDP_CORR5=phical.sel(alpha=0.28, method="nearest"),
)
display(swp)
<xarray.Dataset> Size: 77MB
Dimensions: (azimuth: 360, range: 750)
Coordinates: (12/17)
* azimuth (azimuth) float64 3kB 0.5 1.5 2.5 ... 357.5 358.5 359.5
elevation (azimuth) float64 3kB 0.9998 0.9998 ... 0.9998 0.9998
time (azimuth) datetime64[ns] 3kB 2017-08-10T11:03:42.69900...
* range (range) float32 3kB 100.0 300.0 ... 1.497e+05 1.499e+05
bins (azimuth, range) float32 1MB dask.array<chunksize=(180, 375), meta=np.ndarray>
gr (azimuth, range) float64 2MB dask.array<chunksize=(90, 375), meta=np.ndarray>
... ...
crs_wkt int64 8B 0
latitude float64 8B 50.73
longitude float64 8B 7.072
NOISE_LEVEL float64 8B -24.7
sweep_mode <U20 80B 'azimuth_surveillance'
alpha float64 8B 0.28
Data variables: (12/49)
CMAP (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
CMAP2 (azimuth, range) uint8 270kB dask.array<chunksize=(180, 750), meta=np.ndarray>
DBTH (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
DBTV (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
DBZH (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
DBZV (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
... ...
WRADH (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
WRADV (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
ZDR (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
AH (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
KDP_AH (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
PHIDP_CORR5 (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
Attributes:
source: gamic
ant_gain_h: 44.0
ant_gain_v: 44.0
noise_power_h: -1.39495
noise_power_v: -1.09706
rx_loss_h: 0.73
rx_loss_v: 0.73- azimuth: 360
- range: 750
- azimuth(azimuth)float640.5 1.5 2.5 ... 357.5 358.5 359.5
- standard_name :
- ray_azimuth_angle
- long_name :
- azimuth_angle_from_true_north
- units :
- degrees
- axis :
- radial_azimuth_coordinate
array([ 0.5, 1.5, 2.5, ..., 357.5, 358.5, 359.5], shape=(360,))
- elevation(azimuth)float640.9998 0.9998 ... 0.9998 0.9998
- standard_name :
- ray_elevation_angle
- long_name :
- elevation_angle_from_horizontal_plane
- units :
- degrees
- axis :
- radial_elevation_coordinate
array([0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, ... 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586]) - time(azimuth)datetime64[ns]2017-08-10T11:03:42.699000 ... 2...
- standard_name :
- time
array(['2017-08-10T11:03:42.699000000', '2017-08-10T11:03:42.800000000', '2017-08-10T11:03:42.902000000', '2017-08-10T11:03:43.001000000', '2017-08-10T11:03:43.102000000', '2017-08-10T11:03:43.202000000', '2017-08-10T11:03:43.302000000', '2017-08-10T11:03:43.402000000', '2017-08-10T11:03:43.504000000', '2017-08-10T11:03:43.603000000', '2017-08-10T11:03:43.705000000', '2017-08-10T11:03:43.803000000', '2017-08-10T11:03:43.905000000', '2017-08-10T11:03:44.008000000', '2017-08-10T11:03:44.108000000', '2017-08-10T11:03:44.208000000', '2017-08-10T11:03:44.308000000', '2017-08-10T11:03:44.408000000', '2017-08-10T11:03:44.510000000', '2017-08-10T11:03:44.608000000', '2017-08-10T11:03:44.710000000', '2017-08-10T11:03:44.809000000', '2017-08-10T11:03:44.910000000', '2017-08-10T11:03:45.010000000', '2017-08-10T11:03:45.110000000', '2017-08-10T11:03:45.210000000', '2017-08-10T11:03:45.314000000', '2017-08-10T11:03:45.414000000', '2017-08-10T11:03:45.514000000', '2017-08-10T11:03:45.614000000', '2017-08-10T11:03:45.716000000', '2017-08-10T11:03:45.814000000', '2017-08-10T11:03:45.916000000', '2017-08-10T11:03:46.016000000', '2017-08-10T11:03:46.116000000', '2017-08-10T11:03:46.216000000', '2017-08-10T11:03:46.318000000', '2017-08-10T11:03:46.416000000', '2017-08-10T11:03:46.518000000', '2017-08-10T11:03:46.617000000', ... '2017-08-10T11:03:38.879000000', '2017-08-10T11:03:38.982000000', '2017-08-10T11:03:39.082000000', '2017-08-10T11:03:39.182000000', '2017-08-10T11:03:39.282000000', '2017-08-10T11:03:39.382000000', '2017-08-10T11:03:39.484000000', '2017-08-10T11:03:39.584000000', '2017-08-10T11:03:39.684000000', '2017-08-10T11:03:39.784000000', '2017-08-10T11:03:39.884000000', '2017-08-10T11:03:39.984000000', '2017-08-10T11:03:40.086000000', '2017-08-10T11:03:40.184000000', '2017-08-10T11:03:40.288000000', '2017-08-10T11:03:40.388000000', '2017-08-10T11:03:40.490000000', '2017-08-10T11:03:40.590000000', '2017-08-10T11:03:40.690000000', '2017-08-10T11:03:40.790000000', '2017-08-10T11:03:40.890000000', '2017-08-10T11:03:40.990000000', '2017-08-10T11:03:41.091000000', '2017-08-10T11:03:41.191000000', '2017-08-10T11:03:41.291000000', '2017-08-10T11:03:41.391000000', '2017-08-10T11:03:41.491000000', '2017-08-10T11:03:41.591000000', '2017-08-10T11:03:41.695000000', '2017-08-10T11:03:41.795000000', '2017-08-10T11:03:41.897000000', '2017-08-10T11:03:41.995000000', '2017-08-10T11:03:42.097000000', '2017-08-10T11:03:42.197000000', '2017-08-10T11:03:42.297000000', '2017-08-10T11:03:42.397000000', '2017-08-10T11:03:42.497000000', '2017-08-10T11:03:42.597000000'], dtype='datetime64[ns]') - range(range)float32100.0 300.0 ... 1.497e+05 1.499e+05
- units :
- meters
- standard_name :
- projection_range_coordinate
- long_name :
- range_to_measurement_volume
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
array([1.000e+02, 3.000e+02, 5.000e+02, ..., 1.495e+05, 1.497e+05, 1.499e+05], shape=(750,), dtype=float32) - bins(azimuth, range)float32dask.array<chunksize=(180, 375), meta=np.ndarray>
- units :
- meters
- standard_name :
- projection_range_coordinate
- long_name :
- range_to_measurement_volume
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
Array Chunk Bytes 1.03 MiB 263.67 kiB Shape (360, 750) (180, 375) Dask graph 4 chunks in 2 graph layers Data type float32 numpy.ndarray - gr(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- distance_from_radar
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - rays(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- ray_azimuth_angle
- long_name :
- azimuth_angle_from_true_north
- units :
- degrees
- axis :
- radial_azimuth_coordinate
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - x(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- axis :
- X
- long_name :
- Easting
- standard_name :
- projection_x_coordinate
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - y(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- axis :
- Y
- long_name :
- Northing
- standard_name :
- projection_y_coordinate
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - z(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- height_above_ground
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - altitude()float6499.5
- long_name :
- altitude
- units :
- meters
- standard_name :
- altitude
array(99.5)
- crs_wkt()int640
- crs_wkt :
- PROJCRS["AEQD centered at 50.73052N 7.071663E",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",50.73052,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",7.071663,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 :
- AEQD centered at 50.73052N 7.071663E
- grid_mapping_name :
- azimuthal_equidistant
- latitude_of_projection_origin :
- 50.73052
- longitude_of_projection_origin :
- 7.071663
- false_easting :
- 0.0
- false_northing :
- 0.0
array(0)
- latitude()float6450.73
- long_name :
- latitude
- units :
- degrees_north
- positive :
- up
- standard_name :
- latitude
array(50.73052)
- longitude()float647.072
- long_name :
- longitude
- units :
- degrees_east
- standard_name :
- longitude
array(7.071663)
- NOISE_LEVEL()float64-24.7
array(-24.7)
- sweep_mode()<U20'azimuth_surveillance'
array('azimuth_surveillance', dtype='<U20') - alpha()float640.28
array(0.28)
- CMAP(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- units :
- unitless
- long_name :
- Clutter Map
- standard_name :
- clutter_map
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - CMAP2(azimuth, range)uint8dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- unitless
- long_name :
- Clutter Map
- standard_name :
- clutter_map
- _Undetect :
- 0.0
- short_name :
- CMAP
Array Chunk Bytes 263.67 kiB 131.84 kiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type uint8 numpy.ndarray - DBTH(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- dBZ
- long_name :
- Total power H (uncorrected reflectivity)
- standard_name :
- radar_equivalent_reflectivity_factor_h
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - DBTV(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- dBZ
- long_name :
- Total power V (uncorrected reflectivity)
- standard_name :
- radar_equivalent_reflectivity_factor_v
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - DBZH(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- dBZ
- long_name :
- Equivalent reflectivity factor H
- standard_name :
- radar_equivalent_reflectivity_factor_h
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - DBZV(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- dBZ
- long_name :
- Equivalent reflectivity factor V
- standard_name :
- radar_equivalent_reflectivity_factor_v
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - dphi(azimuth)float64dask.array<chunksize=(180,), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.81 kiB 1.41 kiB Shape (360,) (180,) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - first(azimuth)float64dask.array<chunksize=(180,), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.81 kiB 1.41 kiB Shape (360,) (180,) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - first_idx(azimuth)int64dask.array<chunksize=(180,), meta=np.ndarray>
Array Chunk Bytes 2.81 kiB 1.41 kiB Shape (360,) (180,) Dask graph 2 chunks in 2 graph layers Data type int64 numpy.ndarray - follow_mode()<U7...
[1 values with dtype=<U7]
- KDP(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- deg/km
- units :
- degrees per kilometer
- long_name :
- Specific differential phase HV
- standard_name :
- radar_specific_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - KDP_LANC(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- radar_specific_differential_phase_hv
- long_name :
- Specific differential phase HV
- short_name :
- KDP
- units :
- degrees per kilometer
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - KDP_VULP(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- radar_specific_differential_phase_hv
- long_name :
- Specific differential phase HV
- short_name :
- KDP
- units :
- degrees per kilometer
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - last(azimuth)float64dask.array<chunksize=(180,), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.81 kiB 1.41 kiB Shape (360,) (180,) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - last_idx(azimuth)int64dask.array<chunksize=(180,), meta=np.ndarray>
Array Chunk Bytes 2.81 kiB 1.41 kiB Shape (360,) (180,) Dask graph 2 chunks in 2 graph layers Data type int64 numpy.ndarray - nyquist_velocity()float64...
- standard_name :
- nyquist_velocity
- units :
- m s-1
[1 values with dtype=float64]
- offset()float32...
[1 values with dtype=float32]
- offset_idx()int64...
[1 values with dtype=int64]
- phib(azimuth, range)float64dask.array<chunksize=(180, 741), meta=np.ndarray>
Array Chunk Bytes 2.06 MiB 1.02 MiB Shape (360, 750) (180, 741) Dask graph 4 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_CORR1(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_CORR2(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_CORR3(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_CORR4(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_OC1(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_OC2(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_OC3(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_OC4(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - prt_mode()<U7...
[1 values with dtype=<U7]
- RHOHV(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- units :
- unitless
- long_name :
- Correlation coefficient HV
- standard_name :
- radar_correlation_coefficient_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - RHOHV_NC(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- units :
- unitless
- _Undetect :
- 0.0
- unit :
- dBZ
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
- short_name :
- SNRH
- long_name :
- Correlation coefficient HV
- standard_name :
- radar_correlation_coefficient_hv
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - RSUM(azimuth, range)float64dask.array<chunksize=(360, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- dBZ
- long_name :
- Total power H (uncorrected reflectivity)
- standard_name :
- radar_equivalent_reflectivity_factor_h
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 2.06 MiB Shape (360, 750) (360, 750) Dask graph 1 chunks in 2 graph layers Data type float64 numpy.ndarray - SNRH(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- _Undetect :
- 0.0
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
- units :
- unitless
- standard_name :
- signal_noise_ratio_h
- long_name :
- Signal Noise Ratio H
- short_name :
- SNRH
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - start_range(azimuth)float32dask.array<chunksize=(360,), meta=np.ndarray>
Array Chunk Bytes 1.41 kiB 1.41 kiB Shape (360,) (360,) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - stop_range(azimuth)float32dask.array<chunksize=(360,), meta=np.ndarray>
Array Chunk Bytes 1.41 kiB 1.41 kiB Shape (360,) (360,) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - sweep_fixed_angle()float64...
[1 values with dtype=float64]
- sweep_number()int64...
[1 values with dtype=int64]
- SYSPHI1()float64...
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
[1 values with dtype=float64]
- SYSPHI2()float64...
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
[1 values with dtype=float64]
- SYSPHI3()float64...
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
[1 values with dtype=float64]
- SYSPHI4(azimuth)float64dask.array<chunksize=(360,), meta=np.ndarray>
Array Chunk Bytes 2.81 kiB 2.81 kiB Shape (360,) (360,) Dask graph 1 chunks in 2 graph layers Data type float64 numpy.ndarray - VRADH(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- m/s
- units :
- meters per seconds
- long_name :
- Radial velocity of scatterers away from instrument H
- standard_name :
- radial_velocity_of_scatterers_away_from_instrument_h
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - VRADV(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- m/s
- units :
- meters per second
- long_name :
- Radial velocity of scatterers away from instrument V
- standard_name :
- radial_velocity_of_scatterers_away_from_instrument_v
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - WRADH(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- m/s
- units :
- meters per seconds
- long_name :
- Doppler spectrum width H
- standard_name :
- radar_doppler_spectrum_width_h
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - WRADV(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- m/s
- units :
- meters per second
- long_name :
- Doppler spectrum width V
- standard_name :
- radar_doppler_spectrum_width_v
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - ZDR(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dB
- units :
- dB
- long_name :
- Log differential reflectivity H/V
- standard_name :
- radar_differential_reflectivity_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - AH(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- units :
- dB/km
- standard_name :
- specific_attenuation_h
- long_name :
- Specific attenuation H
- short_name :
- AH
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 79 graph layers Data type float64 numpy.ndarray - KDP_AH(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- deg/km
- units :
- degrees per kilometer
- long_name :
- Specific differential phase HV
- standard_name :
- radar_specific_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 84 graph layers Data type float64 numpy.ndarray - PHIDP_CORR5(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 89 graph layers Data type float64 numpy.ndarray
- source :
- gamic
- ant_gain_h :
- 44.0
- ant_gain_v :
- 44.0
- noise_power_h :
- -1.39495
- noise_power_v :
- -1.09706
- rx_loss_h :
- 0.73
- rx_loss_v :
- 0.73
fig = plt.figure(figsize=(6, 6))
ax = fig.add_subplot(111)
im = rp.plot_moment(phical.sel(alpha=0.28, method="nearest"), ax=ax)
Todo: check how to handle this!!!
Check the plot for different azimuth angles and start over from the beginning to iteratively find an adequate value for \(\alpha\).
An automated algorithm would try to minimize the \(\Delta\)-Sum (below).
Plotting different \(\phi_{DP}\) for Radar Domain#
fig = plt.figure(figsize=(10, 8))
fig.suptitle(swp.time.min().values.astype("<M8[s]"), fontsize=14)
ticks1 = np.arange(0, 50, 1)
norm1 = rp.get_discrete_norm(ticks1)
cmap = rp.get_discrete_cmap(ticks1, plt.cm.get_cmap("turbo"))
im1 = swp.PHIDP_OC1.wrl.vis.plot(
ax=221, fig=fig, norm=norm1, cmap=cmap, add_colorbar=False
)
t = plt.title(r"Uncorrected $\phi_{DP}$")
t.set_y(1.1)
im2 = swp.PHIDP_CORR1.ffill("range").wrl.vis.plot(
ax=222, fig=fig, cmap=cmap, norm=norm1, add_colorbar=False
)
t = plt.title(r"Thresholded $\phi_{DP}$")
t.set_y(1.1)
fig.subplots_adjust(wspace=0.35, hspace=0.3)
ticks2 = np.arange(-5, 11, 1)
im3 = swp.PHIDP_CORR2.ffill("range").wrl.vis.plot(
ax=223, fig=fig, norm=norm1, cmap=cmap, add_colorbar=False
)
t = plt.title(r"Corrected $\phi_{DP}$")
t.set_y(1.1)
im4 = phical.sel(alpha=0.28, method="nearest").wrl.vis.plot(
ax=224, fig=fig, cmap=cmap, norm=norm1, add_colorbar=False
)
t = plt.title(r"Calculated $\phi_{DP}$")
t.set_y(1.1)
# add colorbar
fig.subplots_adjust(right=0.8)
cbar_ax = fig.add_axes([0.825, 0.1, 0.025, 0.8])
cbar = fig.colorbar(im1, cax=cbar_ax, norm=norm1, label=r"$\phi_{DP}$ (deg)")
cbar.locator = plt.FixedLocator(ticks1)
cbar.update_ticks()
# make some space between subplots
fig.subplots_adjust(wspace=0.3, hspace=0.3)
plt.show()
Calculation of \(\Delta\)-Sum#
# calculate delta sum
diff = np.abs(phical - swp.PHIDP_CORR2)
diffsel = diff.where(
(diff.range > cphase.start_range) & (diff.range < cphase.stop_range)
)
delta = diffsel.sum("range", skipna=True)
display(delta)
<xarray.DataArray (azimuth: 360, alpha: 25)> Size: 72kB
dask.array<sum-aggregate, shape=(360, 25), dtype=float64, chunksize=(90, 25), chunktype=numpy.ndarray>
Coordinates:
* azimuth (azimuth) float64 3kB 0.5 1.5 2.5 3.5 ... 357.5 358.5 359.5
elevation (azimuth) float64 3kB 0.9998 0.9998 0.9998 ... 0.9998 0.9998
time (azimuth) datetime64[ns] 3kB 2017-08-10T11:03:42.699000 ... ...
* alpha (alpha) float64 200B 0.1 0.11 0.12 0.13 ... 0.31 0.32 0.33 0.34
altitude float64 8B 99.5
crs_wkt int64 8B 0
latitude float64 8B 50.73
longitude float64 8B 7.072
NOISE_LEVEL float64 8B -24.7
sweep_mode <U20 80B 'azimuth_surveillance'
Attributes:
format: UV16
is_dft: 0
unit: deg
units: degrees
long_name: Differential phase HV
standard_name: radar_differential_phase_hv
_Undetect: 0.0- azimuth: 360
- alpha: 25
- dask.array<chunksize=(90, 25), meta=np.ndarray>
Array Chunk Bytes 70.31 kiB 17.58 kiB Shape (360, 25) (90, 25) Dask graph 4 chunks in 103 graph layers Data type float64 numpy.ndarray - azimuth(azimuth)float640.5 1.5 2.5 ... 357.5 358.5 359.5
- standard_name :
- ray_azimuth_angle
- long_name :
- azimuth_angle_from_true_north
- units :
- degrees
- axis :
- radial_azimuth_coordinate
array([ 0.5, 1.5, 2.5, ..., 357.5, 358.5, 359.5], shape=(360,))
- elevation(azimuth)float640.9998 0.9998 ... 0.9998 0.9998
- standard_name :
- ray_elevation_angle
- long_name :
- elevation_angle_from_horizontal_plane
- units :
- degrees
- axis :
- radial_elevation_coordinate
array([0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, ... 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586]) - time(azimuth)datetime64[ns]2017-08-10T11:03:42.699000 ... 2...
- standard_name :
- time
array(['2017-08-10T11:03:42.699000000', '2017-08-10T11:03:42.800000000', '2017-08-10T11:03:42.902000000', '2017-08-10T11:03:43.001000000', '2017-08-10T11:03:43.102000000', '2017-08-10T11:03:43.202000000', '2017-08-10T11:03:43.302000000', '2017-08-10T11:03:43.402000000', '2017-08-10T11:03:43.504000000', '2017-08-10T11:03:43.603000000', '2017-08-10T11:03:43.705000000', '2017-08-10T11:03:43.803000000', '2017-08-10T11:03:43.905000000', '2017-08-10T11:03:44.008000000', '2017-08-10T11:03:44.108000000', '2017-08-10T11:03:44.208000000', '2017-08-10T11:03:44.308000000', '2017-08-10T11:03:44.408000000', '2017-08-10T11:03:44.510000000', '2017-08-10T11:03:44.608000000', '2017-08-10T11:03:44.710000000', '2017-08-10T11:03:44.809000000', '2017-08-10T11:03:44.910000000', '2017-08-10T11:03:45.010000000', '2017-08-10T11:03:45.110000000', '2017-08-10T11:03:45.210000000', '2017-08-10T11:03:45.314000000', '2017-08-10T11:03:45.414000000', '2017-08-10T11:03:45.514000000', '2017-08-10T11:03:45.614000000', '2017-08-10T11:03:45.716000000', '2017-08-10T11:03:45.814000000', '2017-08-10T11:03:45.916000000', '2017-08-10T11:03:46.016000000', '2017-08-10T11:03:46.116000000', '2017-08-10T11:03:46.216000000', '2017-08-10T11:03:46.318000000', '2017-08-10T11:03:46.416000000', '2017-08-10T11:03:46.518000000', '2017-08-10T11:03:46.617000000', ... '2017-08-10T11:03:38.879000000', '2017-08-10T11:03:38.982000000', '2017-08-10T11:03:39.082000000', '2017-08-10T11:03:39.182000000', '2017-08-10T11:03:39.282000000', '2017-08-10T11:03:39.382000000', '2017-08-10T11:03:39.484000000', '2017-08-10T11:03:39.584000000', '2017-08-10T11:03:39.684000000', '2017-08-10T11:03:39.784000000', '2017-08-10T11:03:39.884000000', '2017-08-10T11:03:39.984000000', '2017-08-10T11:03:40.086000000', '2017-08-10T11:03:40.184000000', '2017-08-10T11:03:40.288000000', '2017-08-10T11:03:40.388000000', '2017-08-10T11:03:40.490000000', '2017-08-10T11:03:40.590000000', '2017-08-10T11:03:40.690000000', '2017-08-10T11:03:40.790000000', '2017-08-10T11:03:40.890000000', '2017-08-10T11:03:40.990000000', '2017-08-10T11:03:41.091000000', '2017-08-10T11:03:41.191000000', '2017-08-10T11:03:41.291000000', '2017-08-10T11:03:41.391000000', '2017-08-10T11:03:41.491000000', '2017-08-10T11:03:41.591000000', '2017-08-10T11:03:41.695000000', '2017-08-10T11:03:41.795000000', '2017-08-10T11:03:41.897000000', '2017-08-10T11:03:41.995000000', '2017-08-10T11:03:42.097000000', '2017-08-10T11:03:42.197000000', '2017-08-10T11:03:42.297000000', '2017-08-10T11:03:42.397000000', '2017-08-10T11:03:42.497000000', '2017-08-10T11:03:42.597000000'], dtype='datetime64[ns]') - alpha(alpha)float640.1 0.11 0.12 ... 0.32 0.33 0.34
array([0.1 , 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2 , 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3 , 0.31, 0.32, 0.33, 0.34]) - altitude()float6499.5
- long_name :
- altitude
- units :
- meters
- standard_name :
- altitude
array(99.5)
- crs_wkt()int640
- crs_wkt :
- PROJCRS["AEQD centered at 50.73052N 7.071663E",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",50.73052,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",7.071663,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 :
- AEQD centered at 50.73052N 7.071663E
- grid_mapping_name :
- azimuthal_equidistant
- latitude_of_projection_origin :
- 50.73052
- longitude_of_projection_origin :
- 7.071663
- false_easting :
- 0.0
- false_northing :
- 0.0
array(0)
- latitude()float6450.73
- long_name :
- latitude
- units :
- degrees_north
- positive :
- up
- standard_name :
- latitude
array(50.73052)
- longitude()float647.072
- long_name :
- longitude
- units :
- degrees_east
- standard_name :
- longitude
array(7.071663)
- NOISE_LEVEL()float64-24.7
array(-24.7)
- sweep_mode()<U20'azimuth_surveillance'
array('azimuth_surveillance', dtype='<U20')
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
fig = plt.figure(figsize=(10, 8))
ax1 = plt.subplot(111, projection="polar")
# set the lable go clockwise and start from the top
ax1.set_theta_zero_location("N")
# clockwise
ax1.set_theta_direction(-1)
theta = np.linspace(0, 2 * np.pi, num=360, endpoint=False)
ax1.plot(theta, delta, linewidth=1) # , color="b")
t = ax1.set_title(r"$\Delta$-Sum")
t.set_y(1.1)
ax1.set_rmax(1000)
xticks = ax1.set_xticks(np.pi / 180.0 * np.linspace(0, 360, 36, endpoint=False))
Apply attenuation correction#
Finally, after retrieval of the fitting \(\alpha\) we correct \(Z_H\) and \(Z_{DR}\) for attenuation.
uh = "DBTH"
zh = "DBZH"
zdr = "ZDR"
phi = "PHIDP_CORR5"
with xr.set_options(keep_attrs=True):
uhcorr = swp[uh] + swp.alpha * swp[phi]
uhcorr.name = f"{swp[uh].name}_{swp[phi].name.split('_')[-1]}"
zhcorr = swp[zh] + swp.alpha * swp[phi]
zhcorr.name = f"{swp[zh].name}_{swp[phi].name.split('_')[-1]}"
zdrcorr = swp[zdr] + betax * swp[phi]
zdrcorr.name = f"{swp[zdr].name}_{swp[phi].name.split('_')[-1]}"
swp = swp.assign({uhcorr.name: uhcorr, zhcorr.name: zhcorr, zdrcorr.name: zdrcorr})
display(swp)
<xarray.Dataset> Size: 83MB
Dimensions: (azimuth: 360, range: 750)
Coordinates: (12/17)
* azimuth (azimuth) float64 3kB 0.5 1.5 2.5 ... 357.5 358.5 359.5
elevation (azimuth) float64 3kB 0.9998 0.9998 ... 0.9998 0.9998
time (azimuth) datetime64[ns] 3kB 2017-08-10T11:03:42.69900...
* range (range) float32 3kB 100.0 300.0 ... 1.497e+05 1.499e+05
bins (azimuth, range) float32 1MB dask.array<chunksize=(180, 375), meta=np.ndarray>
gr (azimuth, range) float64 2MB dask.array<chunksize=(90, 375), meta=np.ndarray>
... ...
crs_wkt int64 8B 0
latitude float64 8B 50.73
longitude float64 8B 7.072
NOISE_LEVEL float64 8B -24.7
sweep_mode <U20 80B 'azimuth_surveillance'
alpha float64 8B 0.28
Data variables: (12/52)
CMAP (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
CMAP2 (azimuth, range) uint8 270kB dask.array<chunksize=(180, 750), meta=np.ndarray>
DBTH (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
DBTV (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
DBZH (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
DBZV (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
... ...
AH (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
KDP_AH (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
PHIDP_CORR5 (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
DBTH_CORR5 (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
DBZH_CORR5 (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
ZDR_CORR5 (azimuth, range) float64 2MB dask.array<chunksize=(180, 750), meta=np.ndarray>
Attributes:
source: gamic
ant_gain_h: 44.0
ant_gain_v: 44.0
noise_power_h: -1.39495
noise_power_v: -1.09706
rx_loss_h: 0.73
rx_loss_v: 0.73- azimuth: 360
- range: 750
- azimuth(azimuth)float640.5 1.5 2.5 ... 357.5 358.5 359.5
- standard_name :
- ray_azimuth_angle
- long_name :
- azimuth_angle_from_true_north
- units :
- degrees
- axis :
- radial_azimuth_coordinate
array([ 0.5, 1.5, 2.5, ..., 357.5, 358.5, 359.5], shape=(360,))
- elevation(azimuth)float640.9998 0.9998 ... 0.9998 0.9998
- standard_name :
- ray_elevation_angle
- long_name :
- elevation_angle_from_horizontal_plane
- units :
- degrees
- axis :
- radial_elevation_coordinate
array([0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, ... 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586, 0.99975586]) - time(azimuth)datetime64[ns]2017-08-10T11:03:42.699000 ... 2...
- standard_name :
- time
array(['2017-08-10T11:03:42.699000000', '2017-08-10T11:03:42.800000000', '2017-08-10T11:03:42.902000000', '2017-08-10T11:03:43.001000000', '2017-08-10T11:03:43.102000000', '2017-08-10T11:03:43.202000000', '2017-08-10T11:03:43.302000000', '2017-08-10T11:03:43.402000000', '2017-08-10T11:03:43.504000000', '2017-08-10T11:03:43.603000000', '2017-08-10T11:03:43.705000000', '2017-08-10T11:03:43.803000000', '2017-08-10T11:03:43.905000000', '2017-08-10T11:03:44.008000000', '2017-08-10T11:03:44.108000000', '2017-08-10T11:03:44.208000000', '2017-08-10T11:03:44.308000000', '2017-08-10T11:03:44.408000000', '2017-08-10T11:03:44.510000000', '2017-08-10T11:03:44.608000000', '2017-08-10T11:03:44.710000000', '2017-08-10T11:03:44.809000000', '2017-08-10T11:03:44.910000000', '2017-08-10T11:03:45.010000000', '2017-08-10T11:03:45.110000000', '2017-08-10T11:03:45.210000000', '2017-08-10T11:03:45.314000000', '2017-08-10T11:03:45.414000000', '2017-08-10T11:03:45.514000000', '2017-08-10T11:03:45.614000000', '2017-08-10T11:03:45.716000000', '2017-08-10T11:03:45.814000000', '2017-08-10T11:03:45.916000000', '2017-08-10T11:03:46.016000000', '2017-08-10T11:03:46.116000000', '2017-08-10T11:03:46.216000000', '2017-08-10T11:03:46.318000000', '2017-08-10T11:03:46.416000000', '2017-08-10T11:03:46.518000000', '2017-08-10T11:03:46.617000000', ... '2017-08-10T11:03:38.879000000', '2017-08-10T11:03:38.982000000', '2017-08-10T11:03:39.082000000', '2017-08-10T11:03:39.182000000', '2017-08-10T11:03:39.282000000', '2017-08-10T11:03:39.382000000', '2017-08-10T11:03:39.484000000', '2017-08-10T11:03:39.584000000', '2017-08-10T11:03:39.684000000', '2017-08-10T11:03:39.784000000', '2017-08-10T11:03:39.884000000', '2017-08-10T11:03:39.984000000', '2017-08-10T11:03:40.086000000', '2017-08-10T11:03:40.184000000', '2017-08-10T11:03:40.288000000', '2017-08-10T11:03:40.388000000', '2017-08-10T11:03:40.490000000', '2017-08-10T11:03:40.590000000', '2017-08-10T11:03:40.690000000', '2017-08-10T11:03:40.790000000', '2017-08-10T11:03:40.890000000', '2017-08-10T11:03:40.990000000', '2017-08-10T11:03:41.091000000', '2017-08-10T11:03:41.191000000', '2017-08-10T11:03:41.291000000', '2017-08-10T11:03:41.391000000', '2017-08-10T11:03:41.491000000', '2017-08-10T11:03:41.591000000', '2017-08-10T11:03:41.695000000', '2017-08-10T11:03:41.795000000', '2017-08-10T11:03:41.897000000', '2017-08-10T11:03:41.995000000', '2017-08-10T11:03:42.097000000', '2017-08-10T11:03:42.197000000', '2017-08-10T11:03:42.297000000', '2017-08-10T11:03:42.397000000', '2017-08-10T11:03:42.497000000', '2017-08-10T11:03:42.597000000'], dtype='datetime64[ns]') - range(range)float32100.0 300.0 ... 1.497e+05 1.499e+05
- units :
- meters
- standard_name :
- projection_range_coordinate
- long_name :
- range_to_measurement_volume
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
array([1.000e+02, 3.000e+02, 5.000e+02, ..., 1.495e+05, 1.497e+05, 1.499e+05], shape=(750,), dtype=float32) - bins(azimuth, range)float32dask.array<chunksize=(180, 375), meta=np.ndarray>
- units :
- meters
- standard_name :
- projection_range_coordinate
- long_name :
- range_to_measurement_volume
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
Array Chunk Bytes 1.03 MiB 263.67 kiB Shape (360, 750) (180, 375) Dask graph 4 chunks in 2 graph layers Data type float32 numpy.ndarray - gr(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- distance_from_radar
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - rays(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- ray_azimuth_angle
- long_name :
- azimuth_angle_from_true_north
- units :
- degrees
- axis :
- radial_azimuth_coordinate
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - x(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- axis :
- X
- long_name :
- Easting
- standard_name :
- projection_x_coordinate
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - y(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- axis :
- Y
- long_name :
- Northing
- standard_name :
- projection_y_coordinate
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - z(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- height_above_ground
- units :
- metre
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - altitude()float6499.5
- long_name :
- altitude
- units :
- meters
- standard_name :
- altitude
array(99.5)
- crs_wkt()int640
- crs_wkt :
- PROJCRS["AEQD centered at 50.73052N 7.071663E",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",50.73052,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",7.071663,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 :
- AEQD centered at 50.73052N 7.071663E
- grid_mapping_name :
- azimuthal_equidistant
- latitude_of_projection_origin :
- 50.73052
- longitude_of_projection_origin :
- 7.071663
- false_easting :
- 0.0
- false_northing :
- 0.0
array(0)
- latitude()float6450.73
- long_name :
- latitude
- units :
- degrees_north
- positive :
- up
- standard_name :
- latitude
array(50.73052)
- longitude()float647.072
- long_name :
- longitude
- units :
- degrees_east
- standard_name :
- longitude
array(7.071663)
- NOISE_LEVEL()float64-24.7
array(-24.7)
- sweep_mode()<U20'azimuth_surveillance'
array('azimuth_surveillance', dtype='<U20') - alpha()float640.28
array(0.28)
- CMAP(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- units :
- unitless
- long_name :
- Clutter Map
- standard_name :
- clutter_map
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - CMAP2(azimuth, range)uint8dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- unitless
- long_name :
- Clutter Map
- standard_name :
- clutter_map
- _Undetect :
- 0.0
- short_name :
- CMAP
Array Chunk Bytes 263.67 kiB 131.84 kiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type uint8 numpy.ndarray - DBTH(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- dBZ
- long_name :
- Total power H (uncorrected reflectivity)
- standard_name :
- radar_equivalent_reflectivity_factor_h
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - DBTV(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- dBZ
- long_name :
- Total power V (uncorrected reflectivity)
- standard_name :
- radar_equivalent_reflectivity_factor_v
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - DBZH(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- dBZ
- long_name :
- Equivalent reflectivity factor H
- standard_name :
- radar_equivalent_reflectivity_factor_h
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - DBZV(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- dBZ
- long_name :
- Equivalent reflectivity factor V
- standard_name :
- radar_equivalent_reflectivity_factor_v
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - dphi(azimuth)float64dask.array<chunksize=(180,), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.81 kiB 1.41 kiB Shape (360,) (180,) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - first(azimuth)float64dask.array<chunksize=(180,), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.81 kiB 1.41 kiB Shape (360,) (180,) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - first_idx(azimuth)int64dask.array<chunksize=(180,), meta=np.ndarray>
Array Chunk Bytes 2.81 kiB 1.41 kiB Shape (360,) (180,) Dask graph 2 chunks in 2 graph layers Data type int64 numpy.ndarray - follow_mode()<U7...
[1 values with dtype=<U7]
- KDP(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- deg/km
- units :
- degrees per kilometer
- long_name :
- Specific differential phase HV
- standard_name :
- radar_specific_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - KDP_LANC(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- radar_specific_differential_phase_hv
- long_name :
- Specific differential phase HV
- short_name :
- KDP
- units :
- degrees per kilometer
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - KDP_VULP(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- standard_name :
- radar_specific_differential_phase_hv
- long_name :
- Specific differential phase HV
- short_name :
- KDP
- units :
- degrees per kilometer
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - last(azimuth)float64dask.array<chunksize=(180,), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.81 kiB 1.41 kiB Shape (360,) (180,) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - last_idx(azimuth)int64dask.array<chunksize=(180,), meta=np.ndarray>
Array Chunk Bytes 2.81 kiB 1.41 kiB Shape (360,) (180,) Dask graph 2 chunks in 2 graph layers Data type int64 numpy.ndarray - nyquist_velocity()float64...
- standard_name :
- nyquist_velocity
- units :
- m s-1
[1 values with dtype=float64]
- offset()float32...
[1 values with dtype=float32]
- offset_idx()int64...
[1 values with dtype=int64]
- phib(azimuth, range)float64dask.array<chunksize=(180, 741), meta=np.ndarray>
Array Chunk Bytes 2.06 MiB 1.02 MiB Shape (360, 750) (180, 741) Dask graph 4 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_CORR1(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_CORR2(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_CORR3(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_CORR4(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_OC1(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_OC2(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_OC3(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - PHIDP_OC4(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - prt_mode()<U7...
[1 values with dtype=<U7]
- RHOHV(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- units :
- unitless
- long_name :
- Correlation coefficient HV
- standard_name :
- radar_correlation_coefficient_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - RHOHV_NC(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- units :
- unitless
- _Undetect :
- 0.0
- unit :
- dBZ
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
- short_name :
- SNRH
- long_name :
- Correlation coefficient HV
- standard_name :
- radar_correlation_coefficient_hv
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - RSUM(azimuth, range)float64dask.array<chunksize=(360, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- units :
- dBZ
- long_name :
- Total power H (uncorrected reflectivity)
- standard_name :
- radar_equivalent_reflectivity_factor_h
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 2.06 MiB Shape (360, 750) (360, 750) Dask graph 1 chunks in 2 graph layers Data type float64 numpy.ndarray - SNRH(azimuth, range)float64dask.array<chunksize=(90, 375), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dBZ
- _Undetect :
- 0.0
- axis :
- radial_range_coordinate
- meters_between_gates :
- 200.0
- spacing_is_constant :
- true
- meters_to_center_of_first_gate :
- 100.0
- units :
- unitless
- standard_name :
- signal_noise_ratio_h
- long_name :
- Signal Noise Ratio H
- short_name :
- SNRH
Array Chunk Bytes 2.06 MiB 263.67 kiB Shape (360, 750) (90, 375) Dask graph 8 chunks in 2 graph layers Data type float64 numpy.ndarray - start_range(azimuth)float32dask.array<chunksize=(360,), meta=np.ndarray>
Array Chunk Bytes 1.41 kiB 1.41 kiB Shape (360,) (360,) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - stop_range(azimuth)float32dask.array<chunksize=(360,), meta=np.ndarray>
Array Chunk Bytes 1.41 kiB 1.41 kiB Shape (360,) (360,) Dask graph 1 chunks in 2 graph layers Data type float32 numpy.ndarray - sweep_fixed_angle()float64...
[1 values with dtype=float64]
- sweep_number()int64...
[1 values with dtype=int64]
- SYSPHI1()float64...
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
[1 values with dtype=float64]
- SYSPHI2()float64...
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
[1 values with dtype=float64]
- SYSPHI3()float64...
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
[1 values with dtype=float64]
- SYSPHI4(azimuth)float64dask.array<chunksize=(360,), meta=np.ndarray>
Array Chunk Bytes 2.81 kiB 2.81 kiB Shape (360,) (360,) Dask graph 1 chunks in 2 graph layers Data type float64 numpy.ndarray - VRADH(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- m/s
- units :
- meters per seconds
- long_name :
- Radial velocity of scatterers away from instrument H
- standard_name :
- radial_velocity_of_scatterers_away_from_instrument_h
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - VRADV(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- m/s
- units :
- meters per second
- long_name :
- Radial velocity of scatterers away from instrument V
- standard_name :
- radial_velocity_of_scatterers_away_from_instrument_v
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - WRADH(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- m/s
- units :
- meters per seconds
- long_name :
- Doppler spectrum width H
- standard_name :
- radar_doppler_spectrum_width_h
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - WRADV(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- m/s
- units :
- meters per second
- long_name :
- Doppler spectrum width V
- standard_name :
- radar_doppler_spectrum_width_v
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - ZDR(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- dB
- units :
- dB
- long_name :
- Log differential reflectivity H/V
- standard_name :
- radar_differential_reflectivity_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 2 graph layers Data type float64 numpy.ndarray - AH(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- units :
- dB/km
- standard_name :
- specific_attenuation_h
- long_name :
- Specific attenuation H
- short_name :
- AH
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 79 graph layers Data type float64 numpy.ndarray - KDP_AH(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV8
- is_dft :
- 0
- unit :
- deg/km
- units :
- degrees per kilometer
- long_name :
- Specific differential phase HV
- standard_name :
- radar_specific_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 84 graph layers Data type float64 numpy.ndarray - PHIDP_CORR5(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- format :
- UV16
- is_dft :
- 0
- unit :
- deg
- units :
- degrees
- long_name :
- Differential phase HV
- standard_name :
- radar_differential_phase_hv
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 89 graph layers Data type float64 numpy.ndarray - DBTH_CORR5(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- is_dft :
- 0
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 92 graph layers Data type float64 numpy.ndarray - DBZH_CORR5(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- is_dft :
- 0
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 94 graph layers Data type float64 numpy.ndarray - ZDR_CORR5(azimuth, range)float64dask.array<chunksize=(180, 750), meta=np.ndarray>
- is_dft :
- 0
- _Undetect :
- 0.0
Array Chunk Bytes 2.06 MiB 1.03 MiB Shape (360, 750) (180, 750) Dask graph 2 chunks in 93 graph layers Data type float64 numpy.ndarray
- source :
- gamic
- ant_gain_h :
- 44.0
- ant_gain_v :
- 44.0
- noise_power_h :
- -1.39495
- noise_power_v :
- -1.09706
- rx_loss_h :
- 0.73
- rx_loss_v :
- 0.73
Plot Uncorrected vs Corrected#
corr = 5
fig, ((ax1, ax2, ax3), (ax4, ax5, ax6), (ax7, ax8, ax9)) = plt.subplots(
3, 3, sharey=True, sharex=True, figsize=(12, 10)
)
rp.plot_moment(swp.DBTH, ax=ax1)
rp.plot_moment(swp[f"DBTH_CORR{corr}"], ax=ax2)
rp.plot_moment(swp[f"DBTH_CORR{corr}"] - swp.DBTH, ax=ax3)
rp.plot_moment(swp.DBZH, ax=ax4)
rp.plot_moment(swp[f"DBZH_CORR{corr}"], ax=ax5)
rp.plot_moment(swp[f"DBZH_CORR{corr}"] - swp.DBZH, ax=ax6)
rp.plot_moment(swp.ZDR, ax=ax7)
rp.plot_moment(swp[f"ZDR_CORR{corr}"], ax=ax8)
rp.plot_moment(swp[f"ZDR_CORR{corr}"] - swp.ZDR, ax=ax9)
plt.tight_layout()
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(
2, 2, sharex=True, sharey=True, figsize=(12, 9)
)
rp.plot_moment(swp.KDP_AH, ax=ax1)
rp.plot_moment(swp.KDP_VULP, ax=ax2)
rp.plot_moment(swp.KDP_LANC.fillna(0), ax=ax3)
rp.plot_moment(swp.KDP, ax=ax4)
plt.tight_layout()
Save data#
dim0 = "azimuth"
dtime = swp.time.min(dim0).dt.floor("5min").dt.strftime("%Y%m%dT%H%M").values
stage = "06_zphi"
fname = rp.data_path() / "lecture" / f"{stage}_{dtime}.zarr"
print(fname)
swp.to_zarr(fname, mode="w", zarr_version=2)
/builds/_NRRzFk9l/0/grp_meteo/radar/radarpolarimetry/data/lecture/06_zphi_20170810T1100.zarr
<xarray.backends.zarr.ZarrStore at 0x7f3a9228b740>