Level3File

class metpy.io.Level3File(filename)[source]

Handle reading the wide array of NEXRAD Level 3 (NIDS) product files.

This class attempts to decode every byte that is in a given product file. It supports all of the various compression formats that exist for these products in the wild.

metadata

dict – Various general metadata available from the product

header

namedtuple – Decoded product header

prod_desc

namedtuple – Decoded product description block

siteID

str – ID of the site found in the header, empty string if none found

lat

float – Radar site latitude

lon

float – Radar site longitude

height

float – Radar site height AMSL

product_name

str – Name of the product contained in file

max_range

float – Maximum range of the product, taken from the NIDS ICD

map_data

Mapper – Class instance mapping data int values to proper floating point values

sym_block

list, optional – Any symbology block packets that were found

tab_pages

list, optional – Any tabular pages that were found

graph_pages

list, optional – Any graphical pages that were found

Notes

The internal data structure that things are decoded into is still to be determined.

Create instance of Level3File.

Parameters:filename (str or file-like object) – If str, the name of the file to be opened. If file-like object, this will be read from directly.

Attributes Summary

additional_gsm_fmt
graph_block_fmt
gsm_fmt
header_fmt
ij_to_km
packet_map
prod_desc_fmt
prod_spec_map
standalone_tabular
sym_block_fmt
sym_layer_fmt
tab_block_fmt
tab_header_fmt
wmo_finder

Methods Summary

__init__(filename) Create instance of Level3File.
pos_scale(is_sym_block) Scale of the position information in km.

Attributes Documentation

additional_gsm_fmt = <metpy.io._tools.NamedStruct object>
graph_block_fmt = <metpy.io._tools.NamedStruct object>
gsm_fmt = <metpy.io._tools.NamedStruct object>
header_fmt = <metpy.io._tools.NamedStruct object>
ij_to_km = 0.25
packet_map = {1: <function Level3File._unpack_packet_uniform_text at 0x2b0f5c791048>, 2: <function Level3File._unpack_packet_special_text_symbol at 0x2b0f5c7910d0>, 3: <function Level3File._unpack_packet_special_graphic_symbol at 0x2b0f5c791158>, 4: <function Level3File._unpack_packet_wind_barbs at 0x2b0f5c791510>, 6: <function Level3File._unpack_packet_linked_vector at 0x2b0f5c7912f0>, 8: <function Level3File._unpack_packet_uniform_text at 0x2b0f5c791048>, 10: <function Level3File._unpack_packet_vector at 0x2b0f5c791378>, 11: <function Level3File._unpack_packet_special_graphic_symbol at 0x2b0f5c791158>, 12: <function Level3File._unpack_packet_special_graphic_symbol at 0x2b0f5c791158>, 13: <function Level3File._unpack_packet_special_graphic_symbol at 0x2b0f5c791158>, 14: <function Level3File._unpack_packet_special_graphic_symbol at 0x2b0f5c791158>, 15: <function Level3File._unpack_packet_special_graphic_symbol at 0x2b0f5c791158>, 16: <function Level3File._unpack_packet_digital_radial at 0x2b0f5c79fea0>, 17: <function Level3File._unpack_packet_digital_precipitation at 0x2b0f5c791268>, 18: <function Level3File._unpack_packet_digital_precipitation at 0x2b0f5c791268>, 19: <function Level3File._unpack_packet_special_graphic_symbol at 0x2b0f5c791158>, 20: <function Level3File._unpack_packet_special_graphic_symbol at 0x2b0f5c791158>, 21: <function Level3File._unpack_packet_cell_trend at 0x2b0f5c7916a8>, 22: <function Level3File._unpack_packet_trend_times at 0x2b0f5c791620>, 23: <function Level3File._unpack_packet_scit at 0x2b0f5c7911e0>, 24: <function Level3File._unpack_packet_scit at 0x2b0f5c7911e0>, 25: <function Level3File._unpack_packet_special_graphic_symbol at 0x2b0f5c791158>, 26: <function Level3File._unpack_packet_special_graphic_symbol at 0x2b0f5c791158>, 28: <function Level3File._unpack_packet_generic at 0x2b0f5c791598>, 29: <function Level3File._unpack_packet_generic at 0x2b0f5c791598>, 2050: <function Level3File._unpack_packet_contour_color at 0x2b0f5c791400>, 3587: <function Level3File._unpack_packet_linked_contour at 0x2b0f5c791488>, 44831: <function Level3File._unpack_packet_radial_data at 0x2b0f5c79fe18>, 47623: <function Level3File._unpack_packet_raster_data at 0x2b0f5c79ff28>}
prod_desc_fmt = <metpy.io._tools.NamedStruct object>
prod_spec_map = {16: ('Base Reflectivity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c757d08>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c7771e0>))), 17: ('Base Reflectivity', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c777268>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c7772f0>))), 18: ('Base Reflectivity', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c777378>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c777400>))), 19: ('Base Reflectivity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c777488>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c777510>))), 20: ('Base Reflectivity', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c777598>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c777620>))), 21: ('Base Reflectivity', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c7776a8>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c777730>))), 22: ('Base Velocity', 60.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c7777b8>), ('min', 3), ('max', 4))), 23: ('Base Velocity', 115.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c777840>), ('min', 3), ('max', 4))), 24: ('Base Velocity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c7778c8>), ('min', 3), ('max', 4))), 25: ('Base Velocity', 60.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c777950>), ('min', 3), ('max', 4))), 26: ('Base Velocity', 115.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c7779d8>), ('min', 3), ('max', 4))), 27: ('Base Velocity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c777a60>), ('min', 3), ('max', 4))), 28: ('Base Spectrum Width', 60.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c777ae8>), ('max', 3))), 29: ('Base Spectrum Width', 115.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c777b70>), ('max', 3))), 30: ('Base Spectrum Width', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c777bf8>), ('max', 3))), 31: ('User Selectable Storm Total Precipitation', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('end_hour', 0), ('hour_span', 1), ('null_product', 2), ('max_rainfall', <function scaled_elem.<locals>.inner at 0x2b0f5c777c80>), ('rainfall_begin', <function date_elem.<locals>.inner at 0x2b0f5c777d08>), ('rainfall_end', <function date_elem.<locals>.inner at 0x2b0f5c777d90>), ('bias', <function scaled_elem.<locals>.inner at 0x2b0f5c777e18>), ('gr_pairs', <function scaled_elem.<locals>.inner at 0x2b0f5c777ea0>))), 32: ('Digital Hybrid Scan Reflectivity', 230.0, <class 'metpy.io.nexrad.DigitalRefMapper'>, (('max', 3), ('avg_time', <function date_elem.<locals>.inner at 0x2b0f5c777f28>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c77e048>))), 33: ('Hybrid Scan Reflectivity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('max', 3), ('avg_time', <function date_elem.<locals>.inner at 0x2b0f5c77e0d0>))), 34: ('Clutter Filter Control', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('clutter_bitmap', 0), ('cmd_map', 1), ('bypass_map_date', <function date_elem.<locals>.inner at 0x2b0f5c77e158>), ('notchwidth_map_date', <function date_elem.<locals>.inner at 0x2b0f5c77e1e0>))), 35: ('Composite Reflectivity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c77e268>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c77e2f0>))), 36: ('Composite Reflectivity', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c77e378>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c77e400>))), 37: ('Composite Reflectivity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c77e488>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c77e510>))), 38: ('Composite Reflectivity', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c77e598>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c77e620>))), 41: ('Echo Tops', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c77e6a8>), ('max', <function scaled_elem.<locals>.inner at 0x2b0f5c77e730>))), 48: ('VAD Wind Profile', None, <class 'metpy.io.nexrad.LegacyMapper'>, (('max', 3), ('dir_max', 4), ('alt_max', <function scaled_elem.<locals>.inner at 0x2b0f5c77e7b8>))), 55: ('Storm Relative Mean Radial Velocity', 50.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('window_az', <function scaled_elem.<locals>.inner at 0x2b0f5c77e840>), ('window_range', <function scaled_elem.<locals>.inner at 0x2b0f5c77e8c8>), ('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c77e950>), ('min', 3), ('max', 4), ('source', 5), ('height', 6), ('avg_speed', <function scaled_elem.<locals>.inner at 0x2b0f5c77e9d8>), ('avg_dir', <function scaled_elem.<locals>.inner at 0x2b0f5c77ea60>), ('alert_category', 9))), 56: ('Storm Relative Mean Radial Velocity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c77eae8>), ('min', 3), ('max', 4), ('source', 5), ('avg_speed', <function scaled_elem.<locals>.inner at 0x2b0f5c77eb70>), ('avg_dir', <function scaled_elem.<locals>.inner at 0x2b0f5c77ebf8>))), 57: ('Vertically Integrated Liquid', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c77ec80>), ('max', 3))), 58: ('Storm Tracking Information', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('num_storms', 3),)), 59: ('Hail Index', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, ()), 61: ('Tornado Vortex Signature', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('num_tvs', 3), ('num_etvs', 4))), 62: ('Storm Structure', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, ()), 63: ('Layer Composite Reflectivity (Layer 1 Average)', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('max', 3), ('layer_bottom', <function scaled_elem.<locals>.inner at 0x2b0f5c77ed08>), ('layer_top', <function scaled_elem.<locals>.inner at 0x2b0f5c77ed90>), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c77ee18>))), 64: ('Layer Composite Reflectivity (Layer 2 Average)', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('max', 3), ('layer_bottom', <function scaled_elem.<locals>.inner at 0x2b0f5c77eea0>), ('layer_top', <function scaled_elem.<locals>.inner at 0x2b0f5c77ef28>), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c77b048>))), 65: ('Layer Composite Reflectivity (Layer 1 Max)', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c77b0d0>), ('max', 3), ('layer_bottom', <function scaled_elem.<locals>.inner at 0x2b0f5c77b158>), ('layer_top', <function scaled_elem.<locals>.inner at 0x2b0f5c77b1e0>), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c77b268>))), 66: ('Layer Composite Reflectivity (Layer 2 Max)', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c77b2f0>), ('max', 3), ('layer_bottom', <function scaled_elem.<locals>.inner at 0x2b0f5c77b378>), ('layer_top', <function scaled_elem.<locals>.inner at 0x2b0f5c77b400>), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c77b488>))), 67: ('Layer Composite Reflectivity - AP Removed', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c77b510>), ('max', 3), ('layer_bottom', <function scaled_elem.<locals>.inner at 0x2b0f5c77b598>), ('layer_top', <function scaled_elem.<locals>.inner at 0x2b0f5c77b620>), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c77b6a8>))), 74: ('Radar Coded Message', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, ()), 78: ('Surface Rainfall Accumulation (1 hour)', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('max_rainfall', <function scaled_elem.<locals>.inner at 0x2b0f5c77b730>), ('bias', <function scaled_elem.<locals>.inner at 0x2b0f5c77b7b8>), ('gr_pairs', <function scaled_elem.<locals>.inner at 0x2b0f5c77b840>), ('rainfall_end', <function date_elem.<locals>.inner at 0x2b0f5c77b8c8>))), 79: ('Surface Rainfall Accumulation (3 hour)', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('max_rainfall', <function scaled_elem.<locals>.inner at 0x2b0f5c77b950>), ('bias', <function scaled_elem.<locals>.inner at 0x2b0f5c77b9d8>), ('gr_pairs', <function scaled_elem.<locals>.inner at 0x2b0f5c77ba60>), ('rainfall_end', <function date_elem.<locals>.inner at 0x2b0f5c77bae8>))), 80: ('Storm Total Rainfall Accumulation', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('max_rainfall', <function scaled_elem.<locals>.inner at 0x2b0f5c77bb70>), ('rainfall_begin', <function date_elem.<locals>.inner at 0x2b0f5c77bbf8>), ('rainfall_end', <function date_elem.<locals>.inner at 0x2b0f5c77bc80>), ('bias', <function scaled_elem.<locals>.inner at 0x2b0f5c77bd08>), ('gr_pairs', <function scaled_elem.<locals>.inner at 0x2b0f5c77bd90>))), 81: ('Hourly Digital Precipitation Array', 230.0, <class 'metpy.io.nexrad.PrecipArrayMapper'>, (('max_rainfall', <function scaled_elem.<locals>.inner at 0x2b0f5c77be18>), ('bias', <function scaled_elem.<locals>.inner at 0x2b0f5c77bea0>), ('gr_pairs', <function scaled_elem.<locals>.inner at 0x2b0f5c77bf28>), ('rainfall_end', <function date_elem.<locals>.inner at 0x2b0f5c775048>))), 82: ('Supplemental Precipitation Data', None, <class 'metpy.io.nexrad.LegacyMapper'>, ()), 89: ('Layer Composite Reflectivity (Layer 3 Average)', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('max', 3), ('layer_bottom', <function scaled_elem.<locals>.inner at 0x2b0f5c7750d0>), ('layer_top', <function scaled_elem.<locals>.inner at 0x2b0f5c775158>), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c7751e0>))), 90: ('Layer Composite Reflectivity (Layer 3 Max)', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c775268>), ('max', 3), ('layer_bottom', <function scaled_elem.<locals>.inner at 0x2b0f5c7752f0>), ('layer_top', <function scaled_elem.<locals>.inner at 0x2b0f5c775378>), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c775400>))), 93: ('ITWS Digital Base Velocity', 115.0, <class 'metpy.io.nexrad.DigitalVelMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c775488>), ('min', 3), ('max', 4), ('precision', 6))), 94: ('Base Reflectivity Data Array', 460.0, <class 'metpy.io.nexrad.DigitalRefMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c775510>), ('max', 3), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c775598>))), 95: ('Composite Reflectivity Edited for AP', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c775620>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c7756a8>))), 96: ('Composite Reflectivity Edited for AP', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c775730>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c7757b8>))), 97: ('Composite Reflectivity Edited for AP', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c775840>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c7758c8>))), 98: ('Composite Reflectivity Edited for AP', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c775950>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda> at 0x2b0f5c7759d8>))), 99: ('Base Velocity Data Array', 300.0, <class 'metpy.io.nexrad.DigitalVelMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c775a60>), ('min', 3), ('max', 4), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c775ae8>))), 132: ('Clutter Likelihood Reflectivity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c775b70>),)), 133: ('Clutter Likelihood Doppler', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c775bf8>),)), 134: ('High Resolution VIL', 460.0, <class 'metpy.io.nexrad.DigitalVILMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c775c80>), ('max', 3), ('num_edited', 4), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c775d08>))), 135: ('Enhanced Echo Tops', 345.0, <class 'metpy.io.nexrad.DigitalEETMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c775d90>), ('max', <function scaled_elem.<locals>.inner at 0x2b0f5c775e18>), ('num_edited', 4), ('ref_thresh', 5), ('points_removed', 6), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c775ea0>))), 138: ('Digital Storm Total Precipitation', 230.0, <class 'metpy.io.nexrad.DigitalStormPrecipMapper'>, (('rainfall_begin', <function date_elem.<locals>.inner at 0x2b0f5c775f28>), ('bias', <function scaled_elem.<locals>.inner at 0x2b0f5c766048>), ('max', <function scaled_elem.<locals>.inner at 0x2b0f5c7660d0>), ('rainfall_end', <function date_elem.<locals>.inner at 0x2b0f5c766158>), ('gr_pairs', <function scaled_elem.<locals>.inner at 0x2b0f5c7661e0>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c766268>))), 141: ('Mesocyclone Detection', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('min_ref_thresh', 0), ('overlap_display_filter', 1), ('min_strength_rank', 2))), 152: ('Archive III Status Product', None, <class 'metpy.io.nexrad.LegacyMapper'>, (('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c7662f0>))), 153: ('Super Resolution Reflectivity Data Array', 460.0, <class 'metpy.io.nexrad.DigitalRefMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c766378>), ('max', 3), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c766400>))), 154: ('Super Resolution Velocity Data Array', 300.0, <class 'metpy.io.nexrad.DigitalVelMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c766488>), ('max', 3), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c766510>))), 155: ('Super Resolution Spectrum Width Data Array', 300.0, <class 'metpy.io.nexrad.DigitalSPWMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c766598>), ('max', 3), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c766620>))), 156: ('Turbulence Detection (Eddy Dissipation Rate)', 230.0, <class 'metpy.io.nexrad.EDRMapper'>, (('el_start_time', 0), ('el_end_time', 1), ('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c7666a8>), ('min_el', <function scaled_elem.<locals>.inner at 0x2b0f5c766730>), ('mean_el', <function scaled_elem.<locals>.inner at 0x2b0f5c7667b8>), ('max_el', <function scaled_elem.<locals>.inner at 0x2b0f5c766840>))), 157: ('Turbulence Detection (Eddy Dissipation Rate Confidence)', 230.0, <class 'metpy.io.nexrad.EDRMapper'>, (('el_start_time', 0), ('el_end_time', 1), ('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c7668c8>), ('min_el', <function scaled_elem.<locals>.inner at 0x2b0f5c766950>), ('mean_el', <function scaled_elem.<locals>.inner at 0x2b0f5c7669d8>), ('max_el', <function scaled_elem.<locals>.inner at 0x2b0f5c766a60>))), 158: ('Differential Reflectivity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c766ae8>), ('min', <function scaled_elem.<locals>.inner at 0x2b0f5c766b70>), ('max', <function scaled_elem.<locals>.inner at 0x2b0f5c766bf8>))), 159: ('Digital Differential Reflectivity', 300.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c766c80>), ('min', <function scaled_elem.<locals>.inner at 0x2b0f5c766d08>), ('max', <function scaled_elem.<locals>.inner at 0x2b0f5c766d90>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c766e18>))), 160: ('Correlation Coefficient', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c766ea0>), ('min', <function scaled_elem.<locals>.inner at 0x2b0f5c766f28>), ('max', <function scaled_elem.<locals>.inner at 0x2b0f5c772048>))), 161: ('Digital Correlation Coefficient', 300.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c7720d0>), ('min', <function scaled_elem.<locals>.inner at 0x2b0f5c772158>), ('max', <function scaled_elem.<locals>.inner at 0x2b0f5c7721e0>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c772268>))), 162: ('Specific Differential Phase', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c7722f0>), ('min', <function scaled_elem.<locals>.inner at 0x2b0f5c772378>), ('max', <function scaled_elem.<locals>.inner at 0x2b0f5c772400>))), 163: ('Digital Specific Differential Phase', 300.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c772488>), ('min', <function scaled_elem.<locals>.inner at 0x2b0f5c772510>), ('max', <function scaled_elem.<locals>.inner at 0x2b0f5c772598>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c772620>))), 164: ('Hydrometeor Classification', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c7726a8>),)), 165: ('Digital Hydrometeor Classification', 300.0, <class 'metpy.io.nexrad.DigitalHMCMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c772730>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c7727b8>))), 166: ('Melting Layer', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c772840>),)), 169: ('One Hour Accumulation', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('null_product', <function low_byte.<locals>.inner at 0x2b0f5c7728c8>), ('max', <function scaled_elem.<locals>.inner at 0x2b0f5c772950>), ('rainfall_end', <function date_elem.<locals>.inner at 0x2b0f5c7729d8>), ('bias', <function scaled_elem.<locals>.inner at 0x2b0f5c772a60>), ('gr_pairs', <function scaled_elem.<locals>.inner at 0x2b0f5c772ae8>))), 170: ('Digital Accumulation Array', 230.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('null_product', <function low_byte.<locals>.inner at 0x2b0f5c772b70>), ('max', <function scaled_elem.<locals>.inner at 0x2b0f5c772bf8>), ('rainfall_end', <function date_elem.<locals>.inner at 0x2b0f5c772c80>), ('bias', <function scaled_elem.<locals>.inner at 0x2b0f5c772d08>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c772d90>))), 171: ('Storm Total Accumulation', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('rainfall_begin', <function date_elem.<locals>.inner at 0x2b0f5c772e18>), ('null_product', <function low_byte.<locals>.inner at 0x2b0f5c772ea0>), ('max', <function scaled_elem.<locals>.inner at 0x2b0f5c772f28>), ('rainfall_end', <function date_elem.<locals>.inner at 0x2b0f5c786048>), ('bias', <function scaled_elem.<locals>.inner at 0x2b0f5c7860d0>), ('gr_pairs', <function scaled_elem.<locals>.inner at 0x2b0f5c786158>))), 172: ('Digital Storm total Accumulation', 230.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('rainfall_begin', <function date_elem.<locals>.inner at 0x2b0f5c7861e0>), ('null_product', <function low_byte.<locals>.inner at 0x2b0f5c786268>), ('max', <function scaled_elem.<locals>.inner at 0x2b0f5c7862f0>), ('rainfall_end', <function date_elem.<locals>.inner at 0x2b0f5c786378>), ('bias', <function scaled_elem.<locals>.inner at 0x2b0f5c786400>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c786488>))), 173: ('Digital User-Selectable Accumulation', 230.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('period', 1), ('missing_period', <function high_byte.<locals>.inner at 0x2b0f5c786510>), ('null_product', <function low_byte.<locals>.inner at 0x2b0f5c786598>), ('max', <function scaled_elem.<locals>.inner at 0x2b0f5c786620>), ('rainfall_end', <function date_elem.<locals>.inner at 0x2b0f5c7866a8>), ('start_time', 5), ('bias', <function scaled_elem.<locals>.inner at 0x2b0f5c786730>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c7867b8>))), 174: ('Digital One-Hour Difference Accumulation', 230.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('max', <function scaled_elem.<locals>.inner at 0x2b0f5c786840>), ('rainfall_end', <function date_elem.<locals>.inner at 0x2b0f5c7868c8>), ('min', <function scaled_elem.<locals>.inner at 0x2b0f5c786950>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c7869d8>))), 175: ('Digital Storm Total Difference Accumulation', 230.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('rainfall_begin', <function date_elem.<locals>.inner at 0x2b0f5c786a60>), ('null_product', <function low_byte.<locals>.inner at 0x2b0f5c786ae8>), ('max', <function scaled_elem.<locals>.inner at 0x2b0f5c786b70>), ('rainfall_end', <function date_elem.<locals>.inner at 0x2b0f5c786bf8>), ('min', <function scaled_elem.<locals>.inner at 0x2b0f5c786c80>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c786d08>))), 176: ('Digital Instantaneous Precipitation Rate', 230.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('rainfall_begin', <function date_elem.<locals>.inner at 0x2b0f5c786d90>), ('precip_detected', <function high_byte.<locals>.inner at 0x2b0f5c786e18>), ('need_bias', <function low_byte.<locals>.inner at 0x2b0f5c786ea0>), ('max', 3), ('percent_filled', <function scaled_elem.<locals>.inner at 0x2b0f5c786f28>), ('max_elev', <function scaled_elem.<locals>.inner at 0x2b0f5c79f048>), ('bias', <function scaled_elem.<locals>.inner at 0x2b0f5c79f0d0>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c79f158>))), 177: ('Hybrid Hydrometeor Classification', 230.0, <class 'metpy.io.nexrad.DigitalHMCMapper'>, (('mode_filter_size', 3), ('hybrid_percent_filled', 4), ('max_elev', <function scaled_elem.<locals>.inner at 0x2b0f5c79f1e0>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c79f268>))), 180: ('TDWR Base Reflectivity', 90.0, <class 'metpy.io.nexrad.DigitalRefMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c79f2f0>), ('max', 3), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c79f378>))), 181: ('TDWR Base Reflectivity', 90.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c79f400>), ('max', 3))), 182: ('TDWR Base Velocity', 90.0, <class 'metpy.io.nexrad.DigitalVelMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c79f488>), ('min', 3), ('max', 4), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c79f510>))), 183: ('TDWR Base Velocity', 90.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c79f598>), ('min', 3), ('max', 4))), 185: ('TDWR Base Spectrum Width', 90.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c79f620>), ('max', 3))), 186: ('TDWR Long Range Base Reflectivity', 416.0, <class 'metpy.io.nexrad.DigitalRefMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c79f6a8>), ('max', 3), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner at 0x2b0f5c79f730>))), 187: ('TDWR Long Range Base Reflectivity', 416.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner at 0x2b0f5c79f7b8>), ('max', 3)))}
standalone_tabular = [62, 73, 75, 82]
sym_block_fmt = <metpy.io._tools.NamedStruct object>
sym_layer_fmt = <metpy.io._tools.NamedStruct object>
tab_block_fmt = <metpy.io._tools.NamedStruct object>
tab_header_fmt = <metpy.io._tools.NamedStruct object>
wmo_finder = re.compile('((?:NX|SD|NO)US)\\d{2}[\\s\\w\\d]+\\w*(\\w{3})\r\r\n')

Methods Documentation

__init__(filename)[source]

Create instance of Level3File.

Parameters:filename (str or file-like object) – If str, the name of the file to be opened. If file-like object, this will be read from directly.
static pos_scale(is_sym_block)[source]

Scale of the position information in km.

Examples using metpy.io.Level3File