From cfc8679ba39135fa2fd547bed38aa192358e0180 Mon Sep 17 00:00:00 2001 From: Eric Engle Date: Wed, 17 Jan 2024 11:24:01 -0500 Subject: [PATCH] Adding MRMS GRIB2 tables. This commit provides support for MRMS GRIB2 tables. MRMS uses the GRIB2 discipline value of 209. The included UserTable_MRMS_v12.2.csv contains more information than what is needed, so in time, other attributes from the table can be added. This commit references issue #120 --- .../UserTable_MRMS_PrecipFlags.csv | 10 ++ make_grib2_tables/UserTable_MRMS_v12.2.csv | 152 ++++++++++++++++++ .../make-mrms-grib2-sect4-parameters.py | 38 +++++ make_grib2_tables/make-ncep-grib2-tables.sh | 5 + 4 files changed, 205 insertions(+) create mode 100644 make_grib2_tables/UserTable_MRMS_PrecipFlags.csv create mode 100644 make_grib2_tables/UserTable_MRMS_v12.2.csv create mode 100755 make_grib2_tables/make-mrms-grib2-sect4-parameters.py diff --git a/make_grib2_tables/UserTable_MRMS_PrecipFlags.csv b/make_grib2_tables/UserTable_MRMS_PrecipFlags.csv new file mode 100644 index 0000000..fbc8196 --- /dev/null +++ b/make_grib2_tables/UserTable_MRMS_PrecipFlags.csv @@ -0,0 +1,10 @@ +Flag,Description +-3,no coverage +0,no precipitation +1,warm stratiform rain +3,snow +6,convective rain +7,rain mixed with hail +10,cold stratiform rain +91,tropical/stratiform rain mix +96,tropical/convective rain mix diff --git a/make_grib2_tables/UserTable_MRMS_v12.2.csv b/make_grib2_tables/UserTable_MRMS_v12.2.csv new file mode 100644 index 0000000..74eb27c --- /dev/null +++ b/make_grib2_tables/UserTable_MRMS_v12.2.csv @@ -0,0 +1,152 @@ +Discipline,Category,Parameter,Name,Frequency,Unit,Missing,Range Folded,No Coverage,Description,Notes +209,2,0,NLDN_CG_001min_AvgDensity,1-min,flashes/km^2/min,-1,n/a,-3,CG Average Lightning Density 1-min - NLDN,was NLDN_CG_001min; ConUS only +209,2,1,NLDN_CG_005min_AvgDensity,1-min,flashes/km^2/min,-1,n/a,-3,CG Average Lightning Density 5-min - NLDN,was NLDN_CG_005min; ConUS only +209,2,2,NLDN_CG_015min_AvgDensity,1-min,flashes/km^2/min,-1,n/a,-3,CG Average Lightning Density 15-min - NLDN,was NLDN_CG_015min; ConUS only +209,2,3,NLDN_CG_030min_AvgDensity,1-min,flashes/km^2/min,-1,n/a,-3,CG Average Lightning Density 30-min - NLDN,was NLDN_CG_030min; ConUS only +209,2,5,LightningProbabilityNext30minGrid,2-min,%,0,n/a,0,Lightning Probability 0-30 minutes - NLDN,ConUS Only +209,2,6,LightningProbabilityNext60minGrid,2-min,%,0,n/a,0,Lightning Probability 0-30 minutes - NLDN,ConUS Only +209,2,7,LightningJumpGrid,2-min,non-dim,-99900,n/a,-99903,Rapid lightning increases and decreases ,ConUS Only +209,2,8,LightningJumpGrid_Max_005min,2-min,non-dim,-99900,n/a,-99903,Rapid lightning increases and decreases over 5-minutes ,ConUS Only +209,3,0,MergedAzShear0to2kmAGL,2-min,0.001/s,0,0,0,Azimuth Shear 0-2km AGL,no Alaska product +209,3,1,MergedAzShear3to6kmAGL,2-min,0.001/s,0,0,0,Azimuth Shear 3-6km AGL,no Alaska product +209,3,2,RotationTrack30min,2-min,0.001/s,0,n/a,0,Rotation Track 0-2km AGL 30-min,no Alaska product +209,3,3,RotationTrack60min,2-min,0.001/s,0,n/a,0,Rotation Track 0-2km AGL 60-min,no Alaska product +209,3,4,RotationTrack120min,30-min,0.001/s,0,n/a,0,Rotation Track 0-2km AGL 120-min,no Alaska product +209,3,5,RotationTrack240min,30-min,0.001/s,0,n/a,0,Rotation Track 0-2km AGL 240-min,no Alaska product +209,3,6,RotationTrack360min,30-min,0.001/s,0,n/a,0,Rotation Track 0-2km AGL 360-min,no Alaska product +209,3,7,RotationTrack1440min,30-min,0.001/s,0,n/a,0,Rotation Track 0-2km AGL 1440-min,no Alaska product +209,3,14,RotationTrackML30min,2-min,0.001/s,0,n/a,0,Rotation Track 3-6km AGL 30-min,no Alaska product +209,3,15,RotationTrackML60min,2-min,0.001/s,0,n/a,0,Rotation Track 3-6km AGL 60-min,no Alaska product +209,3,16,RotationTrackML120min,30-min,0.001/s,0,n/a,0,Rotation Track 3-6km AGL 120-min,no Alaska product +209,3,17,RotationTrackML240min,30-min,0.001/s,0,n/a,0,Rotation Track 3-6km AGL 240-min,no Alaska product +209,3,18,RotationTrackML360min,30-min,0.001/s,0,n/a,0,Rotation Track 3-6km AGL 360-min,no Alaska product +209,3,19,RotationTrackML1440min,30-min,0.001/s,0,n/a,0,Rotation Track 3-6km AGL 1440-min,no Alaska product +209,3,26,SHI,2-min,index,-1,n/a,-3,Severe Hail Index, +209,3,27,POSH,2-min,%,-1,n/a,-3,Prob of Severe Hail, +209,3,28,MESH,2-min,mm,-1,n/a,-3,Maximum Estimated Size of Hail (MESH), +209,3,29,MESHMax30min,2-min,mm,-1,n/a,-3,MESH Hail Swath 30-min, +209,3,30,MESHMax60min,2-min,mm,-1,n/a,-3,MESH Hail Swath 60-min, +209,3,31,MESHMax120min,30-min,mm,-1,n/a,-3,MESH Hail Swath 120-min, +209,3,32,MESHMax240min,30-min,mm,-1,n/a,-3,MESH Hail Swath 240-min, +209,3,33,MESHMax360min,30-min,mm,-1,n/a,-3,MESH Hail Swath 360-min, +209,3,34,MESHMax1440min,30-min,mm,-1,n/a,-3,MESH Hail Swath 1440-min, +209,3,37,VIL_Max_120min,30-min,kg/m^2,-1,n/a,-3,VIL Swath 120-min, +209,3,40,VIL_Max_1440min,30-min,kg/m^2,-1,n/a,-3,VIL Swath 1440-min, +209,3,41,VIL,2-min,kg/m^2,-1,n/a,-3,Vertically Integrated Liquid, +209,3,42,VIL_Density,2-min,g/m^3,-1,n/a,-3,Vertically Integrated Liquid Density, +209,3,43,VII,2-min,kg/m^2,-1,n/a,-3,Vertically Integrated Ice, +209,3,44,EchoTop_18,2-min,km MSL,-1,n/a,-3,Echo Top - 18 dBZ, +209,3,45,EchoTop_30,2-min,km MSL,-1,n/a,-3,Echo Top - 30 dBZ, +209,3,46,EchoTop_50,2-min,km MSL,-1,n/a,-3,Echo Top - 50 dBZ, +209,3,47,EchoTop_60,2-min,km MSL,-1,n/a,-3,Echo Top - 60 dBZ, +209,3,48,H50AboveM20C,2-min,km,-99,n/a,-999,Thickness [50 dBZ top - (-20C)], +209,3,49,H50Above0C,2-min,km,-99,n/a,-999,Thickness [50 dBZ top - 0C], +209,3,50,H60AboveM20C,2-min,km,-99,n/a,-999,Thickness [60 dBZ top - (-20C)], +209,3,51,H60Above0C,2-min,km,-99,n/a,-999,Thickness [60 dBZ top - 0C], +209,3,52,Reflectivity_0C,2-min,dBZ,-99,n/a,-999,Isothermal Reflectivity at 0C, +209,3,53,Reflectivity_-5C,2-min,dBZ,-99,n/a,-999,Isothermal Reflectivity at -5C, +209,3,54,Reflectivity_-10C,2-min,dBZ,-99,n/a,-999,Isothermal Reflectivity at -10C, +209,3,55,Reflectivity_-15C,2-min,dBZ,-99,n/a,-999,Isothermal Reflectivity at -15C, +209,3,56,Reflectivity_-20C,2-min,dBZ,-99,n/a,-999,Isothermal Reflectivity at -20C, +209,3,57,ReflectivityAtLowestAltitude,2-min,dBZ,-99,n/a,-999,ReflectivityAtLowestAltitude, +209,3,57,ReflectivityAtLowestAltitude5km,2-min,dBZ,-99,n/a,-999,ReflectivityAtLowestAltitude resampled from 1 to 5km resolution,ConUS only - removed at v12.1 +209,3,58,MergedReflectivityAtLowestAltitude,2-min,dBZ,-99,n/a,-999,Non Quality Controlled Reflectivity At Lowest Altitude, +209,6,0,PrecipFlag,2-min,flag,-1,n/a,-3,"Surface Precipitation Type (Convective, Stratiform, Tropical, Hail, Snow)",see flag table +209,6,1,PrecipRate,2-min,mm/hr,-1,n/a,-3,Radar Precipitation Rate, +209,6,2,RadarOnly_QPE_01H,2-min,mm,-1,n/a,-3,Radar precipitation accumulation 1-hour, +209,6,3,RadarOnly_QPE_03H,60-min,mm,-1,n/a,-3,Radar precipitation accumulation 3-hour, +209,6,4,RadarOnly_QPE_06H,60-min,mm,-1,n/a,-3,Radar precipitation accumulation 6-hour, +209,6,5,RadarOnly_QPE_12H,60-min,mm,-1,n/a,-3,Radar precipitation accumulation 12-hour, +209,6,6,RadarOnly_QPE_24H,60-min,mm,-1,n/a,-3,Radar precipitation accumulation 24-hour, +209,6,7,RadarOnly_QPE_48H,60-min,mm,-1,n/a,-3,Radar precipitation accumulation 48-hour, +209,6,8,RadarOnly_QPE_72H,60-min,mm,-1,n/a,-3,Radar precipitation accumulation 72-hour, +209,6,30,MultiSensor_QPE_01H_Pass1,60-min,mm,-1,n/a,-3,Multi-sensor accumulation 1-hour (1-hour latency), +209,6,31,MultiSensor_QPE_03H_Pass1,60-min,mm,-1,n/a,-3,Multi-sensor accumulation 3-hour (1-hour latency), +209,6,32,MultiSensor_QPE_06H_Pass1,60-min,mm,-1,n/a,-3,Multi-sensor accumulation 6-hour (1-hour latency), +209,6,33,MultiSensor_QPE_12H_Pass1,60-min,mm,-1,n/a,-3,Multi-sensor accumulation 12-hour (1-hour latency), +209,6,34,MultiSensor_QPE_24H_Pass1,60-min,mm,-1,n/a,-3,Multi-sensor accumulation 24-hour (1-hour latency), +209,6,35,MultiSensor_QPE_48H_Pass1,60-min,mm,-1,n/a,-3,Multi-sensor accumulation 48-hour (1-hour latency), +209,6,36,MultiSensor_QPE_72H_Pass1,60-min,mm,-1,n/a,-3,Multi-sensor accumulation 72-hour (1-hour latency), +209,6,37,MultiSensor_QPE_01H_Pass2,60-min,mm,-1,n/a,-3,Multi-sensor accumulation 1-hour (2-hour latency), +209,6,38,MultiSensor_QPE_03H_Pass2,60-min,mm,-1,n/a,-3,Multi-sensor accumulation 3-hour (2-hour latency), +209,6,39,MultiSensor_QPE_06H_Pass2,60-min,mm,-1,n/a,-3,Multi-sensor accumulation 6-hour (2-hour latency), +209,6,40,MultiSensor_QPE_12H_Pass2,60-min,mm,-1,n/a,-3,Multi-sensor accumulation 12-hour (2-hour latency), +209,6,41,MultiSensor_QPE_24H_Pass2,60-min,mm,-1,n/a,-3,Multi-sensor accumulation 24-hour (2-hour latency), +209,6,42,MultiSensor_QPE_48H_Pass2,60-min,mm,-1,n/a,-3,Multi-sensor accumulation 48-hour (2-hour latency), +209,6,43,MultiSensor_QPE_72H_Pass2,60-min,mm,-1,n/a,-3,Multi-sensor accumulation 72-hour (2-hour latency), +209,6,44,SyntheticPrecipRateID,2-min,flag,-1,n/a,-3,Method IDs for blended single and dual-pol derived precip rates , +209,6,45,RadarOnly_QPE_15M,15-min,mm,-1,n/a,-3,Radar precipitation accumulation 15-minute, +209,6,46,RadarOnly_QPE_Since12Z,60-min,mm,-1,n/a,-3,Radar precipitation accumulation since 12Z, +209,7,0,Model_SurfaceTemp,60-min,C,-99,n/a,-999,Model Surface temperature, +209,7,1,Model_WetBulbTemp,60-min,C,-99,n/a,-999,Model Surface wet bulb temperature, +209,7,2,WarmRainProbability,60-min,%,-1,n/a,-3,Probability of warm rain, +209,7,3,Model_0degC_Height,60-min,m MSL,-1,n/a,-3,Model Freezing Level Height, +209,7,4,BrightBandTopHeight,2-min,m AGL,-1,n/a,-3,Brightband Top Height, +209,7,5,BrightBandBottomHeight,2-min,m AGL,-1,n/a,-3,Brightband Bottom Height, +209,8,0,RadarQualityIndex,2-min,non-dim,-1,n/a,-3,Radar Quality Index, +209,8,1,GaugeInflIndex_01H_Pass1,60-min,non-dim,-1,n/a,-3,Gauge Influence Index for 1-hour QPE (1-hour latency),was GaugeInflIndex_01H prior to v12.0 +209,8,2,GaugeInflIndex_03H_Pass1,60-min,non-dim,-1,n/a,-3,Gauge Influence Index for 3-hour QPE (1-hour latency),was GaugeInflIndex_03H prior to v12.0 +209,8,3,GaugeInflIndex_06H_Pass1,60-min,non-dim,-1,n/a,-3,Gauge Influence Index for 6-hour QPE (1-hour latency),was GaugeInflIndex_06H prior to v12.0 +209,8,4,GaugeInflIndex_12H_Pass1,60-min,non-dim,-1,n/a,-3,Gauge Influence Index for 12-hour QPE (1-hour latency),was GaugeInflIndex_12H prior to v12.0 +209,8,5,GaugeInflIndex_24H_Pass1,60-min,non-dim,-1,n/a,-3,Gauge Influence Index for 24-hour QPE (1-hour latency),was GaugeInflIndex_24H prior to v12.0 +209,8,6,GaugeInflIndex_48H_Pass1,60-min,non-dim,-1,n/a,-3,Gauge Influence Index for 48-hour QPE (1-hour latency),was GaugeInflIndex_48H prior to v12.0 +209,8,7,GaugeInflIndex_72H_Pass1,60-min,non-dim,-1,n/a,-3,Gauge Influence Index for 72-hour QPE (1-hour latency),was GaugeInflIndex_72H prior to v12.0 +209,8,8,SeamlessHSR,2-min,dBZ,-99,n/a,-999,Seamless Hybrid Scan Reflectivity with VPR correction, +209,8,9,SeamlessHSRHeight,2-min,km AGL,-1,n/a,-3,Height of Seamless Hybrid Scan Reflectivity, +209,8,10,RadarAccumulationQualityIndex_01H,60-min,non-dim,-1,n/a,-3,Radar 1-hour QPE Accumulation Quality, +209,8,11,RadarAccumulationQualityIndex_03H,60-min,non-dim,-1,n/a,-3,Radar 3-hour QPE Accumulation Quality, +209,8,12,RadarAccumulationQualityIndex_06H,60-min,non-dim,-1,n/a,-3,Radar 6-hour QPE Accumulation Quality, +209,8,13,RadarAccumulationQualityIndex_12H,60-min,non-dim,-1,n/a,-3,Radar 12-hour QPE Accumulation Quality, +209,8,14,RadarAccumulationQualityIndex_24H,60-min,non-dim,-1,n/a,-3,Radar 24-hour QPE Accumulation Quality, +209,8,15,RadarAccumulationQualityIndex_48H,60-min,non-dim,-1,n/a,-3,Radar 48-hour QPE Accumulation Quality, +209,8,16,RadarAccumulationQualityIndex_72H,60-min,non-dim,-1,n/a,-3,Radar 72-hour QPE Accumulation Quality, +209,8,17,GaugeInflIndex_01H_Pass2,60-min,non-dim,-1,n/a,-3,Gauge Influence Index for 1-hour QPE (2-hour latency), +209,8,18,GaugeInflIndex_03H_Pass2,60-min,non-dim,-1,n/a,-3,Gauge Influence Index for 3-hour QPE (2-hour latency), +209,8,19,GaugeInflIndex_06H_Pass2,60-min,non-dim,-1,n/a,-3,Gauge Influence Index for 6-hour QPE (2-hour latency), +209,8,20,GaugeInflIndex_12H_Pass2,60-min,non-dim,-1,n/a,-3,Gauge Influence Index for 12-hour QPE (2-hour latency), +209,8,21,GaugeInflIndex_24H_Pass2,60-min,non-dim,-1,n/a,-3,Gauge Influence Index for 24-hour QPE (2-hour latency), +209,8,22,GaugeInflIndex_48H_Pass2,60-min,non-dim,-1,n/a,-3,Gauge Influence Index for 48-hour QPE (2-hour latency), +209,8,23,GaugeInflIndex_72H_Pass2,60-min,non-dim,-1,n/a,-3,Gauge Influence Index for 72-hour QPE (2-hour latency), +209,9,0,MergedReflectivityQC,2-min,dBZ,-99,n/a,-999,3D Reflectivty Mosaic - 33 CAPPIS (500-19000m),33 levels (one file per level) +209,9,3,MergedRhoHV,5-min,non-dim,-99,n/a,-999,3D RhoHV Mosaic - 33 CAPPIS (500-19000m),"33 levels (one file per level), ConUS only" +209,9,4,MergedZdr,5-min,dB,-99,n/a,-999,3D Zdr Mosaic - 33 CAPPIS (500-19000m),"33 levels (one file per level), ConUS only" +209,10,0,MergedReflectivityQCComposite,2-min,dBZ,-99,n/a,-999,Composite Reflectivity Mosaic (optimal method), +209,10,0,MergedReflectivityQCComposite5km,2-min,dBZ,-99,n/a,-999,Composite Reflectivity Mosaic (optimal method) resampled from 1 to 5km,ConUS only - removed at v12.1 +209,10,1,HeightCompositeReflectivity,2-min,m MSL,-1,n/a,-3,Height of Composite Reflectivity Mosaic (optimal method), +209,10,2,LowLevelCompositeReflectivity,2-min,dBZ,-99,n/a,-999,Low-Level Composite Reflectivity Mosaic (0-4km), +209,10,3,HeightLowLevelCompositeReflectivity,2-min,m MSL,-1,n/a,-3,Height of Low-Level Composite Reflectivity Mosaic (0-4km), +209,10,4,LayerCompositeReflectivity_Low,2-min,dBZ,-99,n/a,-999,Layer Composite Reflectivity Mosaic 0-24kft (low altitude), +209,10,5,LayerCompositeReflectivity_High,2-min,dBZ,-99,n/a,-999,Layer Composite Reflectivity Mosaic 24-60 kft (highest altitude), +209,10,6,LayerCompositeReflectivity_Super,2-min,dBZ,-99,n/a,-999,Layer Composite Reflectivity Mosaic 33-60 kft (super high altitude), +209,10,7,CREF_1HR_MAX,60-min,dBZ,-99,n/a,-999,Composite Reflectivity Hourly Maximum, +209,10,9,LayerCompositeReflectivity_ANC,2-min,dBZ,-99,n/a,-999,Layer Composite Reflectivity Mosaic (2-4.5km) (for ANC),ConUS only +209,10,10,BREF_1HR_MAX,60-min,dBZ,-99,n/a,-999,Base Reflectivity Hourly Maximum, +209,11,0,MergedBaseReflectivityQC,2-min,dBZ,-99,n/a,-999,Base Reflectivity Mosaic (optimal method), +209,11,1,MergedReflectivityComposite,2-min,dBZ,-99,n/a,-999,Raw Composite Reflectivity Mosaic (max ref), +209,11,2,MergedReflectivityQComposite,2-min,dBZ,-99,n/a,-999,Composite Reflectivity Mosaic (max ref), +209,11,3,MergedBaseReflectivity,2-min,dBZ,-99,n/a,-999,Raw Base Reflectivity Mosaic (optimal method), +209,12,0,FLASH_CREST_MAXUNITSTREAMFLOW,10-min,m^3/s/km^2,-9999,n/a,-9999,FLASH QPE-CREST Unit Streamflow, +209,12,1,FLASH_CREST_MAXSTREAMFLOW,10-min,m^3/s,-9999,n/a,-9999,FLASH QPE-CREST Streamflow, +209,12,2,FLASH_CREST_MAXSOILSAT,10-min,%,-9999,n/a,-9999,FLASH QPE-CREST Soil Saturation, +209,12,4,FLASH_SAC_MAXUNITSTREAMFLOW,10-min,m^3/s/km^2,-9999,n/a,-9999,FLASH QPE-SAC Unit Streamflow, +209,12,5,FLASH_SAC_MAXSTREAMFLOW,10-min,m^3/s,-9999,n/a,-9999,FLASH QPE-SAC Streamflow, +209,12,6,FLASH_SAC_MAXSOILSAT,10-min,%,-9999,n/a,-9999,FLASH QPE-SAC Soil Saturation, +209,12,14,FLASH_QPE_ARI30M,2-min,years,-999,n/a,-999,FLASH QPE Average Recurrence Interval 30-min, +209,12,15,FLASH_QPE_ARI01H,2-min,years,-999,n/a,-999,FLASH QPE Average Recurrence Interval 01H, +209,12,16,FLASH_QPE_ARI03H,2-min,years,-999,n/a,-999,FLASH QPE Average Recurrence Interval 03H, +209,12,17,FLASH_QPE_ARI06H,2-min,years,-999,n/a,-999,FLASH QPE Average Recurrence Interval 06H, +209,12,18,FLASH_QPE_ARI12H,2-min,years,-999,n/a,-999,FLASH QPE Average Recurrence Interval 12H, +209,12,19,FLASH_QPE_ARI24H,2-min,years,-999,n/a,-999,FLASH QPE Average Recurrence Interval 24H, +209,12,20,FLASH_QPE_ARIMAX,2-min,years,-999,n/a,-999,FLASH QPE Average Recurrence Interval Maximum, +209,12,26,FLASH_QPE_FFG01H,2-min,non-dim,-999,n/a,-999,FLASH QPE-to-FFG Ratio 01H,no Alaska product +209,12,27,FLASH_QPE_FFG03H,2-min,non-dim,-999,n/a,-999,FLASH QPE-to-FFG Ratio 03H,no Alaska product +209,12,28,FLASH_QPE_FFG06H,2-min,non-dim,-999,n/a,-999,FLASH QPE-to-FFG Ratio 06H,no Alaska product +209,12,29,FLASH_QPE_FFGMAX,2-min,non-dim,-999,n/a,-999,FLASH QPE-to-FFG Ratio Maximum,no Alaska product +209,12,39,FLASH_HP_MAXUNITSTREAMFLOW,10-min,m^3/s/km^2,-9999,n/a,-9999,FLASH QPE-Hydrophobic Unit Streamflow, +209,12,40,FLASH_HP_MAXSTREAMFLOW,10-min,m^3/s,-9999,n/a,-9999,FLASH QPE-Hydrophobic Streamflow, +209,13,0,ANC_ConvectiveLikelihood,10-min,non-dim,0,n/a,0,Likelihood of convection over the next 01H,ConUS only - discontinued Sept 2023 +209,13,1,ANC_FinalForecast,10-min,dBZ,0,n/a,0,01H reflectivity forecast,ConUS only - discontinued Sept 2023 +209,14,0,LVL3_HREET,2-min,kft,-1,n/a,-3,Level III High Resolution Enhanced Echo Top mosaic,ConUS only +209,14,1,LVL3_HighResVIL,2-min,kg/m^2,-1,n/a,-3,Level III High Resouion VIL mosaic,ConUS only +Not GRIB2,n/a,n/a,CONVECTPROB (ASCII),2-min,n/a,n/a,n/a,n/a,Prob Severe v1,ConUS only +Not GRIB2,n/a,n/a,PROBSEVERE (JSON),2-min,n/a,n/a,n/a,n/a,Prob Severe v2,ConUS only diff --git a/make_grib2_tables/make-mrms-grib2-sect4-parameters.py b/make_grib2_tables/make-mrms-grib2-sect4-parameters.py new file mode 100755 index 0000000..b0b8ef9 --- /dev/null +++ b/make_grib2_tables/make-mrms-grib2-sect4-parameters.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 + +import pandas as pd + +# ---------------------------------------------------------------------------------------- +# Some variables. +# ---------------------------------------------------------------------------------------- +startdict = '{' +enddict = '}\n' +discipline = 209 + +# ---------------------------------------------------------------------------------------- +# Read the MRMS product table CSV file and remove "n/a" lines. +# ---------------------------------------------------------------------------------------- +df = pd.read_csv('UserTable_MRMS_v12.2.csv') +df = df[df['Discipline']==str(discipline)] + +# ---------------------------------------------------------------------------------------- +# Create a list of unique parameter categories. +# ---------------------------------------------------------------------------------------- +parmcats = [int(n) for n in set(list(df.Category.values))] + +# ---------------------------------------------------------------------------------------- +# Iterate over parameter categories, then rows matching, and create the dictionary entry. +# ---------------------------------------------------------------------------------------- +for pc in parmcats: + dictname = f'table_4_2_{discipline}_{pc} = {startdict}' + print(dictname) + df2 = df[df['Category']==float(pc)] + for idx,row in df2.iterrows(): + parmcat = int(row['Category']) + parmnum = int(row['Parameter']) + name = row['Name'] + unit = row['Unit'] + description = row['Description'] + line = f'\'{str(parmnum)}\':[\'{description}\',\'{unit}\',\'{name}\'],' + print(line) + print(enddict) diff --git a/make_grib2_tables/make-ncep-grib2-tables.sh b/make_grib2_tables/make-ncep-grib2-tables.sh index 477f528..4d9baaf 100755 --- a/make_grib2_tables/make-ncep-grib2-tables.sh +++ b/make_grib2_tables/make-ncep-grib2-tables.sh @@ -156,6 +156,11 @@ do ./get-ncep-grib2-sect4-parameters-table.py 20 $table >> section4_discipline20.py done +# Discipline 209 - MRMS GRIB2 Products +echo " -- Making section4_discipline209.py" +if [ -f section4_discipline209.py ]; then rm -f section4_discipline209.py; fi +./make-mrms-grib2-sect4-parameters.py >> section4_discipline209.py + # ---------------------------------------------------------------------------------------- # Remove "See Note" strings from section 4 discipline files. # ----------------------------------------------------------------------------------------