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",
2018-09-06 12:12:07 -06:00
"execution_count": 1,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2018-10-05 17:09:43 -06:00
"[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
]
},
2018-09-06 12:12:07 -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",
2018-09-06 13:05:37 -06:00
"DataAccessLayer.changeEDEXHost(\"edex-cloud.unidata.ucar.edu\")\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",
2018-09-06 12:12:07 -06:00
"execution_count": 2,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2018-10-05 17:09:43 -06:00
"[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:0:160',\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'NationalBlend',\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
]
},
2018-09-06 12:12:07 -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",
2018-09-06 12:12:07 -06:00
"execution_count": 3,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2018-10-05 17:09:43 -06:00
"[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
]
},
2018-09-06 12:12:07 -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",
2018-09-06 12:12:07 -06:00
"execution_count": 4,
2018-09-05 15:52:38 -06:00
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2018-10-05 17:09:43 -06:00
"100.0b'MB'\n",
"175.0b'MB'\n",
"125.0b'MB'\n",
"200.0b'MB'\n",
"150.0b'MB'\n",
"250.0b'MB'\n",
"225.0b'MB'\n",
"275.0b'MB'\n",
"300.0b'MB'\n",
"325.0b'MB'\n",
"350.0b'MB'\n",
"400.0b'MB'\n",
"375.0b'MB'\n",
"425.0b'MB'\n",
"450.0b'MB'\n",
"475.0b'MB'\n",
"500.0b'MB'\n",
"525.0b'MB'\n",
"550.0b'MB'\n",
"575.0b'MB'\n",
"650.0b'MB'\n",
"625.0b'MB'\n",
"600.0b'MB'\n",
"675.0b'MB'\n",
"700.0b'MB'\n",
"725.0b'MB'\n",
"750.0b'MB'\n",
"775.0b'MB'\n",
"825.0b'MB'\n",
"800.0b'MB'\n",
"850.0b'MB'\n",
"875.0b'MB'\n",
"900.0b'MB'\n",
"925.0b'MB'\n",
"975.0b'MB'\n",
"1000.0b'MB'\n",
"0.0b'SFC'\n",
"950.0b'MB'\n",
"0.0b'TROP'\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",
"1000.0_500.0b'MB'\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",
"150.0_180.0b'BL'\n",
"0.0_30.0b'BL'\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",
"2.0b'FHAG'\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",
"0.0_1000.0b'FHAG'\n",
"5000.0b'FHAG'\n",
"330.0b'Ke'\n",
"90.0_120.0b'BL'\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",
"120.0_150.0b'BL'\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",
"30.0_60.0b'BL'\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",
"4000.0b'FHAG'\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",
"0.0b'FHAG'\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",
"1.0b'PV'\n",
"5500.0b'FHAG'\n",
"250.0_200.0b'MB'\n",
"1.5b'PV'\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",
"2.0b'PV'\n",
"300.0_200.0b'MB'\n",
"610.0_40000.0b'FHAG'\n",
"260.0_270.0b'K'\n",
"0.0_6000.0b'FHAG'\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",
"0.5b'PV'\n",
"280.0b'K'\n",
"500.0_250.0b'MB'\n",
"40.0b'TILT'\n",
"1000.0b'FHAG'\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",
"60.0_90.0b'BL'\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",
"0.0_3000.0b'FHAG'\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"
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",
2018-09-06 12:12:07 -06:00
"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",
2018-09-06 12:12:07 -06:00
"execution_count": 6,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2018-10-05 17:09:43 -06:00
"[<DataTime instance: 2018-10-05 20:00:00 >,\n",
" <DataTime instance: 2018-10-05 20:00:00 >,\n",
" <DataTime instance: 2018-10-05 20:00:00 >,\n",
" <DataTime instance: 2018-10-05 20:00:00 >,\n",
" <DataTime instance: 2018-10-05 20:00:00 >,\n",
" <DataTime instance: 2018-10-05 20:00:00 >,\n",
" <DataTime instance: 2018-10-05 20:00:00 >,\n",
" <DataTime instance: 2018-10-05 20:00:00 >,\n",
" <DataTime instance: 2018-10-05 20:00:00 >,\n",
" <DataTime instance: 2018-10-05 20:00:00 >,\n",
" <DataTime instance: 2018-10-05 20:00:00 >,\n",
" <DataTime instance: 2018-10-05 20:00:00 >,\n",
" <DataTime instance: 2018-10-05 20:00:00 >,\n",
" <DataTime instance: 2018-10-05 20:00:00 >]"
2018-09-05 15:52:38 -06:00
]
},
2018-09-06 12:12:07 -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",
2018-09-06 12:12:07 -06:00
"execution_count": 7,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2018-10-05 17:09:43 -06:00
"Time : 2018-10-05 20: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",
2018-09-06 13:05:37 -06:00
"execution_count": 8,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"data": {
2018-10-05 17:09:43 -06:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAnIAAAHlCAYAAABxpRHzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzsnXd8FNX6/98zs7vZNBJCgAChhoRiQJqANEOXJkgoFhBRwYYIWADl6s9CU0QFvSrl+r3YUECBS0AQBamCovROKKEEQyA92TJzfn/M7mYTAoQQSILzfr32lezsmXOec3Z25jPPec4zkhACAwMDAwMDAwODsodc0gYYGBgYGBgYGBgUDUPIGRgYGBgYGBiUUQwhZ2BgYGBgYGBQRjGEnIGBgYGBgYFBGcUQcgYGBgYGBgYGZRRDyBkYGBgYGBgYlFEMIWdgYGBgYGBgUEYxhJyBgYGBgYGBQRnFEHIGBgYGBgYGBmUUQ8gZGBgYGBgYGJRRTCVtQEHUqlVLnDx5sqTNMDAwMDAwMDAoCU4KIWoVpmCp9MidPHkSIYTxyvdat25didtQGl/GuBjjYoxL6RgXTdOYMWMGNWrU4NChQ5d9vnz5cpo3b16sdmdlZTFz5ky6detGUFAQjzzyCKtXryYxMRFN0275uMybN48uXbrgdDpvqN0pU6YA8OSTT3q2rVixgrfffpunnnqKpKSkMn+8FPRq3749AB9//DE1atQA4NFHH8VisRAREcEHH3xw3WObmJjIq6++yrJly8rMuAA1Cy2aSvJAuEoHhMHlrFu3rqRNKJUY41IwxrgUjDEuBXOj43L27Flx7733ipYtW4r4+PjLPtc0Tdx1111i8eLFN9TO1Th//ryYOXOmaNu2rahQoYLw8/MTrVu3Fh9++KGw2WxFqvN6xyUiIkL8/PPPRWorPwcOHBBpaWme982aNROAaNeunejZs6dYu3at2Lp1q8jJyfGUsdvtQtO0Ymn/atys31FiYqL4/vvvhRBCfPfddwIQffr0EUlJSeKPP/4Qd999t6hataro0KGDOHz48E2x4UYornFx6aBCaaZS6ZEzMDAwMCg7LF26lKZNm9KyZUs2bdpE7dq1Lytz5MgRzp49y/3333/T7KhUqRJjx45l06ZNXLhwgXPnzvHmm2+yatUq2rRpQ2Ji4k1r282dd97JnDlzyM7OLnIde/fu5aWXXuLDDz9k2bJlHD16lPT0dOLi4ujduzd//vkn9evXZ/LkyQwePJhnn32Wrl27EhkZSWBgIEFBQUiSxLRp04qxZ7eGypUre46RgQMHkpaWxrJlywgNDaV58+Zs2rQJh8PBhg0buO+++/jrr79K2OKSp1TGyBkYGBgYlH6EEIwePZq4uDi+//572rRpc8WyqqpitVqR5VvnPyhXrhxdu3alS5cuvPXWW3Ts2JGdO3fi4+Nz09r88ssvGTFiBJGRkTz33HNUrVqVxo0b07hxYyRJKnCfixcvsmHDBnbs2IHNZmPJkiV069aN+vXrs2TJEiZNmsSFCxewWq3UqlWLSZMmMXHiREAXyFFRUURFRbFkyRJq1arF9OnTmTJlCh07drxp/bxVBAYG5nmvaRr169enTp06+Pj40KxZM1RVvaXHVWnDEHIGBgYGBgDYbLZCixxVVZk6dSqbN29m586dlCtX7qrlIyMjkSSJ1atX07179+Iwt9BIksRrr73G9u3b+eyzzxg9evRNa8vX15cvv/ySHTt2MHfuXHbt2sXrr7+OzWajYsWKBAYGUr9+fSpVqsSaNWs4ceIENpuNNm3a0KpVK0JDQ3nhhRcYMWIEZrOZ559//qrtRUZGcvjwYapUqUJAQACge7LOnTtHz549GT9+PGPHjsVsNt+0Pt9KPvvsMzZu3Oh5P3/+/H+0iANDyBkYGBiUWr744gseeeQRNm3aRJs2ba7o0bkRMjIyCAwMZMaMGQwbNowNGzZQqVIlVFXltddeY8SIETRo0AAAu93Oxo0bWbp0KYsWLSIqKopvv/32miIOIDk5mTvvvJNFixYVi5A7efIk//73v9mwYQPHjh3DZrOxefNmoqOjCyyflJREuXLl+Oabb2jdujWnTp0iPDyc8PBwvvrqK2rXrk3//v0xmYrnsti8eXMaNmxIRkYGISEhnDp1ipSUFNLS0ti7dy/Jycm8/fbbNG7cmNDQ0BsSWpGRkXneN2nShP/85z8cO3aMp59+mq+++orJkyfTs2fPMi96Ro4cScOGDVm4cCGLFy+mYcOGaJpGZmYmvr6+xfb9lSX+eT02MDAwKCPUq1cPgHbt2gFQvnx5Ro4cSbt27ejQoUOhBNS1mD17tuf/6OhomjVrRnZ2NrIsk5mZyfvvv0+tWrUIDAzkxIkTNGzYkN69e7Nx48bLBER+Nm/ezPLlyz2ep169evHKK6/csM0A3bt3595772XKlCk0aNCAfv36ERMTQ4sWLQgPD6d169Y89thjHuHSrVs3du7cCcBTTz1FjRo1OH36NPHx8XTt2pX//e9/PPbYY+zevZs6derckG3u6U43n3zyCU899ZTn/T333HND9ReWiIgIVq9ezZIlS3jttdcYO3Ys27ZtIyQkhLS0NAIDA2/KzcHNxGw207FjRzp27IjNZuPuu+/GarWSk5MDQFZWFr6+viVs5a3FEHIGBgYGpZQaNWpQsWJFkpKSALh06RLTp09n+vTpnjIDBw6kd+/eVKpUiU2bNqFpGi+//DLlypUrlPelSpUqAISEhPDJJ59QrVo1bDYbdruddevW0bBhQ2RZJiMjg5o1axISEnLNOh0OB0899RTr1q1j6NChfPzxx7Rs2bJYvCV2u51Zs2Zht9t5//33PUJk48aNHDp0iFOnTpGQkMA777xD1apV6dmzJwDbt2/H6XRitVoLFC9CCGRZJiIigs6dOzNlyhRatmxZJBtr1KjBzJkzSUlJISYm5pYJt4KQJIkBAwYwYMAAxo0bR5cuXcjKyuLQoUPExcV5xqc40TSNlJQUAgICsFgsxV6/m48++ogPPvgAs9nMHXfcwcmTJ7n33ntZu3btbTOVXBgMIWdgYGBQSgkLC+PkyZP8+eefnD59ml69eqGqKtu3b2fdunXMnDmTRYsWsWjRojz7TZ06FYBGjRoRExNDTEwMbdu2pXLlymiaxuLFi8nIyKBu3bps3bqV2rVrU716dU/eLj8/P/z8/Iq8wnTYsGGkpaWxZ88e7HY7cXFxbNmyBbPZTEpKCmfPnuXs2bOoqsqsWbOoW7fuVesTQpCcnMyyZcuYPHky9erVY82aNXkEmdlsJjo62jO1mpWVxVNPPUWTJk2oVq0aDRs2pGXLljRp0uSKcYCbNm1i8uTJrFq1ihMnThRZyPn4+DB27Ng821JTU/nqq6+4ePEiPXr0oGnTprd8mnPGjBl88803LFy4kEOHDvHCCy/wzDPPYLFY6NatG5MmTSIsLOyG2xk+fDgLFizAZDJRvnx5evXqxdChQ+nYsSNjxoxh1qxZHD16lIiIiBtqJyYmhh07drBt2zZOnDhBfHw8ERERvPTSS3zwwQc33I+ygiHkDAwMDEoxvr6+tG3bNs+2rl270rVrV6ZMmULr1q3Ztm0bAL1796ZPnz5kZWXx8ccfs2fPHpKTk5k3bx7Z2dkEBQWhqipRUVFERkYyf/587r77bnbs2MGuXbuKzeadO3eSnp5Oq1atSEhIoGPHjkREROBwOAgODqZJkyb07NmTdevWMWXKFP7zn/9csa4TJ04QGxvLsWPHaN++Pf/3f/9Hhw4drmnD6NGjadmyJUlJSSQkJLB3717mz5/PkSNHiI6O5u6776Zbt240adKEX3/9lalTp+JwOHj00UdZsGABoaGh19XnnJwc4uPjuXDhAj4+PgQGBlKvXj0URUHTNBo1akRSUhL9+/fnyy+/JC0tjY8++oj+/ftfVzs3gizLPPzwwwwePJh9+/ZhMpnw8/MjKyuLOXPmUKVKFTp37szatWtvqJ0hQ4awYsUKxo8fT79+/YiLi2P06NGYzWbuvfdeAOrWrcvcuXN5/PHHizy9u3TpUqp
2018-09-05 15:52:38 -06:00
"text/plain": [
2018-09-06 12:12:07 -06:00
"<Figure size 1152x648 with 2 Axes>"
2018-09-05 15:52:38 -06:00
]
},
2018-09-06 12:12:07 -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",
2018-09-06 12:12:07 -06:00
"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",
2018-09-06 13:05:37 -06:00
"execution_count": 9,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"data": {
2018-10-05 17:09:43 -06:00
"image/png": "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
2018-09-05 15:52:38 -06:00
"text/plain": [
2018-09-06 12:12:07 -06:00
"<Figure size 1152x648 with 2 Axes>"
2018-09-05 15:52:38 -06:00
]
},
2018-09-06 12:12:07 -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",
2018-09-06 12:12:07 -06:00
"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": {
2018-09-06 12:12:07 -06:00
"display_name": "Python 3",
2018-09-05 15:52:38 -06:00
"language": "python",
2018-09-06 12:12:07 -06:00
"name": "python3"
2018-09-05 15:52:38 -06:00
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
2018-09-06 12:12:07 -06:00
"version": 3
2018-09-05 15:52:38 -06:00
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
2018-09-06 12:12:07 -06:00
"pygments_lexer": "ipython3",
"version": "3.6.6"
2018-09-05 15:52:38 -06:00
}
},
"nbformat": 4,
"nbformat_minor": 1
}