Plot Radar Cross-Sections¶
This notebook demonstrates how to read the radar files from the IMPACTS DAAC and make basic time-height plots of the flight legs¶
Begin by importing all the necessary libraries¶
[2]:
import sys
sys.path.append("../../src")
import numpy as np
import matplotlib.pyplot as plt
from impacts_tools import er2
%matplotlib inline
[3]:
exrad_filepath = 'IMPACTS2020_EXRAD_L1B_RevC_20200207.h5'
hiwrap_filepath = 'IMPACTS2020_HIWRAP_l1B_RevB_20200207.h5'
vad_filepath = 'IMPACTS_EXRAD-VAD_L3_20200207T150806_to_20200207T152406_synthetic_multiscan_VAD_analysis_v01r02.nc'
[5]:
# load the exrad data as an IMPACTS_tools Exrad data object
exrad = er2.Exrad(exrad_filepath)
# the Exrad object stores the instrument data as an XArray dataset in a 'data' property
exrad.data
[5]:
<xarray.Dataset> Dimensions: (range: 886, time: 84780) Coordinates: * range (range) float32 5.003e+03 5.022e+03 ... 2.159e+04 height (range, time) float32 1.243e+04 ... -1.422e+04 * time (time) datetime64[ns] 2020-02-07T12:22:26.500000 .... distance (time) float32 58.62 117.2 ... 4.334e+06 4.334e+06 lat (time) float32 33.33 33.33 33.33 ... 32.39 32.39 lon (time) float32 -79.41 -79.41 -79.41 ... -80.54 -80.54 Data variables: (12/20) dbz (range, time) float32 nan -15.35 -15.53 ... nan nan vel (range, time) float32 nan nan nan nan ... nan nan nan width (range, time) float32 nan nan nan nan ... nan nan nan vel_horiz_offset (range, time) float32 nan nan nan nan ... nan nan nan vel_nubf_offset (range, time) float32 nan nan nan nan ... nan nan nan mask_copol (range, time) int32 0 1 1 2 3 3 3 3 ... 0 0 0 0 0 0 0 ... ... er2_drift (time) float32 -0.1 -0.1 -0.05256 ... 2.8 2.9 3.0 er2_EastVel (time) float32 182.0 182.0 182.0 ... -45.23 -45.42 er2_NorthVel (time) float32 147.9 147.9 147.9 ... -26.45 -26.33 er2_upVel (time) float32 7.425 7.269 7.37 ... -12.42 -12.57 er2_track (time) float32 50.9 50.9 50.9 ... 239.5 239.7 239.9 er2_motion (time) float32 0.1638 0.3747 0.4368 ... 4.26 3.567 Attributes: (12/20) Experiment: IMPACTS2020 Date: 20200207 Aircraft: NASA ER-2 Radar Name: EXRAD Data Contact: Matthew L. Walker McLinden, NAS... Instrument PI: Gerry Heymsfield, NASA/GSFC ... ... Radar Transmit Frequency (Hz): [9.624e+09] Radar Transmit Wavelength (m): [0.03117207] Range Gate Spacing (m): 18.737305 Nominal Antenna Pointing: Nadir PRI: 200 us / 250 us staggered vertical_resolution: 110.0
xarray.Dataset
- range: 886
- time: 84780
- range(range)float325.003e+03 5.022e+03 ... 2.159e+04
array([ 5002.9126, 5021.65 , 5040.3877, ..., 21548.125 , 21566.863 , 21585.6 ], dtype=float32)
- height(range, time)float321.243e+04 1.243e+04 ... -1.422e+04
- description :
- Height of each radar range gate
- units :
- m
array([[ 12432.6875, 12432.6875, 12432.6875, ..., 2362.5874, 2362.5874, 2362.5874], [ 12413.949 , 12413.949 , 12413.949 , ..., 2343.85 , 2343.85 , 2343.85 ], [ 12395.212 , 12395.212 , 12395.212 , ..., 2325.1123, 2325.1123, 2325.1123], ..., [ -4112.5254, -4112.5254, -4112.5254, ..., -14182.625 , -14182.625 , -14182.625 ], [ -4131.2637, -4131.2637, -4131.2637, ..., -14201.363 , -14201.363 , -14201.363 ], [ -4150. , -4150. , -4150. , ..., -14220.1 , -14220.1 , -14220.1 ]], dtype=float32)
- time(time)datetime64[ns]2020-02-07T12:22:26.500000 ... 2...
array(['2020-02-07T12:22:26.500000000', '2020-02-07T12:22:26.750000000', '2020-02-07T12:22:27.000000000', ..., '2020-02-07T18:15:40.750000000', '2020-02-07T18:15:41.000000000', '2020-02-07T18:15:41.250000000'], dtype='datetime64[ns]')
- distance(time)float3258.62 117.2 ... 4.334e+06 4.334e+06
- description :
- Nominal aircraft travel distance estimated by cumulative summing instantaneous velocities.
- units :
- meters
array([5.862500e+01, 1.172500e+02, 1.758750e+02, ..., 4.333733e+06, 4.333746e+06, 4.333759e+06], dtype=float32)
- lat(time)float3233.33 33.33 33.33 ... 32.39 32.39
- description :
- Latitude
- units :
- degrees
array([33.32542 , 33.32575 , 33.326084, ..., 32.391685, 32.39163 , 32.391563], dtype=float32)
- lon(time)float32-79.41 -79.41 ... -80.54 -80.54
- description :
- Longitude
- units :
- degrees
array([-79.41105 , -79.41069 , -79.41014 , ..., -80.538246, -80.538475, -80.53868 ], dtype=float32)
- dbz(range, time)float32nan -15.35 -15.53 ... nan nan nan
- description :
- Equivalent reflectivity factor in dB with 1-sigma noise threshold applied. |K|^2 = 0.92
- units :
- 10*log10(mm^6/m^3)
array([[ nan, -15.345828, -15.526645, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], dtype=float32)
- vel(range, time)float32nan nan nan nan ... nan nan nan nan
- description :
- Doppler velocity corrected to account for intrusion of horizontal reanalysis winds and nonuniform beam filling (NUBF)
- units :
- m/s
array([[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], dtype=float32)
- width(range, time)float32nan nan nan nan ... nan nan nan nan
- description :
- Doppler velocity spectrum width estimate including aircraft motion. 1-sigma noise threshold applied.
- units :
- m/s
array([[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], dtype=float32)
- vel_horiz_offset(range, time)float32nan nan nan nan ... nan nan nan nan
- description :
- The horizontal wind offset used to correct Doppler velocity [Vel_corr = Vel_uncorr - nubf_offset - horizwind_offset]
- units :
- m/s
array([[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], dtype=float32)
- vel_nubf_offset(range, time)float32nan nan nan nan ... nan nan nan nan
- description :
- The nonuniform beam filling (NUBF) offset used to correct Doppler velocity [Vel_corr = Vel_uncorr - nubf_offset - horizwind_offset]
- units :
- m/s
array([[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], dtype=float32)
- mask_copol(range, time)int320 1 1 2 3 3 3 3 ... 0 0 0 0 0 0 0 0
- description :
- Co-polarization SNR Mask: (Mask >= #) corresponds with (SNR > # sigma noise)
array([[0, 1, 1, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], ..., [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0]], dtype=int32)
- horizontal_resolution(range)float32486.0 487.0 ... 1.285e+03 1.286e+03
- description :
- Approximate horizontal resolution defined as width of spatial weighting after averaging as a function of radar range
- units :
- meters
array([ 486., 487., 487., 487., 487., 489., 489., 490., 490., 490., 490., 492., 492., 493., 493., 493., 495., 495., 495., 495., 496., 496., 498., 498., 498., 498., 499., 501., 501., 501., 501., 503., 503., 504., 504., 504., 506., 506., 506., 507., 507., 509., 509., 509., 509., 510., 512., 512., 512., 512., 514., 514., 515., 515., 515., 517., 517., 517., 518., 518., 520., 520., 520., 522., 523., 523., 523., 523., 525., 525., 525., 526., 528., 528., 528., 528., 530., 531., 531., 531., 533., 533., 533., 534., 534., 536., 536., 536., 538., 538., 539., 539., 541., 541., 541., 541., 542., 544., 544., 544., 546., 546., 547., 547., 549., 549., 549., 551., 551., 552., 552., 554., 554., 554., 556., 557., 557., 557., 557., 559., 559., 559., 560., 562., 562., 562., 564., 564., 565., 565., 567., 567., 567., 569., 570., 570., 572., 572., 572., 574., 574., 575., 575., 577., 577., 577., 579., 580., 580., 580., 582., 582., 582., 583., 585., 585., 585., 587., 587., 589., 590., 590., 590., 592., 592., 592., 593., 595., 595., 595., 597., 597., 598., 600., 600., 600., 602., 602., 602., 603., ... 1108., 1108., 1109., 1111., 1111., 1113., 1113., 1115., 1116., 1116., 1118., 1118., 1120., 1120., 1122., 1123., 1123., 1125., 1125., 1127., 1127., 1128., 1130., 1130., 1132., 1132., 1134., 1134., 1137., 1137., 1137., 1139., 1139., 1141., 1142., 1144., 1144., 1146., 1146., 1146., 1149., 1149., 1151., 1151., 1153., 1153., 1155., 1156., 1156., 1158., 1158., 1160., 1160., 1161., 1163., 1163., 1165., 1165., 1167., 1168., 1168., 1170., 1170., 1172., 1172., 1174., 1175., 1177., 1177., 1177., 1179., 1179., 1182., 1182., 1184., 1184., 1186., 1186., 1187., 1189., 1189., 1191., 1191., 1193., 1193., 1194., 1196., 1196., 1198., 1198., 1200., 1201., 1201., 1203., 1203., 1205., 1205., 1208., 1208., 1210., 1210., 1210., 1212., 1212., 1215., 1215., 1217., 1217., 1219., 1219., 1220., 1222., 1222., 1224., 1224., 1226., 1226., 1227., 1229., 1229., 1231., 1231., 1233., 1234., 1234., 1236., 1236., 1238., 1238., 1241., 1241., 1243., 1243., 1245., 1245., 1245., 1248., 1248., 1250., 1250., 1252., 1252., 1253., 1255., 1255., 1257., 1257., 1259., 1260., 1260., 1262., 1262., 1264., 1264., 1266., 1267., 1269., 1269., 1269., 1271., 1271., 1274., 1274., 1276., 1276., 1278., 1278., 1279., 1281., 1281., 1283., 1283., 1285., 1285., 1286.], dtype=float32)
- dxdr(time)float32-0.001524 -0.0007244 ... -0.07513
- description :
- Data cross-track distance from aircraft per radar range. Positive is in the starboard direction.
- units :
- m/m
array([-0.00152394, -0.00072439, 0.00087455, ..., -0.07403927, -0.07462395, -0.07512616], dtype=float32)
- dydr(time)float320.03135 0.03078 ... -0.111 -0.1119
- description :
- Data along-track distance from aircraft per radar range. Positive is in the forward direction.
- units :
- m/m
array([ 0.03134582, 0.03077963, 0.03123551, ..., -0.10983767, -0.11096651, -0.11189597], dtype=float32)
- dzdr(time)float32-0.9995 -0.9995 ... -0.991 -0.9909
- description :
- Data vertical distance from aircraft per radar range. Positive is in the upward direction.
- units :
- m/m
array([-0.9995074 , -0.9995259 , -0.99951166, ..., -0.9911881 , -0.99101853, -0.9908761 ], dtype=float32)
- er2_altitude(time)float321.744e+04 1.744e+04 ... 7.366e+03
- description :
- Aircraft height above sea level
- units :
- meters
array([17435.6, 17435.6, 17435.6, ..., 7365.5, 7365.5, 7365.5], dtype=float32)
- er2_heading(time)float3251.06 51.05 51.03 ... -124.1 -124.0
- description :
- Aircraft heading in degrees from north. 90 degrees is eastward pointing
- units :
- degrees
array([ 51.06 , 51.05 , 51.03051, ..., -124.13109, -124.05486, -123.96177], dtype=float32)
- er2_pitch(time)float321.796 1.764 1.79 ... -6.165 -6.21
- description :
- Pitch
- units :
- degrees
array([ 1.7961242, 1.763747 , 1.79 , ..., -6.109275 , -6.165136 , -6.209557 ], dtype=float32)
- er2_roll(time)float320.09045 0.04458 ... 4.597 4.639
- description :
- Roll
- units :
- degrees
array([ 0.09044971, 0.04458233, -0.0484664 , ..., 4.549275 , 4.596757 , 4.6391144 ], dtype=float32)
- er2_drift(time)float32-0.1 -0.1 -0.05256 ... 2.8 2.9 3.0
- description :
- Difference between track and heading
- units :
- degrees
array([-0.1 , -0.1 , -0.05255599, ..., 2.8 , 2.9 , 3. ], dtype=float32)
- er2_EastVel(time)float32182.0 182.0 182.0 ... -45.23 -45.42
- description :
- Eastward portion of velocity
- units :
- m/s
array([181.98288 , 181.98288 , 181.98288 , ..., -45.147682, -45.234436, -45.41841 ], dtype=float32)
- er2_NorthVel(time)float32147.9 147.9 147.9 ... -26.45 -26.33
- description :
- Northward portion of velocity
- units :
- m/s
array([147.89348 , 147.89348 , 147.89348 , ..., -26.597866, -26.450045, -26.33282 ], dtype=float32)
- er2_upVel(time)float327.425 7.269 7.37 ... -12.42 -12.57
- description :
- Upward Velocity
- units :
- m/s
array([ 7.4254436, 7.2687073, 7.3697453, ..., -12.286773 , -12.424452 , -12.565309 ], dtype=float32)
- er2_track(time)float3250.9 50.9 50.9 ... 239.7 239.9
- description :
- Direction from motion in degrees from north. 90 degrees is eastward motion
- units :
- degrees
array([ 50.9 , 50.9 , 50.9 , ..., 239.49637, 239.68379, 239.89557], dtype=float32)
- er2_motion(time)float320.1638 0.3747 0.4368 ... 4.26 3.567
- description :
- Estimated aircraft motion normal to the beam subtracted from Doppler estimate. Smoothed to a 2-second average motion.
- units :
- m/s
array([0.16375703, 0.3747127 , 0.4367959 , ..., 4.944475 , 4.259909 , 3.5669353 ], dtype=float32)
- Experiment :
- IMPACTS2020
- Date :
- 20200207
- Aircraft :
- NASA ER-2
- Radar Name :
- EXRAD
- Data Contact :
- Matthew L. Walker McLinden, NASA/GSFC, matthew.l.mclinden@nasa.gov
- Instrument PI :
- Gerry Heymsfield, NASA/GSFC
- Mission PI :
- Lynn McMurdie, University of Washington
- L1A Process Date :
- 20200510
- L1B Process Date :
- 20210324
- L1B Revision :
- RevC
- L1B Revision Note :
- RevC has corrected Doppler velocity due to non-uniform beam filling (NUBF) and horizontal winds from HRRR reanalysis data.
- Antenna Size (m) :
- 0.66
- Antenna one-way 3dB beamwidth (degrees) :
- 3.3
- Number of pulses averaged per profile :
- 8192
- Radar Transmit Frequency (Hz) :
- [9.624e+09]
- Radar Transmit Wavelength (m) :
- [0.03117207]
- Range Gate Spacing (m) :
- 18.737305
- Nominal Antenna Pointing :
- Nadir
- PRI :
- 200 us / 250 us staggered
- vertical_resolution :
- 110.0
Note how the dataset has two dimension, range and time. Using the impacts_tools radar object adds additional coordinates so it’s easier to make different types of figures.¶
Each radar contains data for the entire flight. Usually, we’re only interested in looking at subsets of the entire flight, such as flight legs that cross snowbands, and we want to ignore data where the aircraft is turning, travelling to the storm, or returning to base. We can load the radar object just for the times of interest:¶
[6]:
start_time = np.datetime64('2020-02-07T15:08:00')
end_time = np.datetime64('2020-02-07T15:24:00')
[7]:
exrad_leg1 = er2.Exrad(exrad_filepath, start_time=start_time, end_time=end_time)
[8]:
exrad_leg1.data
[8]:
<xarray.Dataset> Dimensions: (range: 886, time: 3841) Coordinates: * range (range) float32 5.003e+03 5.022e+03 ... 2.159e+04 height (range, time) float32 1.501e+04 ... -2.038e+03 * time (time) datetime64[ns] 2020-02-07T15:08:00 ... 2020... distance (time) float32 2.102e+06 2.102e+06 ... 2.327e+06 lat (time) float32 43.13 43.13 43.13 ... 43.05 43.05 lon (time) float32 -76.15 -76.15 -76.14 ... -73.39 -73.39 Data variables: (12/20) dbz (range, time) float32 nan nan nan ... 16.3 15.8 15.33 vel (range, time) float32 nan nan nan nan ... nan nan nan width (range, time) float32 nan nan nan ... 6.287 6.103 vel_horiz_offset (range, time) float32 nan nan nan nan ... nan nan nan vel_nubf_offset (range, time) float32 nan nan nan ... -2.815 -2.73 mask_copol (range, time) int32 0 0 0 0 0 0 0 0 ... 3 3 3 3 3 3 3 ... ... er2_drift (time) float32 0.9 0.9 0.9 0.8 ... -0.2 -0.2 -0.2 er2_EastVel (time) float32 233.2 233.2 233.2 ... 238.8 238.8 er2_NorthVel (time) float32 8.266 7.328 6.514 ... -14.19 -14.19 er2_upVel (time) float32 0.8362 0.8534 ... -0.3809 -0.3441 er2_track (time) float32 87.97 88.2 88.4 ... 93.4 93.4 93.4 er2_motion (time) float32 -4.495 -4.481 -4.471 ... -4.824 -4.852 Attributes: (12/20) Experiment: IMPACTS2020 Date: 20200207 Aircraft: NASA ER-2 Radar Name: EXRAD Data Contact: Matthew L. Walker McLinden, NAS... Instrument PI: Gerry Heymsfield, NASA/GSFC ... ... Radar Transmit Frequency (Hz): [9.624e+09] Radar Transmit Wavelength (m): [0.03117207] Range Gate Spacing (m): 18.737305 Nominal Antenna Pointing: Nadir PRI: 200 us / 250 us staggered vertical_resolution: 110.0
xarray.Dataset
- range: 886
- time: 3841
- range(range)float325.003e+03 5.022e+03 ... 2.159e+04
array([ 5002.9126, 5021.65 , 5040.3877, ..., 21548.125 , 21566.863 , 21585.6 ], dtype=float32)
- height(range, time)float321.501e+04 1.501e+04 ... -2.038e+03
- description :
- Height of each radar range gate
- units :
- m
array([[15007.1875, 15007.1875, 15007.1875, ..., 14545.287 , 14545.287 , 14544.6875], [14988.449 , 14988.449 , 14988.449 , ..., 14526.549 , 14526.549 , 14525.949 ], [14969.712 , 14969.712 , 14969.712 , ..., 14507.812 , 14507.812 , 14507.212 ], ..., [-1538.0254, -1538.0254, -1538.0254, ..., -1999.9258, -1999.9258, -2000.5254], [-1556.7637, -1556.7637, -1556.7637, ..., -2018.6641, -2018.6641, -2019.2637], [-1575.5 , -1575.5 , -1575.5 , ..., -2037.4004, -2037.4004, -2038. ]], dtype=float32)
- time(time)datetime64[ns]2020-02-07T15:08:00 ... 2020-02-...
array(['2020-02-07T15:08:00.000000000', '2020-02-07T15:08:00.250000000', '2020-02-07T15:08:00.500000000', ..., '2020-02-07T15:23:59.500000000', '2020-02-07T15:23:59.750000000', '2020-02-07T15:24:00.000000000'], dtype='datetime64[ns]')
- distance(time)float322.102e+06 2.102e+06 ... 2.327e+06
- description :
- Nominal aircraft travel distance estimated by cumulative summing instantaneous velocities.
- units :
- meters
array([2101865.2, 2101923.5, 2101981.8, ..., 2326674.5, 2326734.2, 2326794. ], dtype=float32)
- lat(time)float3243.13 43.13 43.13 ... 43.05 43.05
- description :
- Latitude
- units :
- degrees
array([43.128788, 43.128807, 43.128822, ..., 43.04691 , 43.04688 , 43.04685 ], dtype=float32)
- lon(time)float32-76.15 -76.15 ... -73.39 -73.39
- description :
- Longitude
- units :
- degrees
array([-76.14583 , -76.14517 , -76.14451 , ..., -73.39532 , -73.39467 , -73.393715], dtype=float32)
- dbz(range, time)float32nan nan nan nan ... 16.3 15.8 15.33
- description :
- Equivalent reflectivity factor in dB with 1-sigma noise threshold applied. |K|^2 = 0.92
- units :
- 10*log10(mm^6/m^3)
array([[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [57.898243, 57.845722, 57.797604, ..., 15.595204, 15.113851, 14.645963], [56.616 , 56.612125, 56.59949 , ..., 15.941892, 15.441854, 14.971501], [55.25841 , 55.304165, 55.34592 , ..., 16.29755 , 15.802472, 15.327565]], dtype=float32)
- vel(range, time)float32nan nan nan nan ... nan nan nan nan
- description :
- Doppler velocity corrected to account for intrusion of horizontal reanalysis winds and nonuniform beam filling (NUBF)
- units :
- m/s
array([[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], dtype=float32)
- width(range, time)float32nan nan nan ... 6.498 6.287 6.103
- description :
- Doppler velocity spectrum width estimate including aircraft motion. 1-sigma noise threshold applied.
- units :
- m/s
array([[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [4.456073 , 4.53335 , 4.5617785, ..., 6.4539595, 6.2173777, 5.9900184], [4.492785 , 4.541238 , 4.551463 , ..., 6.480619 , 6.237557 , 6.046807 ], [4.5286455, 4.5393143, 4.5164447, ..., 6.497655 , 6.2868137, 6.103484 ]], dtype=float32)
- vel_horiz_offset(range, time)float32nan nan nan nan ... nan nan nan nan
- description :
- The horizontal wind offset used to correct Doppler velocity [Vel_corr = Vel_uncorr - nubf_offset - horizwind_offset]
- units :
- m/s
array([[ nan, nan, nan, ..., 0.7684897 , 0.76832783, 0.76475286], [ nan, nan, nan, ..., 0.7696662 , 0.769502 , 0.765318 ], [ nan, nan, nan, ..., 0.7708428 , 0.7706763 , 0.7664484 ], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], dtype=float32)
- vel_nubf_offset(range, time)float32nan nan nan ... -2.905 -2.815 -2.73
- description :
- The nonuniform beam filling (NUBF) offset used to correct Doppler velocity [Vel_corr = Vel_uncorr - nubf_offset - horizwind_offset]
- units :
- m/s
array([[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [ 0.22409098, -0.10506563, -0.4862521 , ..., -2.7675574 , -2.6778991 , -2.608612 ], [ 0.3269143 , 0.00636938, -0.34633365, ..., -2.8683624 , -2.7873507 , -2.7055867 ], [ 0.3525791 , 0.08950356, -0.23874788, ..., -2.9050176 , -2.8151357 , -2.7299054 ]], dtype=float32)
- mask_copol(range, time)int320 0 0 0 0 0 0 0 ... 3 3 3 3 3 3 3 3
- description :
- Co-polarization SNR Mask: (Mask >= #) corresponds with (SNR > # sigma noise)
array([[0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], ..., [3, 3, 3, ..., 3, 3, 3], [3, 3, 3, ..., 3, 3, 3], [3, 3, 3, ..., 3, 3, 3]], dtype=int32)
- horizontal_resolution(range)float32486.0 487.0 ... 1.285e+03 1.286e+03
- description :
- Approximate horizontal resolution defined as width of spatial weighting after averaging as a function of radar range
- units :
- meters
array([ 486., 487., 487., 487., 487., 489., 489., 490., 490., 490., 490., 492., 492., 493., 493., 493., 495., 495., 495., 495., 496., 496., 498., 498., 498., 498., 499., 501., 501., 501., 501., 503., 503., 504., 504., 504., 506., 506., 506., 507., 507., 509., 509., 509., 509., 510., 512., 512., 512., 512., 514., 514., 515., 515., 515., 517., 517., 517., 518., 518., 520., 520., 520., 522., 523., 523., 523., 523., 525., 525., 525., 526., 528., 528., 528., 528., 530., 531., 531., 531., 533., 533., 533., 534., 534., 536., 536., 536., 538., 538., 539., 539., 541., 541., 541., 541., 542., 544., 544., 544., 546., 546., 547., 547., 549., 549., 549., 551., 551., 552., 552., 554., 554., 554., 556., 557., 557., 557., 557., 559., 559., 559., 560., 562., 562., 562., 564., 564., 565., 565., 567., 567., 567., 569., 570., 570., 572., 572., 572., 574., 574., 575., 575., 577., 577., 577., 579., 580., 580., 580., 582., 582., 582., 583., 585., 585., 585., 587., 587., 589., 590., 590., 590., 592., 592., 592., 593., 595., 595., 595., 597., 597., 598., 600., 600., 600., 602., 602., 602., 603., ... 1108., 1108., 1109., 1111., 1111., 1113., 1113., 1115., 1116., 1116., 1118., 1118., 1120., 1120., 1122., 1123., 1123., 1125., 1125., 1127., 1127., 1128., 1130., 1130., 1132., 1132., 1134., 1134., 1137., 1137., 1137., 1139., 1139., 1141., 1142., 1144., 1144., 1146., 1146., 1146., 1149., 1149., 1151., 1151., 1153., 1153., 1155., 1156., 1156., 1158., 1158., 1160., 1160., 1161., 1163., 1163., 1165., 1165., 1167., 1168., 1168., 1170., 1170., 1172., 1172., 1174., 1175., 1177., 1177., 1177., 1179., 1179., 1182., 1182., 1184., 1184., 1186., 1186., 1187., 1189., 1189., 1191., 1191., 1193., 1193., 1194., 1196., 1196., 1198., 1198., 1200., 1201., 1201., 1203., 1203., 1205., 1205., 1208., 1208., 1210., 1210., 1210., 1212., 1212., 1215., 1215., 1217., 1217., 1219., 1219., 1220., 1222., 1222., 1224., 1224., 1226., 1226., 1227., 1229., 1229., 1231., 1231., 1233., 1234., 1234., 1236., 1236., 1238., 1238., 1241., 1241., 1243., 1243., 1245., 1245., 1245., 1248., 1248., 1250., 1250., 1252., 1252., 1253., 1255., 1255., 1257., 1257., 1259., 1260., 1260., 1262., 1262., 1264., 1264., 1266., 1267., 1269., 1269., 1269., 1271., 1271., 1274., 1274., 1276., 1276., 1278., 1278., 1279., 1281., 1281., 1283., 1283., 1285., 1285., 1286.], dtype=float32)
- dxdr(time)float32-0.3453 -0.3453 ... 0.00324
- description :
- Data cross-track distance from aircraft per radar range. Positive is in the starboard direction.
- units :
- m/m
array([-0.34525216, -0.3452687 , -0.345257 , ..., 0.00341448, 0.00341448, 0.00323978], dtype=float32)
- dydr(time)float32-0.01607 -0.01591 ... -0.02187
- description :
- Data along-track distance from aircraft per radar range. Positive is in the forward direction.
- units :
- m/m
array([-0.01607092, -0.01590733, -0.01576096, ..., -0.0218268 , -0.0218268 , -0.02187485], dtype=float32)
- dzdr(time)float32-0.9384 -0.9384 ... -0.9998 -0.9998
- description :
- Data vertical distance from aircraft per radar range. Positive is in the upward direction.
- units :
- m/m
array([-0.9383724 , -0.93836904, -0.93837583, ..., -0.9997559 , -0.9997559 , -0.99975544], dtype=float32)
- er2_altitude(time)float322.001e+04 2.001e+04 ... 1.955e+04
- description :
- Aircraft height above sea level
- units :
- meters
array([20010.1, 20010.1, 20010.1, ..., 19548.2, 19548.2, 19547.6], dtype=float32)
- er2_heading(time)float3286.94 87.18 87.42 ... 93.74 93.75
- description :
- Aircraft heading in degrees from north. 90 degrees is eastward pointing
- units :
- degrees
array([86.94084, 87.17744, 87.41679, ..., 93.72 , 93.74 , 93.75 ], dtype=float32)
- er2_pitch(time)float32-0.65 -0.64 ... -1.25 -1.253
- description :
- Pitch
- units :
- degrees
array([-0.65 , -0.64 , -0.6310716, ..., -1.25 , -1.25 , -1.2527874], dtype=float32)
- er2_roll(time)float3220.21 20.21 20.21 ... -0.2 -0.19
- description :
- Roll
- units :
- degrees
array([20.21 , 20.210854, 20.21 , ..., -0.2 , -0.2 , -0.19 ], dtype=float32)
- er2_drift(time)float320.9 0.9 0.9 0.8 ... -0.2 -0.2 -0.2
- description :
- Difference between track and heading
- units :
- degrees
array([ 0.9, 0.9, 0.9, ..., -0.2, -0.2, -0.2], dtype=float32)
- er2_EastVel(time)float32233.2 233.2 233.2 ... 238.8 238.8
- description :
- Eastward portion of velocity
- units :
- m/s
array([233.15344, 233.18488, 233.20905, ..., 238.77896, 238.77896, 238.77896], dtype=float32)
- er2_NorthVel(time)float328.266 7.328 6.514 ... -14.19 -14.19
- description :
- Northward portion of velocity
- units :
- m/s
array([ 8.266235 , 7.3281302, 6.514118 , ..., -14.186085 , -14.186085 , -14.186085 ], dtype=float32)
- er2_upVel(time)float320.8362 0.8534 ... -0.3809 -0.3441
- description :
- Upward Velocity
- units :
- m/s
array([ 0.8361549 , 0.8533944 , 0.8653333 , ..., -0.45502436, -0.38085487, -0.34406614], dtype=float32)
- er2_track(time)float3287.97 88.2 88.4 ... 93.4 93.4 93.4
- description :
- Direction from motion in degrees from north. 90 degrees is eastward motion
- units :
- degrees
array([87.96948, 88.2 , 88.4 , ..., 93.4 , 93.4 , 93.4 ], dtype=float32)
- er2_motion(time)float32-4.495 -4.481 ... -4.824 -4.852
- description :
- Estimated aircraft motion normal to the beam subtracted from Doppler estimate. Smoothed to a 2-second average motion.
- units :
- m/s
array([-4.4951572, -4.481408 , -4.4710994, ..., -4.8151155, -4.8239465, -4.8520174], dtype=float32)
- Experiment :
- IMPACTS2020
- Date :
- 20200207
- Aircraft :
- NASA ER-2
- Radar Name :
- EXRAD
- Data Contact :
- Matthew L. Walker McLinden, NASA/GSFC, matthew.l.mclinden@nasa.gov
- Instrument PI :
- Gerry Heymsfield, NASA/GSFC
- Mission PI :
- Lynn McMurdie, University of Washington
- L1A Process Date :
- 20200510
- L1B Process Date :
- 20210324
- L1B Revision :
- RevC
- L1B Revision Note :
- RevC has corrected Doppler velocity due to non-uniform beam filling (NUBF) and horizontal winds from HRRR reanalysis data.
- Antenna Size (m) :
- 0.66
- Antenna one-way 3dB beamwidth (degrees) :
- 3.3
- Number of pulses averaged per profile :
- 8192
- Radar Transmit Frequency (Hz) :
- [9.624e+09]
- Radar Transmit Wavelength (m) :
- [0.03117207]
- Range Gate Spacing (m) :
- 18.737305
- Nominal Antenna Pointing :
- Nadir
- PRI :
- 200 us / 250 us staggered
- vertical_resolution :
- 110.0
Now we can plot the data for the selected flight leg by longitude and height¶
[12]:
fig = plt.figure(figsize=(15,5))
plt.pcolormesh(exrad_leg1.data['lon'][:], exrad_leg1.data['height'][:,0]/1000, exrad_leg1.data['dbz'][:,:], vmin=-20, vmax=60, shading='nearest', rasterized=True)
cbar = plt.colorbar()
cbar.set_label('Radar Reflectivity (dBZe)')
plt.title('EXRAD Data for ' + str(start_time) + ' to ' + str(end_time))
plt.ylabel('Height (km)')
plt.xlabel('Longitude')
plt.show()
Use the class method to despeckle the data¶
[13]:
dbz_clean = exrad_leg1.despeckle(exrad_leg1.data['dbz'], sigma=1)
[15]:
fig = plt.figure(figsize=(15,5))
plt.pcolormesh(exrad_leg1.data['lon'][:], exrad_leg1.data['height'][:,0]/1000, dbz_clean[:,:], vmin=-20, vmax=60,shading='nearest', rasterized=True)
cbar = plt.colorbar()
cbar.set_label('Radar Reflectivity (dBZe)')
plt.title('Despeckled EXRAD Data for ' + str(start_time) + ' to ' + str(end_time))
plt.ylabel('Height (km)')
plt.xlabel('Longitude')
plt.show()
Now plot by time instead of longitude¶
[17]:
fig = plt.figure(figsize=(15,5))
plt.pcolormesh(exrad_leg1.data['time'][:], exrad_leg1.data['height'][:,0]/1000, dbz_clean[:,:], vmin=-20, vmax=60,shading='nearest', rasterized=True)
cbar = plt.colorbar()
cbar.set_label('Radar Reflectivity (dBZe)')
plt.title('Despeckled EXRAD Data for ' + str(start_time) + ' to ' + str(end_time))
plt.ylabel('Height (km)')
plt.xlabel('Time')
plt.show()
Or by range gate instead of height, and distance along the flight track instead of time¶
[18]:
fig = plt.figure(figsize=(15,5))
plt.pcolormesh(exrad_leg1.data['distance'][:]/1000 - exrad_leg1.data['distance'][0]/1000, exrad_leg1.data['range'][:], dbz_clean[:,:], vmin=-20, vmax=60,shading='nearest', rasterized=True)
cbar = plt.colorbar()
cbar.set_label('Radar Reflectivity (dBZe)')
plt.title('Despeckled EXRAD Data for ' + str(start_time) + ' to ' + str(end_time))
plt.xlabel('Distance along flight track (km)')
plt.ylabel('Radar range gate')
# invert the y axis since range gate is from plane
plt.ylim(22000,0)
plt.show()
Plot HIWRAP radar data exactly the same way¶
[19]:
hiwrap_leg1 = er2.Hiwrap(hiwrap_filepath, start_time=start_time, end_time=end_time)
hiwrap_leg1.data
[19]:
<xarray.Dataset> Dimensions: (range: 609, time: 1921) Coordinates: * range (range) float32 5.014e+03 5.04e+03 ... 2.097e+04 height (range, time) float32 1.5e+04 ... -1.426e+03 * time (time) datetime64[ns] 2020-02-07T15:08:00 ... 2... distance (time) float32 2.103e+06 2.103e+06 ... 2.328e+06 lat (time) float32 43.13 43.13 43.13 ... 43.05 43.05 lon (time) float32 -76.15 -76.14 ... -73.4 -73.39 Data variables: (12/28) dbz_ka (range, time) float32 nan nan nan ... nan nan nan dbz_ku (range, time) float32 nan nan nan ... 10.36 10.37 vel_ka (range, time) float32 nan nan nan ... nan nan nan vel_ku (range, time) float32 nan nan nan ... nan nan nan width_ka (range, time) float32 nan nan nan ... nan nan nan width_ku (range, time) float32 nan nan nan ... 4.287 4.766 ... ... er2_drift (time) float32 0.9 0.9 0.8 0.8 ... -0.2 -0.2 -0.2 er2_EastVel (time) float32 233.2 233.2 233.4 ... 238.8 238.8 er2_NorthVel (time) float32 8.21 6.487 4.517 ... -14.19 -14.19 er2_upVel (time) float32 0.8369 0.8653 ... -0.451 -0.3423 er2_track (time) float32 87.98 88.41 88.89 ... 93.4 93.4 er2_motion (time) float32 -1.067 -1.025 ... -1.026 -1.103 Attributes: (12/24) Experiment: IMPACTS2020_Ku Date: 20200207 Aircraft: NASA ER-2 Radar Name: HIWRAP Data Contact: Matthew L. Walker McLin... Instrument PI: Lihua Li, NASA/GSFC ... ... Radar Transmit Ka-Band Wavelength (m): [0.00843645] Radar Transmit Ku-Band Wavelength (m): [0.02156722] Range Gate Spacing (m): 26.25 Nominal Antenna Pointing: Nadir PRI: 224 us / 280 us staggered Bands: Ka, Ku
xarray.Dataset
- range: 609
- time: 1921
- range(range)float325.014e+03 5.04e+03 ... 2.097e+04
array([ 5013.75, 5040. , 5066.25, ..., 20921.25, 20947.5 , 20973.75], dtype=float32)
- height(range, time)float321.5e+04 1.5e+04 ... -1.426e+03
- description :
- Height of each radar range gate
- units :
- m
array([[14996.35 , 14996.35 , 14997.15 , ..., 14534.449 , 14534.449 , 14533.85 ], [14970.1 , 14970.1 , 14970.9 , ..., 14508.199 , 14508.199 , 14507.6 ], [14943.85 , 14943.85 , 14944.65 , ..., 14481.949 , 14481.949 , 14481.35 ], ..., [ -911.1504, -911.1504, -910.3496, ..., -1373.0508, -1373.0508, -1373.6504], [ -937.4004, -937.4004, -936.5996, ..., -1399.3008, -1399.3008, -1399.9004], [ -963.6504, -963.6504, -962.8496, ..., -1425.5508, -1425.5508, -1426.1504]], dtype=float32)
- time(time)datetime64[ns]2020-02-07T15:08:00 ... 2020-02-...
array(['2020-02-07T15:08:00.000000000', '2020-02-07T15:08:00.500000000', '2020-02-07T15:08:01.000000000', ..., '2020-02-07T15:23:59.000000000', '2020-02-07T15:23:59.500000000', '2020-02-07T15:24:00.000000000'], dtype='datetime64[ns]')
- distance(time)float322.103e+06 2.103e+06 ... 2.328e+06
- description :
- Nominal aircraft travel distance estimated by cumulative summing instantaneous velocities.
- units :
- meters
array([2103196.2, 2103313. , 2103429.8, ..., 2327876.2, 2327995.8, 2328115.2], dtype=float32)
- lat(time)float3243.13 43.13 43.13 ... 43.05 43.05
- description :
- Latitude
- units :
- degrees
array([43.128788, 43.128822, 43.12885 , ..., 43.04697 , 43.04691 , 43.046844], dtype=float32)
- lon(time)float32-76.15 -76.14 ... -73.4 -73.39
- description :
- Longitude
- units :
- degrees
array([-76.14583, -76.14446, -76.14285, ..., -73.3966 , -73.3953 , -73.39369], dtype=float32)
- dbz_ka(range, time)float32nan nan nan nan ... nan nan nan nan
- description :
- Equivalent reflectivity factor in dB with 1-sigma noise threshold applied. |K|^2 = 0.92
- units :
- 10*log10(mm^6/m^3)
array([[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [20.97217 , 20.700026 , 20.727686 , ..., nan, -5.2700977, nan], [20.981176 , 20.84577 , 20.761557 , ..., nan, nan, nan], [20.98232 , 20.920164 , 20.76124 , ..., nan, nan, nan]], dtype=float32)
- dbz_ku(range, time)float32nan nan nan ... 10.51 10.36 10.37
- description :
- Equivalent reflectivity factor in dB with 1-sigma noise threshold applied. |K|^2 = 0.92
- units :
- 10*log10(mm^6/m^3)
array([[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [26.139894, 26.092638, 26.0842 , ..., 12.756585, 12.60431 , 12.294999], [26.394503, 26.291708, 26.38508 , ..., 9.252824, 9.120698, 9.383599], [27.129156, 27.119486, 27.413874, ..., 10.51246 , 10.35978 , 10.370042]], dtype=float32)
- vel_ka(range, time)float32nan nan nan nan ... nan nan nan nan
- description :
- Doppler velocity corrected to account for intrusion of horizontal reanalysis winds
- units :
- m/s
array([[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], dtype=float32)
- vel_ku(range, time)float32nan nan nan nan ... nan nan nan nan
- description :
- Doppler velocity corrected to account for intrusion of horizontal reanalysis winds and nonuniform beam filling (NUBF)
- units :
- m/s
array([[nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], ..., [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan], [nan, nan, nan, ..., nan, nan, nan]], dtype=float32)
- width_ka(range, time)float32nan nan nan nan ... nan nan nan nan
- description :
- Doppler velocity spectrum width estimate including aircraft motion. 1-sigma noise threshold applied.
- units :
- m/s
array([[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [1.434662 , 1.4737657, 1.4573717, ..., nan, 2.1936622, nan], [1.4548312, 1.4703491, 1.4567099, ..., nan, nan, nan], [1.4889357, 1.4958586, 1.4744806, ..., nan, nan, nan]], dtype=float32)
- width_ku(range, time)float32nan nan nan ... 4.266 4.287 4.766
- description :
- Doppler velocity spectrum width estimate including aircraft motion. 1-sigma noise threshold applied.
- units :
- m/s
array([[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [3.7978785, 3.8331437, 3.8611786, ..., 3.167421 , 3.4011743, 3.6986964], [3.7599611, 3.7974722, 3.8044689, ..., 4.917344 , 5.310898 , 5.6772094], [3.6362011, 3.6635647, 3.6509755, ..., 4.2661805, 4.2874985, 4.7659063]], dtype=float32)
- ldr_ka(range, time)float32nan nan nan nan ... nan nan nan nan
- description :
- Linear Depolarization Ratio thresholded at 3-sigma, using high-res pulse for co-polarization and chirp for cross-polarization. They are pretty well matched, but dont get tripped up right next to the surface.
- units :
- dB
array([[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [-24.23543 , -23.846254, -23.41449 , ..., nan, nan, nan], [-23.799364, -23.19168 , -23.06252 , ..., nan, nan, nan], [-23.498505, -22.731953, -22.697327, ..., nan, nan, nan]], dtype=float32)
- ldr_ku(range, time)float32nan nan nan ... -12.38 -12.66 nan
- description :
- Linear Depolarization Ratio thresholded at 3-sigma, using high-res pulse for co-polarization and chirp for cross-polarization. They are pretty well matched, but dont get tripped up right next to the surface.
- units :
- dB
array([[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [-19.216682 , -19.041836 , -18.339375 , ..., nan, nan, nan], [-16.449308 , -16.176292 , -15.362243 , ..., -12.3148775, nan, nan], [-13.691712 , -13.339682 , -12.5510235, ..., -12.378816 , -12.656458 , nan]], dtype=float32)
- vel_horiz_offset_ka(range, time)float32nan nan nan nan ... nan nan nan nan
- description :
- The horizontal wind offset used to correct Doppler velocity [Vel_corr = Vel_uncorr - horizwind_offset]
- units :
- m/s
array([[ nan, nan, nan, ..., -0.40240115, -0.4022408 , -0.40762463], [ nan, nan, nan, ..., -0.4069314 , -0.40669075, -0.41211975], [ nan, nan, nan, ..., -0.41372696, -0.4133659 , -0.4188618 ], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], dtype=float32)
- vel_horiz_offset_ku(range, time)float32nan nan nan nan ... nan nan nan nan
- description :
- The horizontal wind offset used to correct Doppler velocity [Vel_corr = Vel_uncorr - nubf_offset - horizwind_offset]
- units :
- m/s
array([[ nan, nan, nan, ..., -0.40240115, -0.4022408 , -0.40762463], [ nan, nan, nan, ..., -0.4069314 , -0.40669075, -0.41211975], [ nan, nan, nan, ..., -0.41372696, -0.4133659 , -0.4188618 ], ..., [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]], dtype=float32)
- vel_nubf_offset_ku(range, time)float32nan nan nan ... -0.954 -0.6351
- description :
- The nonuniform beam filling (NUBF) offset used to correct Doppler velocity [Vel_corr = Vel_uncorr - nubf_offset - horizwind_offset]
- units :
- m/s
array([[ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], ..., [-0.18831578, 0.15197167, 9.210856 , ..., 0.11171412, -3.158167 , -2.334596 ], [-0.1513373 , 0.56733286, 9.878365 , ..., -0.2812007 , -0.5241315 , 0.14706261], [ 0.01465432, 1.3066776 , 10.186304 , ..., 0.31076404, -0.9540018 , -0.6351146 ]], dtype=float32)
- channel_mask_ka(range, time)int320 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0
- description :
- Composite Ka-band Image Channel Mask. 0: No signal, 1: Low-Resolution Pulse, 2: High-Resolution Pulse, 3: Chirp
array([[0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], ..., [3, 3, 3, ..., 0, 3, 0], [3, 3, 3, ..., 0, 0, 0], [3, 3, 3, ..., 0, 0, 0]], dtype=int32)
- channel_mask_ku(range, time)int320 0 0 0 0 0 0 0 ... 2 2 2 2 2 2 2 2
- description :
- Composite Ku-band Image Channel Mask. 0: No signal, 1: Low-Resolution Pulse, 2: High-Resolution Pulse, 3: Chirp
array([[0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], ..., [3, 3, 3, ..., 2, 2, 2], [3, 3, 3, ..., 2, 2, 2], [3, 3, 3, ..., 2, 2, 2]], dtype=int32)
- horizontal_resolution_ka(range)float32227.0 226.0 227.0 ... 471.0 471.0
- description :
- Approximate horizontal resolution defined as width of spatial weighting after averaging as a function of radar range
- units :
- meters
array([227., 226., 227., 227., 227., 228., 228., 228., 228., 228., 229., 229., 229., 229., 230., 230., 230., 230., 230., 231., 231., 231., 231., 232., 232., 232., 232., 232., 233., 233., 233., 233., 234., 234., 234., 235., 235., 235., 235., 235., 236., 236., 236., 236., 237., 237., 237., 237., 237., 238., 238., 238., 238., 239., 239., 239., 240., 240., 240., 240., 240., 240., 241., 241., 241., 242., 242., 242., 243., 243., 243., 243., 244., 244., 244., 244., 244., 245., 245., 245., 246., 246., 246., 246., 247., 247., 247., 248., 248., 248., 248., 249., 249., 249., 250., 250., 250., 250., 250., 251., 251., 252., 252., 252., 253., 253., 253., 253., 253., 254., 254., 255., 255., 255., 255., 255., 256., 256., 256., 257., 257., 258., 258., 258., 259., 259., 259., 259., 259., 260., 260., 261., 261., 261., 262., 262., 262., 263., 263., 263., 263., 264., 264., 264., 265., 265., 265., 266., 266., 266., 267., 267., 268., 268., 268., 269., 269., 269., 269., 269., 270., 270., 271., 271., 271., 272., 272., 272., 273., 273., 273., 273., 274., 275., 275., 275., 276., 276., 276., 277., 277., 278., 278., 278., 279., 279., 279., 280., 280., 280., 281., 281., 282., 282., 282., 283., 283., 283., 284., 284., 284., 285., 285., 286., 286., 286., 287., 287., 287., 288., 288., 288., 288., 289., 290., 290., 290., 291., 291., 291., ... 368., 368., 368., 369., 370., 370., 370., 370., 371., 372., 373., 373., 373., 374., 374., 374., 375., 375., 376., 377., 377., 377., 378., 379., 379., 379., 380., 380., 381., 382., 382., 382., 383., 383., 383., 384., 385., 385., 386., 386., 386., 387., 388., 388., 388., 389., 389., 390., 391., 391., 391., 392., 392., 392., 393., 394., 394., 395., 395., 395., 396., 397., 397., 397., 398., 399., 399., 400., 400., 400., 401., 402., 402., 402., 403., 403., 403., 405., 405., 405., 406., 406., 406., 407., 408., 408., 408., 410., 410., 410., 411., 411., 411., 412., 413., 413., 413., 413., 414., 415., 416., 416., 416., 417., 418., 418., 418., 418., 419., 420., 421., 421., 421., 422., 423., 423., 423., 423., 424., 425., 426., 426., 426., 427., 427., 427., 428., 428., 429., 430., 431., 431., 431., 432., 432., 432., 433., 433., 434., 435., 436., 436., 436., 437., 437., 437., 438., 438., 439., 440., 441., 441., 441., 442., 442., 442., 443., 443., 444., 445., 446., 446., 446., 447., 447., 447., 448., 448., 449., 450., 451., 451., 451., 452., 452., 452., 453., 453., 454., 455., 456., 456., 456., 457., 457., 457., 458., 459., 459., 460., 461., 461., 461., 462., 462., 462., 463., 464., 464., 465., 466., 466., 466., 467., 468., 468., 468., 469., 469., 470., 471., 471., 471.], dtype=float32)
- horizontal_resolution_ku(range)float32514.0 514.0 ... 1.126e+03 1.127e+03
- description :
- Approximate horizontal resolution defined as width of spatial weighting after averaging as a function of radar range
- units :
- meters
array([ 514., 514., 515., 516., 516., 517., 517., 518., 519., 519., 520., 520., 520., 520., 521., 522., 522., 523., 524., 524., 525., 526., 526., 527., 528., 528., 529., 529., 530., 530., 530., 532., 532., 533., 533., 533., 533., 534., 535., 535., 536., 537., 537., 538., 539., 539., 540., 541., 541., 542., 543., 543., 544., 545., 545., 546., 547., 547., 548., 549., 549., 550., 551., 551., 552., 552., 553., 554., 554., 555., 556., 556., 557., 558., 558., 559., 560., 560., 561., 562., 562., 563., 564., 564., 565., 566., 566., 567., 568., 568., 569., 570., 570., 571., 573., 574., 574., 575., 576., 577., 577., 578., 579., 579., 580., 581., 581., 582., 583., 583., 584., 585., 585., 586., 587., 589., 590., 590., 591., 592., 593., 593., 594., 595., 595., 596., 596., 597., 598., 600., 601., 602., 602., 603., 604., 604., 605., 606., 606., 607., 608., 610., 611., 612., 612., 613., 614., 614., 615., 616., 616., 617., 618., 620., 621., 622., 622., 623., 623., 624., 625., 627., 628., 629., 629., 630., 631., 631., 632., 633., 635., 636., 637., 637., 638., 639., 639., 640., 641., 643., ... 913., 914., 915., 917., 918., 919., 921., 922., 923., 923., 926., 926., 927., 928., 930., 931., 932., 934., 935., 936., 936., 939., 940., 940., 941., 942., 944., 945., 946., 948., 949., 950., 952., 953., 954., 954., 955., 958., 958., 959., 960., 962., 963., 965., 966., 967., 967., 970., 971., 971., 972., 975., 975., 976., 977., 979., 980., 981., 983., 984., 985., 985., 988., 989., 989., 990., 993., 993., 994., 995., 997., 998., 999., 1001., 1002., 1002., 1003., 1006., 1006., 1007., 1010., 1010., 1011., 1012., 1014., 1015., 1016., 1018., 1019., 1020., 1020., 1023., 1024., 1024., 1025., 1028., 1028., 1029., 1030., 1032., 1033., 1034., 1036., 1037., 1038., 1040., 1041., 1041., 1042., 1045., 1045., 1046., 1047., 1049., 1050., 1051., 1053., 1054., 1055., 1057., 1058., 1059., 1059., 1062., 1063., 1063., 1066., 1067., 1067., 1068., 1071., 1071., 1072., 1073., 1075., 1076., 1077., 1079., 1080., 1080., 1083., 1084., 1084., 1085., 1088., 1088., 1089., 1090., 1092., 1093., 1094., 1096., 1097., 1098., 1100., 1101., 1102., 1104., 1105., 1106., 1106., 1109., 1110., 1110., 1111., 1114., 1114., 1115., 1117., 1118., 1119., 1121., 1122., 1123., 1125., 1126., 1127.], dtype=float32)
- dxdr(time)float32-0.3455 -0.3455 ... 0.003295
- description :
- Data cross-track distance from aircraft per radar range. Positive is in the starboard direction.
- units :
- m/m
array([-0.3454837 , -0.34548885, -0.34532627, ..., 0.00311899, 0.00346931, 0.00329471], dtype=float32)
- dydr(time)float32-0.001332 -0.001005 ... -0.00614
- description :
- Data along-track distance from aircraft per radar range. Positive is in the forward direction.
- units :
- m/m
array([-0.00133211, -0.00100458, -0.00039902, ..., -0.00647854, -0.00612072, -0.00614025], dtype=float32)
- dzdr(time)float32-0.9384 -0.9384 ... -1.0 -1.0
- description :
- Data vertical distance from aircraft per radar range. Positive is in the upward direction.
- units :
- m/m
array([-0.9384238 , -0.9384223 , -0.9384826 , ..., -0.99997413, -0.99997526, -0.99997574], dtype=float32)
- er2_altitude(time)float322.001e+04 2.001e+04 ... 1.955e+04
- description :
- Aircraft height above sea level
- units :
- meters
array([20010.1, 20010.1, 20010.9, ..., 19548.2, 19548.2, 19547.6], dtype=float32)
- er2_heading(time)float3286.94 87.42 87.89 ... 93.72 93.75
- description :
- Aircraft heading in degrees from north. 90 degrees is eastward pointing
- units :
- degrees
array([86.944984, 87.42404 , 87.88731 , ..., 93.71 , 93.72112 , 93.75 ], dtype=float32)
- er2_pitch(time)float320.25 0.27 0.27 ... -0.35 -0.3512
- description :
- Pitch
- units :
- degrees
array([ 0.25 , 0.27 , 0.27 , ..., -0.37057108, -0.35 , -0.35115325], dtype=float32)
- er2_roll(time)float3220.21 20.21 20.2 ... -0.2 -0.19
- description :
- Roll
- units :
- degrees
array([20.21, 20.21, 20.2 , ..., -0.18, -0.2 , -0.19], dtype=float32)
- er2_drift(time)float320.9 0.9 0.8 0.8 ... -0.2 -0.2 -0.2
- description :
- Difference between track and heading
- units :
- degrees
array([ 0.9, 0.9, 0.8, ..., -0.2, -0.2, -0.2], dtype=float32)
- er2_EastVel(time)float32233.2 233.2 233.4 ... 238.8 238.8
- description :
- Eastward portion of velocity
- units :
- m/s
array([233.15544, 233.20978, 233.35625, ..., 238.77896, 238.77896, 238.77896], dtype=float32)
- er2_NorthVel(time)float328.21 6.487 4.517 ... -14.19 -14.19
- description :
- Northward portion of velocity
- units :
- m/s
array([ 8.210049 , 6.4866834, 4.5172696, ..., -14.186085 , -14.186085 , -14.186085 ], dtype=float32)
- er2_upVel(time)float320.8369 0.8653 ... -0.451 -0.3423
- description :
- Upward Velocity
- units :
- m/s
array([ 0.8369143 , 0.8653333 , 0.91017854, ..., -0.65575635, -0.45098305, -0.3422686 ], dtype=float32)
- er2_track(time)float3287.98 88.41 88.89 ... 93.4 93.4
- description :
- Direction from motion in degrees from north. 90 degrees is eastward motion
- units :
- degrees
array([87.98329 , 88.40674 , 88.891014, ..., 93.4 , 93.4 , 93.4 ], dtype=float32)
- er2_motion(time)float32-1.067 -1.025 ... -1.026 -1.103
- description :
- Estimated aircraft motion normal to the beam subtracted from Doppler estimate. Smoothed to a 1.5-second average motion.
- units :
- m/s
array([-1.0673193, -1.025028 , -1.0073003, ..., -1.0441312, -1.026141 , -1.1034992], dtype=float32)
- Experiment :
- IMPACTS2020_Ku
- Date :
- 20200207
- Aircraft :
- NASA ER-2
- Radar Name :
- HIWRAP
- Data Contact :
- Matthew L. Walker McLinden, NASA/GSFC, matthew.l.mclinden@nasa.gov
- Instrument PI :
- Lihua Li, NASA/GSFC
- Mission PI :
- Lynn McMurdie, University of Washington
- L1A Process Date :
- 20200824
- L1B Process Date :
- 20210324
- L1B Revision :
- RevB
- L1B Revision Note :
- RevA has lowered the Ka-band reflectivity by 1.25 dB compared to external calibration and the previous version to better match other frequencies. RevB has corrected Doppler velocity due to non-uniform beam filling (NUBF, KU only) and horizontal winds from HRRR reanalysis data.
- Antenna Size (m) :
- 0.5
- Antenna one-way 3dB Ka-Band beamwidth (degrees) :
- 1.2
- Antenna one-way 3dB Ku-Band beamwidth (degrees) :
- 2.9
- Number of pulses averaged per profile, Ka-band :
- 4096
- Number of pulses averaged per profile, Ku-band :
- 8192
- Radar Transmit Ka-Band Frequency (Hz) :
- [3.556e+10]
- Radar Transmit Ku-Band Frequency (Hz) :
- [1.391e+10]
- Radar Transmit Ka-Band Wavelength (m) :
- [0.00843645]
- Radar Transmit Ku-Band Wavelength (m) :
- [0.02156722]
- Range Gate Spacing (m) :
- 26.25
- Nominal Antenna Pointing :
- Nadir
- PRI :
- 224 us / 280 us staggered
- Bands :
- Ka, Ku
[23]:
fig = plt.figure(figsize=(15,5))
plt.pcolormesh(hiwrap_leg1.data['lon'][:], hiwrap_leg1.data['height'][:,0]/1000, hiwrap_leg1.data['vel_ka'][:,:], cmap='bwr', vmin=-5, vmax=5, shading='nearest', rasterized=True)
cbar = plt.colorbar()
cbar.set_label('Doppler velocity (m/s)')
plt.title('HIWRAP Ka-band Data for ' + str(start_time) + ' to ' + str(end_time))
plt.xlabel('Longitude')
plt.ylabel('Height (km)')
plt.show()
Despeckle the HIWRAP velocity¶
[22]:
vel_clean = hiwrap_leg1.despeckle(hiwrap_leg1.data['vel_ka'], sigma=1)
[24]:
fig = plt.figure(figsize=(15,5))
#help(plt.pcolormesh)
plt.pcolormesh(hiwrap_leg1.data['lon'][:], hiwrap_leg1.data['height'][:,0]/1000, vel_clean[:,:], cmap='bwr', vmin=-5, vmax=5, shading='nearest', rasterized=True)
cbar = plt.colorbar()
cbar.set_label('Doppler velocity (m/s)')
plt.title('Despeckled HIWRAP Ka-band Doppler Velocity for ' + str(start_time) + ' to ' + str(end_time))
plt.xlabel('Longitude')
plt.ylabel('Height (km)')
plt.show()
[ ]: