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-09-06 13:05:37 -06:00
"['acars',\n",
" 'binlightning',\n",
" 'bufrmosavn',\n",
" 'bufrmoseta',\n",
" 'bufrmosgfs',\n",
" 'bufrmoshpc',\n",
" 'bufrmoslamp',\n",
" 'bufrmosmrf',\n",
" 'bufrua',\n",
" 'climate',\n",
" 'common_obs_spatial',\n",
" 'gfe',\n",
" 'gfeeditarea',\n",
" 'grid',\n",
" 'maps',\n",
" 'modelsounding',\n",
" 'obs',\n",
" 'practicewarning',\n",
" 'profiler',\n",
" 'radar',\n",
" 'radar_spatial',\n",
" 'satellite',\n",
" 'sfcobs',\n",
" 'topo',\n",
" '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-09-06 13:05:37 -06:00
"['CMC',\n",
" 'ESTOFS',\n",
" 'ETSS',\n",
" 'FFG-ALR',\n",
" 'FFG-FWR',\n",
" 'FFG-KRF',\n",
" 'FFG-MSR',\n",
" 'FFG-ORN',\n",
" 'FFG-PTR',\n",
" 'FFG-RHA',\n",
" 'FFG-RSA',\n",
" 'FFG-STR',\n",
" 'FFG-TAR',\n",
" 'FFG-TIR',\n",
" 'FFG-TUA',\n",
" 'FNMOC-FAROP',\n",
" 'FNMOC-NCODA',\n",
" 'GFS',\n",
" 'GFS20',\n",
" 'GribModel:9:159:180',\n",
" 'HFR-EAST_6KM',\n",
" 'HFR-EAST_PR_6KM',\n",
" 'HFR-US_EAST_DELAWARE_1KM',\n",
" 'HFR-US_EAST_FLORIDA_2KM',\n",
" 'HFR-US_EAST_NORTH_2KM',\n",
" 'HFR-US_EAST_SOUTH_2KM',\n",
" 'HFR-US_EAST_VIRGINIA_1KM',\n",
" 'HFR-US_HAWAII_1KM',\n",
" 'HFR-US_HAWAII_2KM',\n",
" 'HFR-US_HAWAII_6KM',\n",
" 'HFR-US_WEST_500M',\n",
" 'HFR-US_WEST_CENCAL_2KM',\n",
" 'HFR-US_WEST_LOSANGELES_1KM',\n",
" 'HFR-US_WEST_LOSOSOS_1KM',\n",
" 'HFR-US_WEST_NORTH_2KM',\n",
" 'HFR-US_WEST_SANFRAN_1KM',\n",
" 'HFR-US_WEST_SOCAL_2KM',\n",
" 'HFR-US_WEST_WASHINGTON_1KM',\n",
" 'HFR-WEST_6KM',\n",
" 'HPCGuide',\n",
" 'HPCqpf',\n",
" 'HPCqpfNDFD',\n",
" 'HRRR',\n",
" 'LAMP2p5',\n",
" 'MOSGuide',\n",
" 'NAM12',\n",
" 'NAM40',\n",
" 'NCWF',\n",
" 'NOHRSC-SNOW',\n",
" 'PROB3HR',\n",
" 'QPE-RFC-STR',\n",
" 'RAP13',\n",
" 'RFCqpf',\n",
" 'RTMA',\n",
" 'SPCGuide',\n",
" 'SeaIce',\n",
" 'TPCWindProb',\n",
" 'UKMET-MODEL1',\n",
" 'URMA25',\n",
" 'fnmocWave',\n",
" '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-09-06 13:05:37 -06:00
"['0to5',\n",
" '2xTP6hr',\n",
" '36SHRMi',\n",
" '50dbzZ',\n",
" 'AV',\n",
" 'Along',\n",
" 'AppT',\n",
" 'BLI',\n",
" 'BRN',\n",
" 'BRNEHIi',\n",
" 'BRNSHR',\n",
" 'BRNmag',\n",
" 'BRNvec',\n",
" 'BdEPT06',\n",
" 'BlkMag',\n",
" 'BlkShr',\n",
" 'CAPE',\n",
" 'CFRZR',\n",
" 'CICEP',\n",
" 'CIn',\n",
" 'CP',\n",
" 'CP1hr',\n",
" 'CPr',\n",
" 'CPrD',\n",
" 'CRAIN',\n",
" 'CSNOW',\n",
" 'CURU',\n",
" 'CXR',\n",
" 'CapeStk',\n",
" 'Corf',\n",
" 'CorfF',\n",
" 'CorfFM',\n",
" 'CorfM',\n",
" 'CritT1',\n",
" 'CumNrm',\n",
" 'CumShr',\n",
" 'DIABi',\n",
" 'DivF',\n",
" 'DivFn',\n",
" 'DivFs',\n",
" 'DpD',\n",
" 'DpDt',\n",
" 'DpT',\n",
" 'Dpress',\n",
" 'DthDt',\n",
" 'EHI',\n",
" 'EHI01',\n",
" 'EHIi',\n",
" 'EPT',\n",
" 'EPTA',\n",
" 'EPTC',\n",
" 'EPTGrd',\n",
" 'EPTGrdM',\n",
" 'EPTs',\n",
" 'EPVg',\n",
" 'EPVs',\n",
" 'EPVt1',\n",
" 'EPVt2',\n",
" 'ESP',\n",
" 'ESP2',\n",
" 'FRZR12hr',\n",
" 'FRZRrun',\n",
" 'FVecs',\n",
" 'FeatMot',\n",
" 'FnVecs',\n",
" 'FsVecs',\n",
" 'Fzra1',\n",
" 'Fzra2',\n",
" 'GH',\n",
" 'GHxSM',\n",
" 'GHxSM2',\n",
" 'Gust',\n",
" 'HI',\n",
" 'HI1',\n",
" 'HI3',\n",
" 'HI4',\n",
" 'HIdx',\n",
" 'HPBL',\n",
" 'Heli',\n",
" 'HeliC',\n",
" 'INV',\n",
" 'IPLayer',\n",
" 'Into',\n",
" 'KI',\n",
" 'L-I',\n",
" 'LIsfc2x',\n",
" 'LM5',\n",
" 'LM6',\n",
" 'MAdv',\n",
" 'MCon',\n",
" 'MCon2',\n",
" 'MLLCL',\n",
" 'MMP',\n",
" 'MMSP',\n",
" 'MSFDi',\n",
" 'MSFi',\n",
" 'MSFmi',\n",
" 'MSG',\n",
" 'MTV',\n",
" 'Mix1',\n",
" 'Mix2',\n",
" 'Mmag',\n",
" 'MnT',\n",
" 'MpV',\n",
" 'MxT',\n",
" 'NBE',\n",
" 'NST',\n",
" 'NST1',\n",
" 'NST2',\n",
" 'NetIO',\n",
" 'OmDiff',\n",
" 'P',\n",
" 'PAdv',\n",
" 'PBE',\n",
" 'PEC',\n",
" 'PEC_TT24',\n",
" 'PFrnt',\n",
" 'PGrd',\n",
" 'PGrd1',\n",
" 'PGrdM',\n",
" 'PIVA',\n",
" 'PR',\n",
" 'PTvA',\n",
" 'PTyp',\n",
" 'PVV',\n",
" 'PW',\n",
" 'PW2',\n",
" 'PoT',\n",
" 'PoTA',\n",
" 'QPV1',\n",
" 'QPV2',\n",
" 'QPV3',\n",
" 'QPV4',\n",
" 'REFC',\n",
" 'RH',\n",
" 'RH_001_bin',\n",
" 'RH_002_bin',\n",
" 'RM5',\n",
" 'RM6',\n",
" 'RMGH2',\n",
" 'RMprop',\n",
" 'RMprop2',\n",
" 'RRtype',\n",
" 'RV',\n",
" 'Rain1',\n",
" 'Rain2',\n",
" 'Rain3',\n",
" 'Ro',\n",
" 'SA12hr',\n",
" 'SA1hr',\n",
" 'SA24hr',\n",
" 'SA36hr',\n",
" 'SA3hr',\n",
" 'SA48hr',\n",
" 'SA6hr',\n",
" 'SAcc',\n",
" 'SArun',\n",
" 'SH',\n",
" 'SHx',\n",
" 'SLI',\n",
" 'SNSQ',\n",
" 'SNW',\n",
" 'SNWA',\n",
" 'SRMl',\n",
" 'SRMlM',\n",
" 'SRMm',\n",
" 'SRMmM',\n",
" 'SRMr',\n",
" 'SRMrM',\n",
" 'SSP',\n",
" 'SSi',\n",
" 'STP',\n",
" 'STP1',\n",
" 'Shear',\n",
" 'ShrMag',\n",
" 'SnD',\n",
" 'Snow1',\n",
" 'Snow2',\n",
" 'Snow3',\n",
" 'SnowT',\n",
" 'St-Pr',\n",
" 'StrTP',\n",
" 'StrmMot',\n",
" 'SuCP',\n",
" 'T',\n",
" 'TAdv',\n",
" 'TGrd',\n",
" 'TGrdM',\n",
" 'TORi',\n",
" 'TORi2',\n",
" 'TP',\n",
" 'TP12hr',\n",
" 'TP168hr',\n",
" 'TP1hr',\n",
" 'TP24hr',\n",
" 'TP36hr',\n",
" 'TP3hr',\n",
" 'TP48hr',\n",
" 'TP6hr',\n",
" 'TP72hr',\n",
" 'TPrun',\n",
" 'TPx12x6',\n",
" 'TPx1x3',\n",
" 'TQIND',\n",
" 'TShrMi',\n",
" 'TV',\n",
" 'TW',\n",
" 'T_001_bin',\n",
" 'Tdef',\n",
" 'Tdend',\n",
" 'ThGrd',\n",
" 'Thom5',\n",
" 'Thom5a',\n",
" 'Thom6',\n",
" 'TmDpD',\n",
" 'Tmax',\n",
" 'Tmin',\n",
" 'Topo',\n",
" 'TotQi',\n",
" 'Tstk',\n",
" 'TwMax',\n",
" 'TwMin',\n",
" 'Twstk',\n",
" 'TxSM',\n",
" 'USTM',\n",
" 'VAdv',\n",
" 'VAdvAdvection',\n",
" 'VGP',\n",
" 'VSTM',\n",
" 'Vis',\n",
" 'WCD',\n",
" 'WD',\n",
" 'WEASD',\n",
" 'WEASD1hr',\n",
" 'WGS',\n",
" 'Wind',\n",
" 'WndChl',\n",
" 'ageoVC',\n",
" 'ageoW',\n",
" 'ageoWM',\n",
" 'cCape',\n",
" 'cCin',\n",
" 'cTOT',\n",
" 'capeToLvl',\n",
" 'dCape',\n",
" 'dGH12',\n",
" 'dP',\n",
" 'dP1hr',\n",
" 'dP3hr',\n",
" 'dP6hr',\n",
" 'dPW1hr',\n",
" 'dPW3hr',\n",
" 'dPW6hr',\n",
" 'dT',\n",
" 'dVAdv',\n",
" 'dZ',\n",
" 'defV',\n",
" 'del2gH',\n",
" 'df',\n",
" 'fGen',\n",
" 'fnD',\n",
" 'fsD',\n",
" 'gamma',\n",
" 'gammaE',\n",
" 'geoVort',\n",
" 'geoW',\n",
" 'geoWM',\n",
" 'loCape',\n",
" 'maxEPT',\n",
" 'minEPT',\n",
" 'mixRat',\n",
" 'msl-P',\n",
" 'muCape',\n",
" 'pV',\n",
" 'pVeq',\n",
" 'qDiv',\n",
" 'qVec',\n",
" 'qnVec',\n",
" 'qsVec',\n",
" 'shWlt',\n",
" 'snoRat',\n",
" 'snoRatCrocus',\n",
" 'snoRatEMCSREF',\n",
" 'snoRatOv2',\n",
" 'snoRatSPC',\n",
" 'snoRatSPCdeep',\n",
" 'snoRatSPCsurface',\n",
" 'staticCoriolis',\n",
" 'staticSpacing',\n",
" 'staticTopo',\n",
" 'swtIdx',\n",
" 'tTOT',\n",
" 'tWind',\n",
" 'tWindU',\n",
" 'tWindV',\n",
" 'uFX',\n",
" 'uW',\n",
" 'uWStk',\n",
" 'ulSnoRat',\n",
" 'vSmthW',\n",
" 'vTOT',\n",
" 'vW',\n",
" 'vWStk',\n",
" 'vertCirc',\n",
" 'wDiv',\n",
" 'wSp',\n",
" 'wSp_001_bin',\n",
" 'wSp_002_bin',\n",
" 'wSp_003_bin',\n",
" 'wSp_004_bin',\n",
" '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-09-06 13:05:37 -06:00
"0.0SFC\n",
"350.0MB\n",
"475.0MB\n",
"225.0MB\n",
"120.0_150.0BL\n",
"900.0MB\n",
"125.0MB\n",
"450.0MB\n",
"575.0MB\n",
"325.0MB\n",
"100.0MB\n",
"1000.0MB\n",
"60.0_90.0BL\n",
"275.0MB\n",
"1.0PV\n",
"950.0MB\n",
"150.0MB\n",
"1.5PV\n",
"700.0MB\n",
"825.0MB\n",
"150.0_180.0BL\n",
"250.0MB\n",
"375.0MB\n",
"1000.0_500.0MB\n",
"800.0MB\n",
"4000.0FHAG\n",
"925.0MB\n",
"2.0PV\n",
"0.5PV\n",
"0.0TROP\n",
"750.0MB\n",
"500.0MB\n",
"625.0MB\n",
"400.0MB\n",
"0.0FHAG\n",
"2.0FHAG\n",
"875.0MB\n",
"175.0MB\n",
"0.0_1000.0FHAG\n",
"850.0MB\n",
"600.0MB\n",
"725.0MB\n",
"0.0_6000.0FHAG\n",
"975.0MB\n",
"550.0MB\n",
"0.0_3000.0FHAG\n",
"675.0MB\n",
"425.0MB\n",
"200.0MB\n",
"0.0_30.0BL\n",
"30.0_60.0BL\n",
"650.0MB\n",
"525.0MB\n",
"300.0MB\n",
"90.0_120.0BL\n",
"1000.0FHAG\n",
"775.0MB\n",
"340.0_350.0K\n",
"290.0_300.0K\n",
"700.0_600.0MB\n",
"700.0_300.0MB\n",
"320.0Ke\n",
"800.0_750.0MB\n",
"0.0_610.0FHAG\n",
"60.0TILT\n",
"5.3TILT\n",
"1000.0_900.0MB\n",
"340.0K\n",
"5500.0_6000.0FHAG\n",
"255.0K\n",
"255.0_265.0K\n",
"3000.0_6000.0FHAG\n",
"25.0TILT\n",
"2000.0FHAG\n",
"0.0_500.0FHAG\n",
"1000.0_850.0MB\n",
"850.0_250.0MB\n",
"280.0_290.0Ke\n",
"1524.0FHAG\n",
"320.0_330.0K\n",
"0.0TILT\n",
"310.0_320.0Ke\n",
"310.0Ke\n",
"330.0K\n",
"900.0_800.0MB\n",
"550.0_500.0MB\n",
"2.4TILT\n",
"50.0TILT\n",
"3500.0FHAG\n",
"35.0TILT\n",
"12.0TILT\n",
"300.0_310.0K\n",
"3000.0_12000.0FHAG\n",
"0.9TILT\n",
"320.0K\n",
"400.0_350.0MB\n",
"500.0FHAG\n",
"750.0_700.0MB\n",
"1000.0_400.0MB\n",
"345.0K\n",
"250.0_260.0K\n",
"300.0Ke\n",
"290.0Ke\n",
"950.0_900.0MB\n",
"4572.0FHAG\n",
"275.0_285.0Ke\n",
"335.0Ke\n",
"295.0_305.0Ke\n",
"275.0_285.0K\n",
"600.0_550.0MB\n",
"310.0K\n",
"9000.0FHAG\n",
"335.0K\n",
"1000.0_7000.0FHAG\n",
"700.0_500.0MB\n",
"9144.0FHAG\n",
"325.0_335.0K\n",
"2000.0_8000.0FHAG\n",
"0.0_609.6FHAG\n",
"300.0K\n",
"0.0MAXOMEGA\n",
"315.0_325.0K\n",
"325.0K\n",
"340.0Ke\n",
"0.0_4000.0FHAG\n",
"5000.0_5500.0FHAG\n",
"300.0_250.0MB\n",
"1.5TILT\n",
"335.0_345.0K\n",
"315.0K\n",
"3.4TILT\n",
"2500.0FHAG\n",
"10000.0FHAG\n",
"0.0_2000.0FHAG\n",
"7000.0FHAG\n",
"5000.0FHAG\n",
"330.0Ke\n",
"500.0_400.0MB\n",
"1000.0_1500.0FHAG\n",
"305.0K\n",
"285.0_295.0Ke\n",
"14.0TILT\n",
"3000.0_3500.0FHAG\n",
"325.0_335.0Ke\n",
"2000.0_5000.0FHAG\n",
"7620.0FHAG\n",
"850.0_800.0MB\n",
"6096.0FHAG\n",
"6000.0_7000.0FHAG\n",
"2000.0_7000.0FHAG\n",
"9000.0_10000.0FHAG\n",
"295.0Ke\n",
"305.0Ke\n",
"265.0_275.0K\n",
"7000.0_8000.0FHAG\n",
"3000.0_8000.0FHAG\n",
"700.0_650.0MB\n",
"1000.0_6000.0FHAG\n",
"0.5TILT\n",
"450.0_400.0MB\n",
"1.8TILT\n",
"330.0_340.0K\n",
"800.0_700.0MB\n",
"850.0_300.0MB\n",
"6.0TILT\n",
"900.0_850.0MB\n",
"3657.6FHAG\n",
"0.0_5000.0FHAG\n",
"320.0_330.0Ke\n",
"8.7TILT\n",
"650.0_600.0MB\n",
"600.0_400.0MB\n",
"55.0TILT\n",
"270.0_280.0Ke\n",
"30.0TILT\n",
"310.0_320.0K\n",
"1500.0FHAG\n",
"1000.0_950.0MB\n",
"5500.0FHAG\n",
"250.0_200.0MB\n",
"500.0_1000.0FHAG\n",
"400.0_300.0MB\n",
"500.0_100.0MB\n",
"1000.0_3000.0FHAG\n",
"8000.0FHAG\n",
"285.0Ke\n",
"290.0K\n",
"305.0_315.0K\n",
"285.0_295.0K\n",
"0.0_2500.0FHAG\n",
"925.0_850.0MB\n",
"275.0Ke\n",
"1500.0_2000.0FHAG\n",
"300.0_200.0MB\n",
"610.0_40000.0FHAG\n",
"260.0_270.0K\n",
"2743.2FHAG\n",
"3000.0FHAG\n",
"315.0_325.0Ke\n",
"600.0_500.0MB\n",
"16.7TILT\n",
"280.0K\n",
"500.0_250.0MB\n",
"40.0TILT\n",
"3048.0FHAG\n",
"400.0_200.0MB\n",
"300.0_310.0Ke\n",
"270.0_280.0K\n",
"1000.0_700.0MB\n",
"45.0TILT\n",
"850.0_500.0MB\n",
"2500.0_3000.0FHAG\n",
"609.6FHAG\n",
"0.0_8000.0FHAG\n",
"295.0K\n",
"4.3TILT\n",
"295.0_305.0K\n",
"330.0_340.0Ke\n",
"270.0K\n",
"4000.0_4500.0FHAG\n",
"280.0_290.0K\n",
"925.0_700.0MB\n",
"0.0_1500.0FHAG\n",
"260.0K\n",
"10.0TILT\n",
"3500.0_4000.0FHAG\n",
"325.0Ke\n",
"285.0K\n",
"290.0_300.0Ke\n",
"7.5TILT\n",
"1828.8FHAG\n",
"280.0Ke\n",
"500.0_450.0MB\n",
"305.0_315.0Ke\n",
"250.0K\n",
"4500.0FHAG\n",
"1250.0FHAG\n",
"0.0_10000.0FHAG\n",
"4500.0_5000.0FHAG\n",
"250.0_350.0K\n",
"270.0Ke\n",
"275.0K\n",
"315.0Ke\n",
"500.0_300.0MB\n",
"350.0_300.0MB\n",
"750.0FHAG\n",
"19.5TILT\n",
"2000.0_2500.0FHAG\n",
"850.0_700.0MB\n",
"350.0K\n",
"265.0K\n",
"6000.0FHAG\n",
"8000.0_9000.0FHAG\n",
"0.0_0.0SFC\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-09-06 13:05:37 -06:00
"[<DataTime instance: 2018-09-06 17:00:00 (0) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (1) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (2) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (3) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (4) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (5) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (6) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (7) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (8) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (9) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (10) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (11) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (12) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (13) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (14) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (15) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (16) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (17) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (18) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (19) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (20) >,\n",
" <DataTime instance: 2018-09-06 17:00:00 (21) >]"
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-09-06 13:05:37 -06:00
"('Time :', '2018-09-06 17:00:00 (21)')\n",
"('Model:', 'RAP13')\n",
"('Parm :', 'T')\n",
"('Unit :', '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-09-06 13:05:37 -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": [
"%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-09-06 13:05:37 -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
}