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",
2020-09-04 11:26:02 -06:00
" 'airep',\n",
2018-10-09 13:39:16 -06:00
" '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",
2020-09-04 11:26:02 -06:00
" 'pirep',\n",
2018-10-09 13:39:16 -06:00
" '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": [
2020-09-04 11:26:02 -06:00
"['AUTOSPE',\n",
" 'CMC',\n",
2018-10-09 13:39:16 -06:00
" '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",
2020-09-04 11:26:02 -06:00
" 'GEFS',\n",
2018-10-09 13:39:16 -06:00
" 'GFS',\n",
" 'GFS20',\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",
" 'HPCqpfNDFD',\n",
" 'HRRR',\n",
" 'LAMP2p5',\n",
2020-09-04 11:26:02 -06:00
" 'MRMS_0500',\n",
" 'MRMS_1000',\n",
2018-10-09 13:39:16 -06:00
" 'NAM12',\n",
" 'NAM40',\n",
" 'NOHRSC-SNOW',\n",
" 'NationalBlend',\n",
" 'RAP13',\n",
" 'RTMA',\n",
2020-09-04 11:26:02 -06:00
" 'RTOFS-Now-WestAtl',\n",
" 'RTOFS-Now-WestConus',\n",
" 'RTOFS-WestAtl',\n",
" 'RTOFS-WestConus',\n",
2018-10-09 13:39:16 -06:00
" 'SPCGuide',\n",
" 'SeaIce',\n",
" 'TPCWindProb',\n",
" 'URMA25',\n",
2020-09-04 11:26:02 -06:00
" 'WaveWatch']"
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": [
2020-09-04 11:26:02 -06:00
"['36SHRMi',\n",
2018-10-09 13:39:16 -06:00
" '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",
" 'DivF',\n",
" 'DivFn',\n",
" 'DivFs',\n",
" 'DpD',\n",
" 'DpT',\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",
" '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",
" 'MpV',\n",
" 'NBE',\n",
" 'NST',\n",
" 'NST1',\n",
" 'NST2',\n",
" 'OmDiff',\n",
" 'P',\n",
" 'PAdv',\n",
" 'PBE',\n",
" 'PEC',\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",
" 'RMprop',\n",
" 'RMprop2',\n",
" 'RRtype',\n",
" 'RV',\n",
" 'Rain1',\n",
" 'Rain2',\n",
" 'Rain3',\n",
" 'Ro',\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",
" 'TP1hr',\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",
" 'dP',\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": [
2020-09-04 11:26:02 -06:00
"0.0SFC\n",
"350.0MB\n",
"475.0MB\n",
"610.0_40000.0FHAG\n",
"225.0MB\n",
"120.0_150.0BL\n",
"900.0MB\n",
2018-10-09 13:39:16 -06:00
"125.0MB\n",
2020-09-04 11:26:02 -06:00
"0.0_610.0FHAG\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",
2018-10-09 13:39:16 -06:00
"150.0MB\n",
2020-09-04 11:26:02 -06:00
"1.5PV\n",
"700.0MB\n",
"825.0MB\n",
"150.0_180.0BL\n",
2018-10-09 13:39:16 -06:00
"250.0MB\n",
"375.0MB\n",
2020-09-04 11:26:02 -06:00
"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",
2018-10-09 13:39:16 -06:00
"500.0MB\n",
"625.0MB\n",
2020-09-04 11:26:02 -06:00
"400.0MB\n",
"0.0FHAG\n",
"2.0FHAG\n",
"875.0MB\n",
"175.0MB\n",
"0.0_1000.0FHAG\n",
"850.0MB\n",
2018-10-09 13:39:16 -06:00
"600.0MB\n",
"725.0MB\n",
2020-09-04 11:26:02 -06:00
"0.0_6000.0FHAG\n",
2018-10-09 13:39:16 -06:00
"975.0MB\n",
2020-09-04 11:26:02 -06:00
"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",
2018-10-09 13:39:16 -06:00
"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",
"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",
"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",
2020-09-04 11:26:02 -06:00
"700.0_300.0LYRMB\n",
"850.0_700.0LYRMB\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": [
2020-09-04 12:14:45 -06:00
"[<DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17:00:00 >,\n",
" <DataTime instance: 2020-09-04 17: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": [
2020-09-04 12:14:45 -06:00
"Time : 2020-09-04 17:00:00\n",
2018-10-09 13:39:16 -06:00
"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": {
2020-09-04 12:14:45 -06:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAm4AAAHhCAYAAADXpjKDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOydd7xUxd3Gv6dtvf0Cl95BVCKCKFbsvWOPNcb22hM1aixJjC36plhejVFUNNGoibElJvZYELuIqEhAeudy+5ZT5v1jzpyy94KoNM0+nw8f7u6eM2fO2dmZZ37l+WlCCMooo4wyyiijjDLK2PShb+wOlFFGGWWUUUYZZZSxdigTtzLKKKOMMsooo4xvCcrErYwyyiijjDLKKONbgjJxK6OMMsooo4wyyviWoEzcyiijjDLKKKOMMr4lKBO3Msooo4wyyiijjG8JzI3dgdVhv/32EytWrNjY3SjjW4BisUgikdjY3SjjW4LyeFn/aG5uZs6cOQwbNoxMJhP77OOPP2bIkCGk0+mv3b4QgmKxSEdHBwsXLiSbzVJfX09lZSWapn3T7sfwVceLEII5c+bQ0tJCTU0NmUyGbDbb6Tl8GRYvXsyiRYvQNI0xY8Z81W5/62DbNgsWLKC5uZmKigoSiQR1dXVUVFSsdRuFQgHbtkmlUixZsgQhBMlkkqVLl1JbW0tzczP19fX07Nlzvd3Hupxf3nvvvX8JIfbr9IEQYpP8t80224gyylgbvPzyyxu7C2V8i1AeL+sXjzzyiOjRo4eYPHlyp8+mTJkiBgwYIFzXXWfXa21tFddcc43YYYcdRF1dnTj77LPF5MmTRUdHxzpp/6uOl8cff1xss8023/j6N954owDEhAkTgvemTJki7rzzTnHppZeKlStXfqP2N1XsvvvuAhA33HCD6N27t6ipqREXX3yx6NGjh9hmm23EvffeKzzP+0ptzp07V5xzzjlf69yvinU5vwDvii740UYnaKv7VyZuZawtygtxGV8F5fGyftDS0iJOPfVUMWTIEPHee+91ecwBBxwg7rjjjvXWh7lz54prrrlGfO973xPJZFL07NlT7L333mLixInCtu2v1eZXHS9jxowRf/nLX77WtaLwPE9MmTJFLFu2LHhv7NixAhDbb7+9OOSQQ8S7774rPv300699b5si5s+fLyZOnCiEEOLPf/5zcL8zZswQL774oth6663FiBEjxOGHHy7mzJmzkXvbGRuCuJVj3Mooo4wyyvhGePPNN9l6663RNI0PP/ywS9fe0qVLmTx5Mqeeeup660f//v256qqr+Oijj+jo6ODtt9/mrLPO4oEHHmD8+PEsX758vV1bYeDAgTz55JMUi8Wv3cacOXO44YYbeOKJJ3jzzTdZsWIFQgheffVVjjrqKKZOnUqPHj04/fTT2WWXXTjzzDM5+eST2W677ejWrRv9+/dH0zRuuummdXhnGwZ9+/YNxsgxxxzDwoULefXVVxk+fDh77LEHb7/9NrZt87e//Y0DDjiAzz//fCP3eMNjk41xK6OMMsooY9PHzTffzK9//WvuvPNODj/88NUeVygUSKfTGyy+UNd1+vXrR79+/TjssMO4+uqr2XXXXXn//fdJpVLr7boPPvggJ554IltssQUXXXQR/fr1Y4sttmDw4MGrPadYLPLWW2/x7rvvksvlePTRRxk+fDhbbrklt9xyCyeddBJtbW2AJKennXYat956KwBffPEFgwcPpqGhgYceeoghQ4Zwzz33cO2117Lddtutt/vcUOjdu3fstWEY1NbW0r9/f6qrq9lss82wbRvT/O+hM/89d1pGGWWUUcYaIYRY6+B+IQQPPPAAd9xxB++//36nBbYUffv2paqqin/84x8ceOCB66K7aw1d17n22muZNm0ad955Jz/60Y/W27UymQx//etfefXVV7nzzjtpamrigw8+oLa2loaGBioqKthss83o1asXL774IrNmzWLx4sVsttlm7LDDDlRUVDBhwgQuvvjiWEKDIiel38+gQYN499136du3Lw0NDQAccsghTJ8+naOOOoqf//znnHXWWRiGsd7ueUPigQce4N133wVg3rx53HDDDf9VpA3KxK2MMsooY5PFc889x4QJE3j11VfXW2ZhsViktraWjo4O+vXrxzvvvEOPHj3wPI/f/OY3TJgwgSFDhgCSrE2bNo0nn3ySP//5z7iuy6OPPvqlpA0gn88zfvx4HnjggXVC3FauXMl9993Hv//9b2bOnEk+n+fJJ59k1KhRXR7f3t5Ov379ePTRRznkkEOYM2cOvXr1YuDAgTz00EP06dOHfffdF11fNxFE48ePZ5dddsF1XTRN46OPPmLVqlW0trYyffp0Fi5cyAknnMDo0aPp06cP1dXVa2zPsqzVfrbNNtvEXm+77bY8/vjjfPzxx5x11ln88Y9/5MYbb2T8+PHrPOt2Q+OYY44hk8nwyCOP8Pzzz7PPPvts7C5teHQV+LYp/CsnJ5SxtigHm5fxVfBtGi+ffvqpAIJ/W265pbjxxhvFK6+8IvL5/Dq5xv333x+0v9tuu4nq6mpRU1Mjqqurg/dHjRoldt11V9G7d28xaNAgcf7554s33njjS7NDZ8yYIW666Sax1157iYqKCrH33nuvNnHhq2KnnXYSxx13nHjsscfE9OnTxXbbbSd69eoljj76aHHRRReJhx9+ONa/vffeO7ifgQMHivHjx4thw4YJTdPEbrvtJrbeemsxZMgQMXv27Nh1vs54WbBgQex7++1vf/sN7/brw3Vdcd9994lhw4aJUaNGBdmo6zKzd2PhmGOOEYBoaGgQgEgmkxs9UWNDJCeULW5llFFGGZsounfvTmVlJa2trQBMnz6dyy67LPhc0zQuvPBCdtttN3r06MGHH35Ic3Mzl1xyyVpbjpQLbffdd+e2225j8ODBNDc3I4Tg2WefZdiwYaTTaZqbmxk4cCCDBw/+UquNEIKf//zn/P73v+eII47g3HPP5a9//StVVVVf80nE237ooYf4/PPPeemll4KYuZdffpkPPviAefPmMX/+fK666ipSqRSHHXYYAH/7299oaWmhrq6OZDIZtOd5Hrquy2w9XWfw4MEcc8wx/OQnP/naVs76+nouv/xyFi1axEEHHcTBBx/8je/760LXdU455RROPvlkzj33XA466CDS6TQvvfQSjz/++BrjEr8J1HNdn3jwwQe56aabMAyDkSNH0tTUxAEHHMCzzz77nXENd4mu2Nym8K9scStjbfFtsqCUsfHxbRsvLS0t4h//+If43e9+JxYvXiwWLFgg/vKXv4jTTz89ZtXp6t9OO+0kfvrTn4rnnntOtLa2Bm2+8sor4tFHHxVTp04VP//5z0VdXZ34z3/+s876fPHFF4vttttOLFmyROTzefHss8+Ku+++W9x///3illtuEZdddpk46aSTxDHHHCNmzpy5Vm0Wi0Xx1FNPiW222UaMHj1avP3222s8/tZbbxVDhgwRJ5xwgrj00kvFpEmTxKeffrpGS9Mnn3wiDjvsMAGI22+/XQix7sZLoVAQjzzyiPjd734nZsyYsU7a/KpwHEfccccdgVbadtttJ7beemux7bbbissvv1ysWLFinVznggsuEIDIZDJi6NCh4rzzzhPvvPOOEEKIa6+9VmSzWTF//vxvfJ1ddtlFAGLatGlCiNDSef7553/jtr8uNoTFTZOfbXoYO3asUAGIZZSxJrzyyivstttuG7sbZXxL8F0bL8cffzwPPfQQAFtttRXHHnssxWKR3/zmN7S0tNCrVy9aWlpob29nwIABweQ/cuRI5syZwzbbbMN1111H//7911mfxowZQ2trK7169WLatGlsueWWQfZfVVUVvXv3plevXnzwwQesXLmSP/3pT6tta8WKFZx44om8+OKLjBkzhosuuogjjjjiS605juPw/PPPs2zZMubPn8/HH3/M22+/TWNjI9tuuy3bb789++67L2PGjOHNN9/k+uuvZ/r06ZxwwgmcffbZQRbo2o4XIQRLlixhxYoVJBIJKisr6dWrF5qmIYRgq6224vPPP+eggw5iypQpZLN
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",
2020-09-04 10:47:37 -06:00
" gl.top_labels = gl.right_labels = False\n",
2018-09-05 15:52:38 -06:00
" 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": {
2020-09-04 12:14:45 -06:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAm4AAAHhCAYAAADXpjKDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOydd5gURd7HPz15Ngd2l5yjIllAUSSJEUVQwex5Kp4BPXM+9cyed2c4fT1FRO8MGM7MKWJABVRQEVABQWDJu2xmJ0+9f8x0T01P98xsIHnzfZ59dma6uqq6u7rqW7+oCCHIIIMMMsgggwwyyGD/h2VfdyCDDDLIIIMMMsggg/SQIW4ZZJBBBhlkkEEGBwgyxC2DDDLIIIMMMsjgAEGGuGWQQQYZZJBBBhkcIMgQtwwyyCCDDDLIIIMDBBnilkEGGWSQQQYZZHCAwLavO2CGY489VlRWVu7rbmRwAMDv9+NwOPZ1NzI4QJAZL3setbW1bNiwgV69epGVlRV3bOXKlfTo0QO3293s+oUQ+P1+Ghsb2bJlC9nZ2RQXF5Obm4uiKC3tfhyaOl6EEGzYsIG6ujoKCgrIysoiOzs74T6kwrZt29i6dSuKojBkyJCmdvuAQyAQYPPmzdTW1pKTk4PD4aCoqIicnJy06/D5fAQCAVwuF9u3b0cIgdPpZMeOHRQWFlJbW0txcTFt27bdY9fRmvPLsmXLPhBCHJtwQAixX/4NHTpUZJBBOvjkk0/2dRcyOICQGS97Fq+88oooLS0VixYtSji2ZMkS0aVLFxEKhVqtvfr6enHXXXeJww47TBQVFYlLL71ULFq0SDQ2NrZK/U0dL2+88YYYOnRoi9u///77BSCmTJmi/bZkyRLx5JNPihtuuEHs2rWrRfXvrxg7dqwAxH333Sfat28vCgoKxLXXXitKS0vF0KFDxbPPPivC4XCT6ty4caO47LLLmnVuU9Ga8wuwVBjwo31O0Mz+MsQtg3SRWYgzaAoy42XPoK6uTlxwwQWiR48eYtmyZYZljj/+ePHEE0/ssT5s3LhR3HXXXeKQQw4RTqdTtG3bVhx99NFi1qxZIhAINKvOpo6XIUOGiNdee61ZbckIh8NiyZIlYufOndpvw4YNE4AYOXKkOOmkk8TSpUvFTz/91Oxr2x9RXl4uZs2aJYQQ4uWXX9aud/Xq1WLBggVi0KBBom/fvuKUU04RGzZs2Me9TcTeIG4ZG7cMMsgggwxahMWLFzNo0CAUReH77783VO3t2LGDRYsWccEFF+yxfnTu3JnbbruNH374gcbGRr7++msuueQSnn/+eUaPHk1FRcUea1tF165deeutt/D7/c2uY8OGDdx33328+eabLF68mMrKSoQQLFy4kNNOO43ly5dTWlrKRRddxJFHHsmMGTM477zzGD58OG3atKFz584oisKDDz7Yile2d9CxY0dtjEybNo0tW7awcOFCevfuzbhx4/j6668JBAL85z//4fjjj2fNmjX7uMd7H/utjVsGGWSQQQb7Px566CEefvhhnnzySU455RTTcj6fD7fbvdfsCy0WC506daJTp05MnjyZ22+/naOOOopvv/0Wl8u1x9p94YUXOOecczjooIO45ppr6NSpEwcddBDdu3c3Pcfv9/PVV1+xdOlSPB4Pc+fOpXfv3hx88ME88sgjnHvuuTQ0NAARcnrhhRfy6KOPAvDrr7/SvXt3ysrKePHFF+nRowfPPPMMd999N8OHD99j17m30L59+7jvVquVwsJCOnfuTH5+Pn369CEQCGCz/e/Qmf+dK80ggwwyyCAphBBpG/cLIXj++ed54okn+PbbbxMWWD06duxIXl4e77//PieccEJrdDdtWCwW7r77blasWMGTTz7JH//4xz3WVlZWFq+//joLFy7kySefpKamhu+++47CwkLKysrIycmhT58+tGvXjgULFrBu3Tq2bdtGnz59OOyww8jJyWHKlClce+21cQ4NKjnRP59u3bqxdOlSOnbsSFlZGQAnnXQSq1at4rTTTuOOO+7gkksuwWq17rFr3pt4/vnnWbp0KQCbNm3ivvvu+58ibZAhbhlkkEEG+y0+/PBDpkyZwsKFC/eYZ6Hf76ewsJDGxkY6derEN998Q2lpKeFwmL/+9a9MmTKFHj16ABGytmLFCt566y1efvllQqEQc+fOTUnaALxeL6NHj+b5559vFeK2a9cuZs+ezWeffcbatWvxer289dZbDBw40LD87t276dSpE3PnzuWkk05iw4YNtGvXjq5du/Liiy/SoUMHjjnmGCyW1rEgGj16NEceeSShUAhFUfjhhx+orq6mvr6eVatWsWXLFs4++2wGDx5Mhw4dyM/PT1qf3W43PTZ06NC474ceeihvvPEGK1eu5JJLLuFf//oX999/P6NHj251r9u9jWnTppGVlcUrr7zC/PnzmThx4r7u0t6HkeHb/vCXcU7IIF1kjM0zaAoOpPHy008/CUD7O/jgg8X9998vPv30U+H1eluljeeee06rf8yYMSI/P18UFBSI/Px87feBAweKo446SrRv315069ZNzJw5U3z55ZcpvUNXr14tHnzwQTFhwgSRk5Mjjj76aFPHhaZi1KhR4owzzhCvvvqqWLVqlRg+fLho166dOP3008U111wjXnrppbj+HX300dr1dO3aVYwePVr06tVLKIoixowZIwYNGiR69Ogh1q9fH9dOc8bL5s2b457b3/72txZebfMRCoXE7NmzRa9evcTAgQM1b9TW9OzdV5g2bZoARFlZmQCE0+nc544ae8M5ISNxyyCDDDLYT1FSUkJubi719fUArFq1ihtvvFE7rigKV111FWPGjKG0tJTvv/+e2tparrvuurQlR6oKbezYsTz22GN0796d2tpahBDMmzePXr164Xa7qa2tpWvXrnTv3j2l1EYIwR133MH//d//MXXqVC6//HJef/118vLymnkn4ut+8cUXWbNmDR9//LFmM/fJJ5/w3XffsWnTJsrLy7nttttwuVxMnjwZgP/85z/U1dVRVFSE0+nU6guHw1gsloi3nsVC9+7dmTZtGtdff32zpZzFxcXcdNNNbN26lRNPPJFJkya1+LqbC4vFwvnnn895553H5Zdfzoknnojb7ebjjz/mjTfeSGqX2BKo93VP4oUXXuDBBx/EarXSv39/ampqOP7445k3b95vRjVsCCM2tz/8ZSRuGaSLA0mCksG+x4E2Xurq6sT7778v/v73v4tt27aJzZs3i9dee01cdNFFcVIdo79Ro0aJm2++WXz44Yeivr5eq/PTTz8Vc+fOFcuXLxd33HGHKCoqEr/88kur9fnaa68Vw4cPF9u3bxder1fMmzdPPP300+K5554TjzzyiLjxxhvFueeeK6ZNmybWrl2bVp1+v1+8/fbbYujQoWLw4MHi66+/Tlr+0UcfFT169BBnn322uOGGG8ScOXPETz/9lFTS9OOPP4rJkycLQDz++ONCiNYbLz6fT7zyyivi73//u1i9enWr1NlUBINB8cQTT2ix0oYPHy4GDRokDj30UHHTTTeJysrKVmnnyiuvFIDIysoSPXv2FFdccYX45ptvhBBC3H333SI7O1uUl5e3uJ0jjzxSAGLFihVCiJikc+bMmS2uu7nYGxI3JXJs/8OwYcOEaoCYQQbJ8OmnnzJmzJh93Y0MDhD81sbLWWedxYsvvgjAgAEDmD59On6/n7/+9a/U1dXRrl076urq2L17N126dNEm//79+7NhwwaGDh3KPffcQ+fOnVutT0OGDKG+vp527dqxYsUKDj74YM37Ly8vj/bt29OuXTu+++47du3axb///W/TuiorKznnnHNYsGABQ4YM4ZprrmHq1KkppTnBYJD58+ezc+dOysvLWblyJV9//TVVVVUceuihjBw5kmOOOYYhQ4awePFi7r33XlatWsXZZ5/NpZdeqnmBpjtehBBs376dyspKHA4Hubm5tGvXDkVREEIwYMAA1qxZw4knnsiSJUvIzs7mwQcf1CSCexM+n48lS5ZgsVjIzs7G6/Xy3HPP8fTTT3Pcccfx/vvvt6j+d999l7POOot
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",
2020-09-04 10:47:37 -06:00
" vmin=data.min(), vmax=data.max(), extend='both')\n",
"cbar2 = fig2.colorbar(cs2, 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()))"
]
2020-09-04 11:26:02 -06:00
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
2018-09-05 15:52:38 -06:00
}
],
"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",
2020-09-04 11:26:02 -06:00
"version": "3.8.5"
2018-09-05 15:52:38 -06:00
}
},
"nbformat": 4,
"nbformat_minor": 1
}