python-awips/examples/notebooks/Grid_Levels_and_Parameters.ipynb

1023 lines
511 KiB
Text
Raw Normal View History

2018-09-05 15:52:38 -06:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This example covers the callable methods of the Python AWIPS DAF when working with gridded data. We start with a connection to an EDEX server, then query data types, then grid names, parameters, levels, and other information. Finally the gridded data is plotted for its domain using Matplotlib and Cartopy."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## DataAccessLayer.getSupportedDatatypes()\n",
"\n",
"getSupportedDatatypes() returns a list of available data types offered by the EDEX server defined above. "
]
},
{
"cell_type": "code",
"execution_count": 1,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[b'acars',\n",
" b'binlightning',\n",
" b'bufrmosavn',\n",
" b'bufrmoseta',\n",
" b'bufrmosgfs',\n",
" b'bufrmoshpc',\n",
" b'bufrmoslamp',\n",
" b'bufrmosmrf',\n",
" b'bufrua',\n",
" b'climate',\n",
" b'common_obs_spatial',\n",
" b'gfe',\n",
" b'gfeeditarea',\n",
" b'grid',\n",
" b'maps',\n",
" b'modelsounding',\n",
" b'obs',\n",
" b'practicewarning',\n",
" b'profiler',\n",
" b'radar',\n",
" b'radar_spatial',\n",
" b'satellite',\n",
" b'sfcobs',\n",
" b'topo',\n",
" b'warning']"
2018-09-05 15:52:38 -06:00
]
},
"execution_count": 1,
2018-09-05 15:52:38 -06:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from awips.dataaccess import DataAccessLayer\n",
"DataAccessLayer.changeEDEXHost(\"149.165.156.89\")\n",
2018-09-05 15:52:38 -06:00
"dataTypes = DataAccessLayer.getSupportedDatatypes()\n",
"list(dataTypes)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## DataAccessLayer.getAvailableLocationNames()\n",
"\n",
"Now create a new data request, and set the data type to **grid** to request all available grids with **getAvailableLocationNames()**"
]
},
{
"cell_type": "code",
"execution_count": 2,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[b'CMC',\n",
" b'ESTOFS',\n",
" b'ETSS',\n",
" b'FFG-ALR',\n",
" b'FFG-FWR',\n",
" b'FFG-KRF',\n",
" b'FFG-MSR',\n",
" b'FFG-ORN',\n",
" b'FFG-PTR',\n",
" b'FFG-RHA',\n",
" b'FFG-RSA',\n",
" b'FFG-STR',\n",
" b'FFG-TAR',\n",
" b'FFG-TIR',\n",
" b'FFG-TUA',\n",
" b'FNMOC-FAROP',\n",
" b'FNMOC-NCODA',\n",
" b'GFS',\n",
" b'GFS20',\n",
" b'GribModel:9:159:180',\n",
" b'HFR-EAST_6KM',\n",
" b'HFR-EAST_PR_6KM',\n",
" b'HFR-US_EAST_DELAWARE_1KM',\n",
" b'HFR-US_EAST_FLORIDA_2KM',\n",
" b'HFR-US_EAST_NORTH_2KM',\n",
" b'HFR-US_EAST_SOUTH_2KM',\n",
" b'HFR-US_EAST_VIRGINIA_1KM',\n",
" b'HFR-US_HAWAII_1KM',\n",
" b'HFR-US_HAWAII_2KM',\n",
" b'HFR-US_HAWAII_6KM',\n",
" b'HFR-US_WEST_500M',\n",
" b'HFR-US_WEST_CENCAL_2KM',\n",
" b'HFR-US_WEST_LOSANGELES_1KM',\n",
" b'HFR-US_WEST_LOSOSOS_1KM',\n",
" b'HFR-US_WEST_NORTH_2KM',\n",
" b'HFR-US_WEST_SANFRAN_1KM',\n",
" b'HFR-US_WEST_SOCAL_2KM',\n",
" b'HFR-US_WEST_WASHINGTON_1KM',\n",
" b'HFR-WEST_6KM',\n",
" b'HPCGuide',\n",
" b'HPCqpf',\n",
" b'HPCqpfNDFD',\n",
" b'HRRR',\n",
" b'LAMP2p5',\n",
" b'MOSGuide',\n",
" b'NAM12',\n",
" b'NAM40',\n",
" b'NCWF',\n",
" b'NOHRSC-SNOW',\n",
" b'PROB3HR',\n",
" b'QPE-RFC-STR',\n",
" b'RAP13',\n",
" b'RFCqpf',\n",
" b'RTMA',\n",
" b'SPCGuide',\n",
" b'SeaIce',\n",
" b'TPCWindProb',\n",
" b'UKMET-MODEL1',\n",
" b'URMA25',\n",
" b'fnmocWave',\n",
" b'nogaps']"
2018-09-05 15:52:38 -06:00
]
},
"execution_count": 2,
2018-09-05 15:52:38 -06:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"request = DataAccessLayer.newDataRequest()\n",
"request.setDatatype(\"grid\")\n",
"available_grids = DataAccessLayer.getAvailableLocationNames(request)\n",
"available_grids.sort()\n",
"list(available_grids)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## DataAccessLayer.getAvailableParameters()\n",
"\n",
"After datatype and model name (locationName) are set, you can query all available parameters with **getAvailableParameters()**"
]
},
{
"cell_type": "code",
"execution_count": 3,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[b'0to5',\n",
" b'2xTP6hr',\n",
" b'36SHRMi',\n",
" b'50dbzZ',\n",
" b'AV',\n",
" b'Along',\n",
" b'AppT',\n",
" b'BLI',\n",
" b'BRN',\n",
" b'BRNEHIi',\n",
" b'BRNSHR',\n",
" b'BRNmag',\n",
" b'BRNvec',\n",
" b'BdEPT06',\n",
" b'BlkMag',\n",
" b'BlkShr',\n",
" b'CAPE',\n",
" b'CFRZR',\n",
" b'CICEP',\n",
" b'CIn',\n",
" b'CP',\n",
" b'CP1hr',\n",
" b'CPr',\n",
" b'CPrD',\n",
" b'CRAIN',\n",
" b'CSNOW',\n",
" b'CURU',\n",
" b'CXR',\n",
" b'CapeStk',\n",
" b'Corf',\n",
" b'CorfF',\n",
" b'CorfFM',\n",
" b'CorfM',\n",
" b'CritT1',\n",
" b'CumNrm',\n",
" b'CumShr',\n",
" b'DIABi',\n",
" b'DivF',\n",
" b'DivFn',\n",
" b'DivFs',\n",
" b'DpD',\n",
" b'DpDt',\n",
" b'DpT',\n",
" b'Dpress',\n",
" b'DthDt',\n",
" b'EHI',\n",
" b'EHI01',\n",
" b'EHIi',\n",
" b'EPT',\n",
" b'EPTA',\n",
" b'EPTC',\n",
" b'EPTGrd',\n",
" b'EPTGrdM',\n",
" b'EPTs',\n",
" b'EPVg',\n",
" b'EPVs',\n",
" b'EPVt1',\n",
" b'EPVt2',\n",
" b'ESP',\n",
" b'ESP2',\n",
" b'FRZR12hr',\n",
" b'FRZRrun',\n",
" b'FVecs',\n",
" b'FeatMot',\n",
" b'FnVecs',\n",
" b'FsVecs',\n",
" b'Fzra1',\n",
" b'Fzra2',\n",
" b'GH',\n",
" b'GHxSM',\n",
" b'GHxSM2',\n",
" b'Gust',\n",
" b'HI',\n",
" b'HI1',\n",
" b'HI3',\n",
" b'HI4',\n",
" b'HIdx',\n",
" b'HPBL',\n",
" b'Heli',\n",
" b'HeliC',\n",
" b'INV',\n",
" b'IPLayer',\n",
" b'Into',\n",
" b'KI',\n",
" b'L-I',\n",
" b'LIsfc2x',\n",
" b'LM5',\n",
" b'LM6',\n",
" b'MAdv',\n",
" b'MCon',\n",
" b'MCon2',\n",
" b'MLLCL',\n",
" b'MMP',\n",
" b'MMSP',\n",
" b'MSFDi',\n",
" b'MSFi',\n",
" b'MSFmi',\n",
" b'MSG',\n",
" b'MTV',\n",
" b'Mix1',\n",
" b'Mix2',\n",
" b'Mmag',\n",
" b'MnT',\n",
" b'MpV',\n",
" b'MxT',\n",
" b'NBE',\n",
" b'NST',\n",
" b'NST1',\n",
" b'NST2',\n",
" b'NetIO',\n",
" b'OmDiff',\n",
" b'P',\n",
" b'PAdv',\n",
" b'PBE',\n",
" b'PEC',\n",
" b'PEC_TT24',\n",
" b'PFrnt',\n",
" b'PGrd',\n",
" b'PGrd1',\n",
" b'PGrdM',\n",
" b'PIVA',\n",
" b'PR',\n",
" b'PTvA',\n",
" b'PTyp',\n",
" b'PVV',\n",
" b'PW',\n",
" b'PW2',\n",
" b'PoT',\n",
" b'PoTA',\n",
" b'QPV1',\n",
" b'QPV2',\n",
" b'QPV3',\n",
" b'QPV4',\n",
" b'REFC',\n",
" b'RH',\n",
" b'RH_001_bin',\n",
" b'RH_002_bin',\n",
" b'RM5',\n",
" b'RM6',\n",
" b'RMGH2',\n",
" b'RMprop',\n",
" b'RMprop2',\n",
" b'RRtype',\n",
" b'RV',\n",
" b'Rain1',\n",
" b'Rain2',\n",
" b'Rain3',\n",
" b'Ro',\n",
" b'SA12hr',\n",
" b'SA1hr',\n",
" b'SA24hr',\n",
" b'SA36hr',\n",
" b'SA3hr',\n",
" b'SA48hr',\n",
" b'SA6hr',\n",
" b'SAcc',\n",
" b'SArun',\n",
" b'SH',\n",
" b'SHx',\n",
" b'SLI',\n",
" b'SNSQ',\n",
" b'SNW',\n",
" b'SNWA',\n",
" b'SRMl',\n",
" b'SRMlM',\n",
" b'SRMm',\n",
" b'SRMmM',\n",
" b'SRMr',\n",
" b'SRMrM',\n",
" b'SSP',\n",
" b'SSi',\n",
" b'STP',\n",
" b'STP1',\n",
" b'Shear',\n",
" b'ShrMag',\n",
" b'SnD',\n",
" b'Snow1',\n",
" b'Snow2',\n",
" b'Snow3',\n",
" b'SnowT',\n",
" b'St-Pr',\n",
" b'StrTP',\n",
" b'StrmMot',\n",
" b'SuCP',\n",
" b'T',\n",
" b'TAdv',\n",
" b'TGrd',\n",
" b'TGrdM',\n",
" b'TORi',\n",
" b'TORi2',\n",
" b'TP',\n",
" b'TP12hr',\n",
" b'TP168hr',\n",
" b'TP1hr',\n",
" b'TP24hr',\n",
" b'TP36hr',\n",
" b'TP3hr',\n",
" b'TP48hr',\n",
" b'TP6hr',\n",
" b'TP72hr',\n",
" b'TPrun',\n",
" b'TPx12x6',\n",
" b'TPx1x3',\n",
" b'TQIND',\n",
" b'TShrMi',\n",
" b'TV',\n",
" b'TW',\n",
" b'T_001_bin',\n",
" b'Tdef',\n",
" b'Tdend',\n",
" b'ThGrd',\n",
" b'Thom5',\n",
" b'Thom5a',\n",
" b'Thom6',\n",
" b'TmDpD',\n",
" b'Tmax',\n",
" b'Tmin',\n",
" b'Topo',\n",
" b'TotQi',\n",
" b'Tstk',\n",
" b'TwMax',\n",
" b'TwMin',\n",
" b'Twstk',\n",
" b'TxSM',\n",
" b'USTM',\n",
" b'VAdv',\n",
" b'VAdvAdvection',\n",
" b'VGP',\n",
" b'VSTM',\n",
" b'Vis',\n",
" b'WCD',\n",
" b'WD',\n",
" b'WEASD',\n",
" b'WEASD1hr',\n",
" b'WGS',\n",
" b'Wind',\n",
" b'WndChl',\n",
" b'ageoVC',\n",
" b'ageoW',\n",
" b'ageoWM',\n",
" b'cCape',\n",
" b'cCin',\n",
" b'cTOT',\n",
" b'capeToLvl',\n",
" b'dCape',\n",
" b'dGH12',\n",
" b'dP',\n",
" b'dP1hr',\n",
" b'dP3hr',\n",
" b'dP6hr',\n",
" b'dPW1hr',\n",
" b'dPW3hr',\n",
" b'dPW6hr',\n",
" b'dT',\n",
" b'dVAdv',\n",
" b'dZ',\n",
" b'defV',\n",
" b'del2gH',\n",
" b'df',\n",
" b'fGen',\n",
" b'fnD',\n",
" b'fsD',\n",
" b'gamma',\n",
" b'gammaE',\n",
" b'geoVort',\n",
" b'geoW',\n",
" b'geoWM',\n",
" b'loCape',\n",
" b'maxEPT',\n",
" b'minEPT',\n",
" b'mixRat',\n",
" b'msl-P',\n",
" b'muCape',\n",
" b'pV',\n",
" b'pVeq',\n",
" b'qDiv',\n",
" b'qVec',\n",
" b'qnVec',\n",
" b'qsVec',\n",
" b'shWlt',\n",
" b'snoRat',\n",
" b'snoRatCrocus',\n",
" b'snoRatEMCSREF',\n",
" b'snoRatOv2',\n",
" b'snoRatSPC',\n",
" b'snoRatSPCdeep',\n",
" b'snoRatSPCsurface',\n",
" b'staticCoriolis',\n",
" b'staticSpacing',\n",
" b'staticTopo',\n",
" b'swtIdx',\n",
" b'tTOT',\n",
" b'tWind',\n",
" b'tWindU',\n",
" b'tWindV',\n",
" b'uFX',\n",
" b'uW',\n",
" b'uWStk',\n",
" b'ulSnoRat',\n",
" b'vSmthW',\n",
" b'vTOT',\n",
" b'vW',\n",
" b'vWStk',\n",
" b'vertCirc',\n",
" b'wDiv',\n",
" b'wSp',\n",
" b'wSp_001_bin',\n",
" b'wSp_002_bin',\n",
" b'wSp_003_bin',\n",
" b'wSp_004_bin',\n",
" b'zAGL']"
2018-09-05 15:52:38 -06:00
]
},
"execution_count": 3,
2018-09-05 15:52:38 -06:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"request.setLocationNames(\"RAP13\")\n",
"availableParms = DataAccessLayer.getAvailableParameters(request)\n",
"availableParms.sort()\n",
"list(availableParms)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## DataAccessLayer.getAvailableLevels()\n",
"\n",
"Selecting **\"T\"** for temperature."
]
},
{
"cell_type": "code",
"execution_count": 4,
2018-09-05 15:52:38 -06:00
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.0b'SFC'\n",
"350.0b'MB'\n",
"475.0b'MB'\n",
"225.0b'MB'\n",
"120.0_150.0b'BL'\n",
"900.0b'MB'\n",
"125.0b'MB'\n",
"450.0b'MB'\n",
"575.0b'MB'\n",
"325.0b'MB'\n",
"100.0b'MB'\n",
"1000.0b'MB'\n",
"60.0_90.0b'BL'\n",
"275.0b'MB'\n",
"1.0b'PV'\n",
"950.0b'MB'\n",
"150.0b'MB'\n",
"1.5b'PV'\n",
"700.0b'MB'\n",
"825.0b'MB'\n",
"150.0_180.0b'BL'\n",
"250.0b'MB'\n",
"375.0b'MB'\n",
"1000.0_500.0b'MB'\n",
"800.0b'MB'\n",
"4000.0b'FHAG'\n",
"925.0b'MB'\n",
"2.0b'PV'\n",
"0.5b'PV'\n",
"0.0b'TROP'\n",
"750.0b'MB'\n",
"500.0b'MB'\n",
"625.0b'MB'\n",
"400.0b'MB'\n",
"0.0b'FHAG'\n",
"2.0b'FHAG'\n",
"875.0b'MB'\n",
"175.0b'MB'\n",
"0.0_1000.0b'FHAG'\n",
"850.0b'MB'\n",
"600.0b'MB'\n",
"725.0b'MB'\n",
"0.0_6000.0b'FHAG'\n",
"975.0b'MB'\n",
"550.0b'MB'\n",
"0.0_3000.0b'FHAG'\n",
"675.0b'MB'\n",
"425.0b'MB'\n",
"200.0b'MB'\n",
"0.0_30.0b'BL'\n",
"30.0_60.0b'BL'\n",
"650.0b'MB'\n",
"525.0b'MB'\n",
"300.0b'MB'\n",
"90.0_120.0b'BL'\n",
"1000.0b'FHAG'\n",
"775.0b'MB'\n",
"340.0_350.0b'K'\n",
"290.0_300.0b'K'\n",
"700.0_600.0b'MB'\n",
"700.0_300.0b'MB'\n",
"320.0b'Ke'\n",
"800.0_750.0b'MB'\n",
"0.0_610.0b'FHAG'\n",
"60.0b'TILT'\n",
"5.3b'TILT'\n",
"1000.0_900.0b'MB'\n",
"340.0b'K'\n",
"5500.0_6000.0b'FHAG'\n",
"255.0b'K'\n",
"255.0_265.0b'K'\n",
"3000.0_6000.0b'FHAG'\n",
"25.0b'TILT'\n",
"2000.0b'FHAG'\n",
"0.0_500.0b'FHAG'\n",
"1000.0_850.0b'MB'\n",
"850.0_250.0b'MB'\n",
"280.0_290.0b'Ke'\n",
"1524.0b'FHAG'\n",
"320.0_330.0b'K'\n",
"0.0b'TILT'\n",
"310.0_320.0b'Ke'\n",
"310.0b'Ke'\n",
"330.0b'K'\n",
"900.0_800.0b'MB'\n",
"550.0_500.0b'MB'\n",
"2.4b'TILT'\n",
"50.0b'TILT'\n",
"3500.0b'FHAG'\n",
"35.0b'TILT'\n",
"12.0b'TILT'\n",
"300.0_310.0b'K'\n",
"3000.0_12000.0b'FHAG'\n",
"0.9b'TILT'\n",
"320.0b'K'\n",
"400.0_350.0b'MB'\n",
"500.0b'FHAG'\n",
"750.0_700.0b'MB'\n",
"1000.0_400.0b'MB'\n",
"345.0b'K'\n",
"250.0_260.0b'K'\n",
"300.0b'Ke'\n",
"290.0b'Ke'\n",
"950.0_900.0b'MB'\n",
"4572.0b'FHAG'\n",
"275.0_285.0b'Ke'\n",
"335.0b'Ke'\n",
"295.0_305.0b'Ke'\n",
"275.0_285.0b'K'\n",
"600.0_550.0b'MB'\n",
"310.0b'K'\n",
"9000.0b'FHAG'\n",
"335.0b'K'\n",
"1000.0_7000.0b'FHAG'\n",
"700.0_500.0b'MB'\n",
"9144.0b'FHAG'\n",
"325.0_335.0b'K'\n",
"2000.0_8000.0b'FHAG'\n",
"0.0_609.6b'FHAG'\n",
"300.0b'K'\n",
"0.0b'MAXOMEGA'\n",
"315.0_325.0b'K'\n",
"325.0b'K'\n",
"340.0b'Ke'\n",
"0.0_4000.0b'FHAG'\n",
"5000.0_5500.0b'FHAG'\n",
"300.0_250.0b'MB'\n",
"1.5b'TILT'\n",
"335.0_345.0b'K'\n",
"315.0b'K'\n",
"3.4b'TILT'\n",
"2500.0b'FHAG'\n",
"10000.0b'FHAG'\n",
"0.0_2000.0b'FHAG'\n",
"7000.0b'FHAG'\n",
"5000.0b'FHAG'\n",
"330.0b'Ke'\n",
"500.0_400.0b'MB'\n",
"1000.0_1500.0b'FHAG'\n",
"305.0b'K'\n",
"285.0_295.0b'Ke'\n",
"14.0b'TILT'\n",
"3000.0_3500.0b'FHAG'\n",
"325.0_335.0b'Ke'\n",
"2000.0_5000.0b'FHAG'\n",
"7620.0b'FHAG'\n",
"850.0_800.0b'MB'\n",
"6096.0b'FHAG'\n",
"6000.0_7000.0b'FHAG'\n",
"2000.0_7000.0b'FHAG'\n",
"9000.0_10000.0b'FHAG'\n",
"295.0b'Ke'\n",
"305.0b'Ke'\n",
"265.0_275.0b'K'\n",
"7000.0_8000.0b'FHAG'\n",
"3000.0_8000.0b'FHAG'\n",
"700.0_650.0b'MB'\n",
"1000.0_6000.0b'FHAG'\n",
"0.5b'TILT'\n",
"450.0_400.0b'MB'\n",
"1.8b'TILT'\n",
"330.0_340.0b'K'\n",
"800.0_700.0b'MB'\n",
"850.0_300.0b'MB'\n",
"6.0b'TILT'\n",
"900.0_850.0b'MB'\n",
"3657.6b'FHAG'\n",
"0.0_5000.0b'FHAG'\n",
"320.0_330.0b'Ke'\n",
"8.7b'TILT'\n",
"650.0_600.0b'MB'\n",
"600.0_400.0b'MB'\n",
"55.0b'TILT'\n",
"270.0_280.0b'Ke'\n",
"30.0b'TILT'\n",
"310.0_320.0b'K'\n",
"1500.0b'FHAG'\n",
"1000.0_950.0b'MB'\n",
"5500.0b'FHAG'\n",
"250.0_200.0b'MB'\n",
"500.0_1000.0b'FHAG'\n",
"400.0_300.0b'MB'\n",
"500.0_100.0b'MB'\n",
"1000.0_3000.0b'FHAG'\n",
"8000.0b'FHAG'\n",
"285.0b'Ke'\n",
"290.0b'K'\n",
"305.0_315.0b'K'\n",
"285.0_295.0b'K'\n",
"0.0_2500.0b'FHAG'\n",
"925.0_850.0b'MB'\n",
"275.0b'Ke'\n",
"1500.0_2000.0b'FHAG'\n",
"300.0_200.0b'MB'\n",
"610.0_40000.0b'FHAG'\n",
"260.0_270.0b'K'\n",
"2743.2b'FHAG'\n",
"3000.0b'FHAG'\n",
"315.0_325.0b'Ke'\n",
"600.0_500.0b'MB'\n",
"16.7b'TILT'\n",
"280.0b'K'\n",
"500.0_250.0b'MB'\n",
"40.0b'TILT'\n",
"3048.0b'FHAG'\n",
"400.0_200.0b'MB'\n",
"300.0_310.0b'Ke'\n",
"270.0_280.0b'K'\n",
"1000.0_700.0b'MB'\n",
"45.0b'TILT'\n",
"850.0_500.0b'MB'\n",
"2500.0_3000.0b'FHAG'\n",
"609.6b'FHAG'\n",
"0.0_8000.0b'FHAG'\n",
"295.0b'K'\n",
"4.3b'TILT'\n",
"295.0_305.0b'K'\n",
"330.0_340.0b'Ke'\n",
"270.0b'K'\n",
"4000.0_4500.0b'FHAG'\n",
"280.0_290.0b'K'\n",
"925.0_700.0b'MB'\n",
"0.0_1500.0b'FHAG'\n",
"260.0b'K'\n",
"10.0b'TILT'\n",
"3500.0_4000.0b'FHAG'\n",
"325.0b'Ke'\n",
"285.0b'K'\n",
"290.0_300.0b'Ke'\n",
"7.5b'TILT'\n",
"1828.8b'FHAG'\n",
"280.0b'Ke'\n",
"500.0_450.0b'MB'\n",
"305.0_315.0b'Ke'\n",
"250.0b'K'\n",
"4500.0b'FHAG'\n",
"1250.0b'FHAG'\n",
"0.0_10000.0b'FHAG'\n",
"4500.0_5000.0b'FHAG'\n",
"250.0_350.0b'K'\n",
"270.0b'Ke'\n",
"275.0b'K'\n",
"315.0b'Ke'\n",
"500.0_300.0b'MB'\n",
"350.0_300.0b'MB'\n",
"750.0b'FHAG'\n",
"19.5b'TILT'\n",
"2000.0_2500.0b'FHAG'\n",
"850.0_700.0b'MB'\n",
"350.0b'K'\n",
"265.0b'K'\n",
"6000.0b'FHAG'\n",
"8000.0_9000.0b'FHAG'\n",
"0.0_0.0b'SFC'\n"
2018-09-05 15:52:38 -06:00
]
}
],
"source": [
"request.setParameters(\"T\")\n",
"availableLevels = DataAccessLayer.getAvailableLevels(request)\n",
"for level in availableLevels:\n",
" print(level)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* **0.0SFC** is the Surface level\n",
"* **FHAG** stands for Fixed Height Above Ground (in meters)\n",
"* **NTAT** stands for Nominal Top of the ATmosphere\n",
"* **BL** stands for Boundary Layer, where **0.0_30.0BL** reads as *0-30 mb above ground level* \n",
"* **TROP** is the Tropopause level\n",
"\n",
"**request.setLevels()**\n",
"\n",
"For this example we will use Surface Temperature"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
2018-09-05 15:52:38 -06:00
"outputs": [],
"source": [
"request.setLevels(\"2.0FHAG\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## DataAccessLayer.getAvailableTimes()\n",
"\n",
"* **getAvailableTimes(request, True)** will return an object of *run times* - formatted as `YYYY-MM-DD HH:MM:SS`\n",
"* **getAvailableTimes(request)** will return an object of all times - formatted as `YYYY-MM-DD HH:MM:SS (F:ff)`\n",
"* **getForecastRun(cycle, times)** will return a DataTime array for a single forecast cycle."
]
},
{
"cell_type": "code",
"execution_count": 6,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >,\n",
" <DataTime instance: 2018-09-06 13:00:00 >]"
2018-09-05 15:52:38 -06:00
]
},
"execution_count": 6,
2018-09-05 15:52:38 -06:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cycles = DataAccessLayer.getAvailableTimes(request, True)\n",
"times = DataAccessLayer.getAvailableTimes(request)\n",
"fcstRun = DataAccessLayer.getForecastRun(cycles[-1], times)\n",
"list(fcstRun)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## DataAccessLayer.getGridData()\n",
"\n",
"Now that we have our `request` and DataTime `fcstRun` arrays ready, it's time to request the data array from EDEX."
]
},
{
"cell_type": "code",
"execution_count": 7,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Time : 2018-09-06 13:00:00\n",
"Model: b'RAP13'\n",
"Parm : b'T'\n",
"Unit : b'K'\n",
2018-09-05 15:52:38 -06:00
"(337, 451)\n"
]
}
],
"source": [
"response = DataAccessLayer.getGridData(request, [fcstRun[-1]])\n",
"for grid in response:\n",
" data = grid.getRawData()\n",
" lons, lats = grid.getLatLonCoords()\n",
" print('Time :', str(grid.getDataTime()))\n",
"\n",
"print('Model:', str(grid.getLocationName()))\n",
"print('Parm :', str(grid.getParameter()))\n",
"print('Unit :', str(grid.getUnit()))\n",
"print(data.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plotting with Matplotlib and Cartopy\n",
"\n",
"**1. pcolormesh**"
]
},
{
"cell_type": "code",
"execution_count": 10,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
2018-09-05 15:52:38 -06:00
"text/plain": [
"<Figure size 1152x648 with 2 Axes>"
2018-09-05 15:52:38 -06:00
]
},
"metadata": {
"needs_background": "light"
},
2018-09-05 15:52:38 -06:00
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib\n",
"import cartopy.crs as ccrs\n",
"import cartopy.feature as cfeature\n",
"from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER\n",
"import numpy as np\n",
"import numpy.ma as ma\n",
"from scipy.io import loadmat\n",
"def make_map(bbox, projection=ccrs.PlateCarree()):\n",
" fig, ax = plt.subplots(figsize=(16, 9),\n",
" subplot_kw=dict(projection=projection))\n",
" ax.set_extent(bbox)\n",
" ax.coastlines(resolution='50m')\n",
" gl = ax.gridlines(draw_labels=True)\n",
" gl.xlabels_top = gl.ylabels_right = False\n",
" gl.xformatter = LONGITUDE_FORMATTER\n",
" gl.yformatter = LATITUDE_FORMATTER\n",
" return fig, ax\n",
"\n",
"cmap = plt.get_cmap('rainbow')\n",
"bbox = [lons.min(), lons.max(), lats.min(), lats.max()]\n",
"fig, ax = make_map(bbox=bbox)\n",
"cs = ax.pcolormesh(lons, lats, data, cmap=cmap)\n",
"cbar = fig.colorbar(cs, extend='both', shrink=0.5, orientation='horizontal')\n",
"cbar.set_label(grid.getLocationName().decode('UTF-8') +\" \" \\\n",
" + grid.getLevel().decode('UTF-8') + \" \" \\\n",
" + grid.getParameter().decode('UTF-8') \\\n",
" + \" (\" + grid.getUnit().decode('UTF-8') + \") \" \\\n",
2018-09-05 15:52:38 -06:00
" + \"valid \" + str(grid.getDataTime().getRefTime()))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**2. contourf**"
]
},
{
"cell_type": "code",
"execution_count": 11,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
2018-09-05 15:52:38 -06:00
"text/plain": [
"<Figure size 1152x648 with 2 Axes>"
2018-09-05 15:52:38 -06:00
]
},
"metadata": {
"needs_background": "light"
},
2018-09-05 15:52:38 -06:00
"output_type": "display_data"
}
],
"source": [
"fig2, ax2 = make_map(bbox=bbox)\n",
"cs2 = ax2.contourf(lons, lats, data, 80, cmap=cmap,\n",
" vmin=data.min(), vmax=data.max())\n",
"cbar2 = fig2.colorbar(cs2, extend='both', shrink=0.5, orientation='horizontal')\n",
"cbar2.set_label(grid.getLocationName().decode('UTF-8') +\" \" \\\n",
" + grid.getLevel().decode('UTF-8') + \" \" \\\n",
" + grid.getParameter().decode('UTF-8') \\\n",
" + \" (\" + grid.getUnit().decode('UTF-8') + \") \" \\\n",
2018-09-05 15:52:38 -06:00
" + \"valid \" + str(grid.getDataTime().getRefTime()))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
2018-09-05 15:52:38 -06:00
"language": "python",
"name": "python3"
2018-09-05 15:52:38 -06:00
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
2018-09-05 15:52:38 -06:00
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
2018-09-05 15:52:38 -06:00
}
},
"nbformat": 4,
"nbformat_minor": 1
}