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-09 13:39:16 -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-10-09 13:39:16 -06:00
"import unittest\n",
"\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",
2018-10-09 13:39:16 -06:00
"dataTypes.sort()\n",
2018-09-05 15:52:38 -06:00
"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-09 13:39:16 -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",
" 'NationalBlend',\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-10-09 13:39:16 -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-10-09 13:39:16 -06:00
"100.0MB\n",
"175.0MB\n",
"125.0MB\n",
"200.0MB\n",
"150.0MB\n",
"250.0MB\n",
"225.0MB\n",
"275.0MB\n",
"300.0MB\n",
"325.0MB\n",
"350.0MB\n",
"400.0MB\n",
"375.0MB\n",
"425.0MB\n",
"450.0MB\n",
"475.0MB\n",
"500.0MB\n",
"525.0MB\n",
"550.0MB\n",
"575.0MB\n",
"650.0MB\n",
"625.0MB\n",
"600.0MB\n",
"675.0MB\n",
"700.0MB\n",
"725.0MB\n",
"750.0MB\n",
"775.0MB\n",
"825.0MB\n",
"800.0MB\n",
"850.0MB\n",
"875.0MB\n",
"900.0MB\n",
"925.0MB\n",
"975.0MB\n",
"1000.0MB\n",
"0.0SFC\n",
"950.0MB\n",
"0.0TROP\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",
"1000.0_500.0MB\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",
"150.0_180.0BL\n",
"0.0_30.0BL\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",
"2.0FHAG\n",
"315.0K\n",
"3.4TILT\n",
"2500.0FHAG\n",
"10000.0FHAG\n",
"0.0_2000.0FHAG\n",
"7000.0FHAG\n",
"0.0_1000.0FHAG\n",
"5000.0FHAG\n",
"330.0Ke\n",
"90.0_120.0BL\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",
"120.0_150.0BL\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",
"30.0_60.0BL\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",
"4000.0FHAG\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",
"0.0FHAG\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",
"1.0PV\n",
"5500.0FHAG\n",
"250.0_200.0MB\n",
"1.5PV\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",
"2.0PV\n",
"300.0_200.0MB\n",
"610.0_40000.0FHAG\n",
"260.0_270.0K\n",
"0.0_6000.0FHAG\n",
"2743.2FHAG\n",
"3000.0FHAG\n",
"315.0_325.0Ke\n",
"600.0_500.0MB\n",
"16.7TILT\n",
"0.5PV\n",
"280.0K\n",
"500.0_250.0MB\n",
"40.0TILT\n",
"1000.0FHAG\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",
"60.0_90.0BL\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",
"0.0_3000.0FHAG\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",
"2000.0_3000.0FHAG\n"
2018-09-05 15:52:38 -06:00
]
}
],
"source": [
"request.setParameters(\"T\")\n",
"availableLevels = DataAccessLayer.getAvailableLevels(request)\n",
2018-10-09 13:39:16 -06:00
"for lvl in availableLevels:\n",
" print(lvl)"
2018-09-05 15:52:38 -06:00
]
},
{
"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-09 13:39:16 -06:00
"[<DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18:00:00 >,\n",
" <DataTime instance: 2018-10-09 18: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-09 13:39:16 -06:00
"Time : 2018-10-09 18:00:00\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-10-09 13:39:16 -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-10-09 13:39:16 -06:00
"cbar.set_label(grid.getLocationName() +\" \" + grid.getLevel() + \" \" \\\n",
" + grid.getParameter() + \" (\" + grid.getUnit() + \") \" \\\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-09 13:39:16 -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-10-09 13:39:16 -06:00
"cbar2.set_label(grid.getLocationName() +\" \" + grid.getLevel() + \" \" \\\n",
" + grid.getParameter() + \" (\" + grid.getUnit() + \") \" \\\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
}