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 the various compression formats that exist for these products in the wild.

metadata#

Various general metadata available from the product

Type:

dict

header#

Decoded product header

Type:

collections.namedtuple

prod_desc#

Decoded product description block

Type:

collections.namedtuple

siteID#

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

Type:

str

lat#

Radar site latitude

Type:

float

lon#

Radar site longitude

Type:

float

height#

Radar site height AMSL

Type:

float

product_name#

Name of the product contained in file

Type:

str

max_range#

Maximum kilometer range of the product, taken from the NIDS ICD

Type:

float

map_data#

Class instance mapping data int values to proper floating point values

Type:

DataMapper

sym_block#

Any symbology block packets that were found

Type:

list, optional

tab_pages#

Any tabular pages that were found

Type:

list, optional

graph_pages#

Any graphical pages that were found

Type:

list, optional

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

digital_radial_fmt

digital_radial_hdr_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>#
digital_radial_fmt = <metpy.io._tools.NamedStruct object>#
digital_radial_hdr_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>, 2: <function Level3File._unpack_packet_special_text_symbol>, 3: <function Level3File._unpack_packet_special_graphic_symbol>, 4: <function Level3File._unpack_packet_wind_barbs>, 6: <function Level3File._unpack_packet_linked_vector>, 8: <function Level3File._unpack_packet_uniform_text>, 10: <function Level3File._unpack_packet_vector>, 11: <function Level3File._unpack_packet_special_graphic_symbol>, 12: <function Level3File._unpack_packet_special_graphic_symbol>, 13: <function Level3File._unpack_packet_special_graphic_symbol>, 14: <function Level3File._unpack_packet_special_graphic_symbol>, 15: <function Level3File._unpack_packet_special_graphic_symbol>, 16: <function Level3File._unpack_packet_digital_radial>, 17: <function Level3File._unpack_packet_digital_precipitation>, 18: <function Level3File._unpack_packet_digital_precipitation>, 19: <function Level3File._unpack_packet_special_graphic_symbol>, 20: <function Level3File._unpack_packet_special_graphic_symbol>, 21: <function Level3File._unpack_packet_cell_trend>, 22: <function Level3File._unpack_packet_trend_times>, 23: <function Level3File._unpack_packet_scit>, 24: <function Level3File._unpack_packet_scit>, 25: <function Level3File._unpack_packet_special_graphic_symbol>, 26: <function Level3File._unpack_packet_special_graphic_symbol>, 28: <function Level3File._unpack_packet_generic>, 29: <function Level3File._unpack_packet_generic>, 2050: <function Level3File._unpack_packet_contour_color>, 3587: <function Level3File._unpack_packet_linked_contour>, 44831: <function Level3File._unpack_packet_radial_data>, 47623: <function Level3File._unpack_packet_raster_data>}#
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>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda>>))), 17: ('Base Reflectivity', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda>>))), 18: ('Base Reflectivity', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda>>))), 19: ('Base Reflectivity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>), ('calib_const', <function float_elem.<locals>.<lambda>>))), 20: ('Base Reflectivity', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>), ('calib_const', <function float_elem.<locals>.<lambda>>))), 21: ('Base Reflectivity', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda>>))), 22: ('Base Velocity', 60.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', 3), ('max', 4))), 23: ('Base Velocity', 115.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', 3), ('max', 4))), 24: ('Base Velocity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', 3), ('max', 4))), 25: ('Base Velocity', 60.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', 3), ('max', 4))), 26: ('Base Velocity', 115.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', 3), ('max', 4))), 27: ('Base Velocity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', 3), ('max', 4), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>))), 28: ('Base Spectrum Width', 60.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3))), 29: ('Base Spectrum Width', 115.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3))), 30: ('Base Spectrum Width', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>))), 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>), ('rainfall_begin', <function date_elem.<locals>.inner>), ('rainfall_end', <function date_elem.<locals>.inner>), ('bias', <function scaled_elem.<locals>.inner>), ('gr_pairs', <function scaled_elem.<locals>.inner>))), 32: ('Digital Hybrid Scan Reflectivity', 230.0, <class 'metpy.io.nexrad.DigitalRefMapper'>, (('max', 3), ('avg_time', <function date_elem.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 33: ('Hybrid Scan Reflectivity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('max', 3), ('avg_time', <function date_elem.<locals>.inner>))), 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>), ('notchwidth_map_date', <function date_elem.<locals>.inner>))), 35: ('Composite Reflectivity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda>>))), 36: ('Composite Reflectivity', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda>>))), 37: ('Composite Reflectivity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda>>))), 38: ('Composite Reflectivity', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda>>))), 41: ('Echo Tops', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', <function scaled_elem.<locals>.inner>))), 48: ('VAD Wind Profile', None, <class 'metpy.io.nexrad.LegacyMapper'>, (('max', 3), ('dir_max', 4), ('alt_max', <function scaled_elem.<locals>.inner>))), 50: ('Cross Section Reflectivity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('azimuth1', <function scaled_elem.<locals>.inner>), ('range1', <function scaled_elem.<locals>.inner>), ('azimuth2', <function scaled_elem.<locals>.inner>), ('range2', <function scaled_elem.<locals>.inner>))), 51: ('Cross Section Velocity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('azimuth1', <function scaled_elem.<locals>.inner>), ('range1', <function scaled_elem.<locals>.inner>), ('azimuth2', <function scaled_elem.<locals>.inner>), ('range2', <function scaled_elem.<locals>.inner>))), 55: ('Storm Relative Mean Radial Velocity', 50.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('window_az', <function scaled_elem.<locals>.inner>), ('window_range', <function scaled_elem.<locals>.inner>), ('el_angle', <function scaled_elem.<locals>.inner>), ('min', 3), ('max', 4), ('source', 5), ('height', 6), ('avg_speed', <function scaled_elem.<locals>.inner>), ('avg_dir', <function scaled_elem.<locals>.inner>), ('alert_category', 9))), 56: ('Storm Relative Mean Radial Velocity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', 3), ('max', 4), ('source', 5), ('avg_speed', <function scaled_elem.<locals>.inner>), ('avg_dir', <function scaled_elem.<locals>.inner>))), 57: ('Vertically Integrated Liquid', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('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>), ('layer_top', <function scaled_elem.<locals>.inner>), ('calib_const', <function float_elem.<locals>.<lambda>>))), 64: ('Layer Composite Reflectivity (Layer 2 Average)', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('max', 3), ('layer_bottom', <function scaled_elem.<locals>.inner>), ('layer_top', <function scaled_elem.<locals>.inner>), ('calib_const', <function float_elem.<locals>.<lambda>>))), 65: ('Layer Composite Reflectivity (Layer 1 Max)', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('layer_bottom', <function scaled_elem.<locals>.inner>), ('layer_top', <function scaled_elem.<locals>.inner>), ('calib_const', <function float_elem.<locals>.<lambda>>))), 66: ('Layer Composite Reflectivity (Layer 2 Max)', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('layer_bottom', <function scaled_elem.<locals>.inner>), ('layer_top', <function scaled_elem.<locals>.inner>), ('calib_const', <function float_elem.<locals>.<lambda>>))), 67: ('Layer Composite Reflectivity - AP Removed', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('layer_bottom', <function scaled_elem.<locals>.inner>), ('layer_top', <function scaled_elem.<locals>.inner>), ('calib_const', <function float_elem.<locals>.<lambda>>))), 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>), ('bias', <function scaled_elem.<locals>.inner>), ('gr_pairs', <function scaled_elem.<locals>.inner>), ('rainfall_end', <function date_elem.<locals>.inner>))), 79: ('Surface Rainfall Accumulation (3 hour)', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('max_rainfall', <function scaled_elem.<locals>.inner>), ('bias', <function scaled_elem.<locals>.inner>), ('gr_pairs', <function scaled_elem.<locals>.inner>), ('rainfall_end', <function date_elem.<locals>.inner>))), 80: ('Storm Total Rainfall Accumulation', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('max_rainfall', <function scaled_elem.<locals>.inner>), ('rainfall_begin', <function date_elem.<locals>.inner>), ('rainfall_end', <function date_elem.<locals>.inner>), ('bias', <function scaled_elem.<locals>.inner>), ('gr_pairs', <function scaled_elem.<locals>.inner>))), 81: ('Hourly Digital Precipitation Array', 230.0, <class 'metpy.io.nexrad.PrecipArrayMapper'>, (('max_rainfall', <function scaled_elem.<locals>.inner>), ('bias', <function scaled_elem.<locals>.inner>), ('gr_pairs', <function scaled_elem.<locals>.inner>), ('rainfall_end', <function date_elem.<locals>.inner>))), 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>), ('layer_top', <function scaled_elem.<locals>.inner>), ('calib_const', <function float_elem.<locals>.<lambda>>))), 90: ('Layer Composite Reflectivity (Layer 3 Max)', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('layer_bottom', <function scaled_elem.<locals>.inner>), ('layer_top', <function scaled_elem.<locals>.inner>), ('calib_const', <function float_elem.<locals>.<lambda>>))), 93: ('ITWS Digital Base Velocity', 115.0, <class 'metpy.io.nexrad.DigitalVelMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('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>), ('max', 3), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 95: ('Composite Reflectivity Edited for AP', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda>>))), 96: ('Composite Reflectivity Edited for AP', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda>>))), 97: ('Composite Reflectivity Edited for AP', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda>>))), 98: ('Composite Reflectivity Edited for AP', 460.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('calib_const', <function float_elem.<locals>.<lambda>>))), 99: ('Base Velocity Data Array', 300.0, <class 'metpy.io.nexrad.DigitalVelMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', 3), ('max', 4), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 113: ('Power Removed Control', 300.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('rpg_cut_num', 0), ('cmd_generated', 1), ('el_angle', <function scaled_elem.<locals>.inner>), ('clutter_filter_map_dt', <function date_elem.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 132: ('Clutter Likelihood Reflectivity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>))), 133: ('Clutter Likelihood Doppler', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>))), 134: ('High Resolution VIL', 460.0, <class 'metpy.io.nexrad.DigitalVILMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('num_edited', 4), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 135: ('Enhanced Echo Tops', 345.0, <class 'metpy.io.nexrad.DigitalEETMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', <function scaled_elem.<locals>.inner>), ('num_edited', 4), ('ref_thresh', 5), ('points_removed', 6), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 138: ('Digital Storm Total Precipitation', 230.0, <class 'metpy.io.nexrad.DigitalStormPrecipMapper'>, (('rainfall_begin', <function date_elem.<locals>.inner>), ('bias', <function scaled_elem.<locals>.inner>), ('max', <function scaled_elem.<locals>.inner>), ('rainfall_end', <function date_elem.<locals>.inner>), ('gr_pairs', <function scaled_elem.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 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>))), 153: ('Super Resolution Reflectivity Data Array', 460.0, <class 'metpy.io.nexrad.DigitalRefMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 154: ('Super Resolution Velocity Data Array', 300.0, <class 'metpy.io.nexrad.DigitalVelMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', 3), ('max', 4), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 155: ('Super Resolution Spectrum Width Data Array', 300.0, <class 'metpy.io.nexrad.DigitalSPWMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 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>), ('min_el', <function scaled_elem.<locals>.inner>), ('mean_el', <function scaled_elem.<locals>.inner>), ('max_el', <function scaled_elem.<locals>.inner>))), 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>), ('min_el', <function scaled_elem.<locals>.inner>), ('mean_el', <function scaled_elem.<locals>.inner>), ('max_el', <function scaled_elem.<locals>.inner>))), 158: ('Differential Reflectivity', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', <function scaled_elem.<locals>.inner>), ('max', <function scaled_elem.<locals>.inner>))), 159: ('Digital Differential Reflectivity', 300.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', <function scaled_elem.<locals>.inner>), ('max', <function scaled_elem.<locals>.inner>), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 160: ('Correlation Coefficient', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', <function scaled_elem.<locals>.inner>), ('max', <function scaled_elem.<locals>.inner>))), 161: ('Digital Correlation Coefficient', 300.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', <function scaled_elem.<locals>.inner>), ('max', <function scaled_elem.<locals>.inner>), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 162: ('Specific Differential Phase', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', <function scaled_elem.<locals>.inner>), ('max', <function scaled_elem.<locals>.inner>))), 163: ('Digital Specific Differential Phase', 300.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', <function scaled_elem.<locals>.inner>), ('max', <function scaled_elem.<locals>.inner>), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 164: ('Hydrometeor Classification', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>),)), 165: ('Digital Hydrometeor Classification', 300.0, <class 'metpy.io.nexrad.DigitalHMCMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 166: ('Melting Layer', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>))), 167: ('Super Res Digital Correlation Coefficient', 300.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', <function scaled_elem.<locals>.inner>), ('max', <function scaled_elem.<locals>.inner>), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 168: ('Super Res Digital Phi', 300.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', 3), ('max', 4), ('delta_time', <function delta_time.<locals>.inner>), ('supplemental_scan', <function supplemental_scan.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 169: ('One Hour Accumulation', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('null_product', <function low_byte.<locals>.inner>), ('max', <function scaled_elem.<locals>.inner>), ('rainfall_end', <function date_elem.<locals>.inner>), ('bias', <function scaled_elem.<locals>.inner>), ('gr_pairs', <function scaled_elem.<locals>.inner>))), 170: ('Digital Accumulation Array', 230.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('null_product', <function low_byte.<locals>.inner>), ('max', <function scaled_elem.<locals>.inner>), ('rainfall_end', <function date_elem.<locals>.inner>), ('bias', <function scaled_elem.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 171: ('Storm Total Accumulation', 230.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('rainfall_begin', <function date_elem.<locals>.inner>), ('null_product', <function low_byte.<locals>.inner>), ('max', <function scaled_elem.<locals>.inner>), ('rainfall_end', <function date_elem.<locals>.inner>), ('bias', <function scaled_elem.<locals>.inner>), ('gr_pairs', <function scaled_elem.<locals>.inner>))), 172: ('Digital Storm Total Accumulation', 230.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('rainfall_begin', <function date_elem.<locals>.inner>), ('null_product', <function low_byte.<locals>.inner>), ('max', <function scaled_elem.<locals>.inner>), ('rainfall_end', <function date_elem.<locals>.inner>), ('bias', <function scaled_elem.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 173: ('Digital User-Selectable Accumulation', 230.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('period', 1), ('missing_period', <function high_byte.<locals>.inner>), ('null_product', <function low_byte.<locals>.inner>), ('max', <function scaled_elem.<locals>.inner>), ('rainfall_end', <function date_elem.<locals>.inner>), ('start_time', 5), ('bias', <function scaled_elem.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 174: ('Digital One-Hour Difference Accumulation', 230.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('max', <function scaled_elem.<locals>.inner>), ('rainfall_end', <function date_elem.<locals>.inner>), ('min', <function scaled_elem.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 175: ('Digital Storm Total Difference Accumulation', 230.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('rainfall_begin', <function date_elem.<locals>.inner>), ('null_product', <function low_byte.<locals>.inner>), ('max', <function scaled_elem.<locals>.inner>), ('rainfall_end', <function date_elem.<locals>.inner>), ('min', <function scaled_elem.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 176: ('Digital Instantaneous Precipitation Rate', 230.0, <class 'metpy.io.nexrad.GenericDigitalMapper'>, (('rainfall_begin', <function date_elem.<locals>.inner>), ('precip_detected', <function high_byte.<locals>.inner>), ('need_bias', <function low_byte.<locals>.inner>), ('max', 3), ('percent_filled', <function scaled_elem.<locals>.inner>), ('max_elev', <function scaled_elem.<locals>.inner>), ('bias', <function scaled_elem.<locals>.inner>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 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>), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 180: ('TDWR Base Reflectivity', 90.0, <class 'metpy.io.nexrad.DigitalRefMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 181: ('TDWR Base Reflectivity', 90.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3))), 182: ('TDWR Base Velocity', 90.0, <class 'metpy.io.nexrad.DigitalVelMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', 3), ('max', 4), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 183: ('TDWR Base Velocity', 90.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('min', 3), ('max', 4))), 185: ('TDWR Base Spectrum Width', 90.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3))), 186: ('TDWR Long Range Base Reflectivity', 416.0, <class 'metpy.io.nexrad.DigitalRefMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('max', 3), ('compression', 7), ('uncompressed_size', <function combine_elem.<locals>.inner>))), 187: ('TDWR Long Range Base Reflectivity', 416.0, <class 'metpy.io.nexrad.LegacyMapper'>, (('el_angle', <function scaled_elem.<locals>.inner>), ('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#

NEXRAD Level 3 File

NEXRAD Level 3 File