mirror of
https://github.com/Unidata/python-awips.git
synced 2025-02-23 14:57:56 -05:00
856 lines
445 KiB
Text
856 lines
445 KiB
Text
|
{
|
||
|
"cells": [
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"This example covers the callable methods of the Python AWIPS DAF when working with gridded data. We start with a connection to an EDEX server, then query data types, then grid names, parameters, levels, and other information. Finally the gridded data is plotted for its domain using Matplotlib and Cartopy."
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## DataAccessLayer.getSupportedDatatypes()\n",
|
||
|
"\n",
|
||
|
"getSupportedDatatypes() returns a list of available data types offered by the EDEX server defined above. "
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 12,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"['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",
|
||
|
" 'grid',\n",
|
||
|
" 'hydro',\n",
|
||
|
" 'maps',\n",
|
||
|
" 'modelsounding',\n",
|
||
|
" 'obs',\n",
|
||
|
" 'practicewarning',\n",
|
||
|
" 'radar',\n",
|
||
|
" 'radar_spatial',\n",
|
||
|
" 'satellite',\n",
|
||
|
" 'sfcobs',\n",
|
||
|
" 'topo',\n",
|
||
|
" 'warning']"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 12,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"from awips.dataaccess import DataAccessLayer\n",
|
||
|
"DataAccessLayer.changeEDEXHost(\"edex-cloud.unidata.ucar.edu\")\n",
|
||
|
"dataTypes = DataAccessLayer.getSupportedDatatypes()\n",
|
||
|
"list(dataTypes)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## DataAccessLayer.getAvailableLocationNames()\n",
|
||
|
"\n",
|
||
|
"Now create a new data request, and set the data type to **grid** to request all available grids with **getAvailableLocationNames()**"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 13,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"['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",
|
||
|
" 'FNMOC-WW3',\n",
|
||
|
" 'GFS',\n",
|
||
|
" 'GFS20',\n",
|
||
|
" 'GribModel:7:14:16',\n",
|
||
|
" 'HFR-EAST_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",
|
||
|
" 'NAVGEM',\n",
|
||
|
" 'NCWF',\n",
|
||
|
" 'NDFD',\n",
|
||
|
" 'NOHRSC-SNOW',\n",
|
||
|
" 'PROB3HR',\n",
|
||
|
" 'QPE-RFC-STR',\n",
|
||
|
" 'RAP13',\n",
|
||
|
" 'RFCqpf',\n",
|
||
|
" 'RTMA',\n",
|
||
|
" 'SeaIce',\n",
|
||
|
" 'TPCWindProb',\n",
|
||
|
" 'UKMET-MODEL1',\n",
|
||
|
" 'URMA25']"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 13,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"request = DataAccessLayer.newDataRequest()\n",
|
||
|
"request.setDatatype(\"grid\")\n",
|
||
|
"available_grids = DataAccessLayer.getAvailableLocationNames(request)\n",
|
||
|
"available_grids.sort()\n",
|
||
|
"list(available_grids)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## DataAccessLayer.getAvailableParameters()\n",
|
||
|
"\n",
|
||
|
"After datatype and model name (locationName) are set, you can query all available parameters with **getAvailableParameters()**"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 14,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"['AV',\n",
|
||
|
" 'Along',\n",
|
||
|
" 'AppT',\n",
|
||
|
" 'BLI',\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",
|
||
|
" '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",
|
||
|
" '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",
|
||
|
" 'Into',\n",
|
||
|
" 'KI',\n",
|
||
|
" 'L-I',\n",
|
||
|
" 'LIsfc2x',\n",
|
||
|
" 'LgSP1hr',\n",
|
||
|
" 'MAdv',\n",
|
||
|
" 'MCon',\n",
|
||
|
" 'MCon2',\n",
|
||
|
" 'MMSP',\n",
|
||
|
" 'MSFDi',\n",
|
||
|
" 'MSFi',\n",
|
||
|
" 'MSFmi',\n",
|
||
|
" 'MSG',\n",
|
||
|
" 'MTV',\n",
|
||
|
" 'Mix1',\n",
|
||
|
" 'Mix2',\n",
|
||
|
" 'Mmag',\n",
|
||
|
" 'MpV',\n",
|
||
|
" 'NBE',\n",
|
||
|
" 'OmDiff',\n",
|
||
|
" 'P',\n",
|
||
|
" 'PAdv',\n",
|
||
|
" 'PBE',\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",
|
||
|
" 'RRtype',\n",
|
||
|
" 'RV',\n",
|
||
|
" 'Rain1',\n",
|
||
|
" 'Rain2',\n",
|
||
|
" 'Rain3',\n",
|
||
|
" 'Ro',\n",
|
||
|
" 'SH',\n",
|
||
|
" 'SHx',\n",
|
||
|
" 'SLI',\n",
|
||
|
" 'SNW',\n",
|
||
|
" 'SNWA',\n",
|
||
|
" 'SRMm',\n",
|
||
|
" 'SRMmM',\n",
|
||
|
" 'SSi',\n",
|
||
|
" 'Shear',\n",
|
||
|
" 'ShrMag',\n",
|
||
|
" 'SnD',\n",
|
||
|
" 'Snow1',\n",
|
||
|
" 'Snow2',\n",
|
||
|
" 'Snow3',\n",
|
||
|
" 'SnowT',\n",
|
||
|
" 'St-Pr',\n",
|
||
|
" 'St-Pr1hr',\n",
|
||
|
" 'StrTP',\n",
|
||
|
" 'StrmMot',\n",
|
||
|
" 'T',\n",
|
||
|
" 'TAdv',\n",
|
||
|
" 'TGrd',\n",
|
||
|
" 'TGrdM',\n",
|
||
|
" 'TP',\n",
|
||
|
" 'TP1hr',\n",
|
||
|
" 'TQIND',\n",
|
||
|
" 'TV',\n",
|
||
|
" 'TW',\n",
|
||
|
" 'T_001_bin',\n",
|
||
|
" 'Tdef',\n",
|
||
|
" 'Tdend',\n",
|
||
|
" 'ThGrd',\n",
|
||
|
" 'TmDpD',\n",
|
||
|
" 'Tmax',\n",
|
||
|
" 'Tmin',\n",
|
||
|
" 'TotQi',\n",
|
||
|
" 'Tstk',\n",
|
||
|
" 'TwMax',\n",
|
||
|
" 'TwMin',\n",
|
||
|
" 'Twstk',\n",
|
||
|
" 'TxSM',\n",
|
||
|
" 'USTM',\n",
|
||
|
" 'VAdv',\n",
|
||
|
" 'VAdvAdvection',\n",
|
||
|
" 'VSTM',\n",
|
||
|
" 'Vis',\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",
|
||
|
" 'mixRat',\n",
|
||
|
" 'msl-P',\n",
|
||
|
" 'muCape',\n",
|
||
|
" 'pV',\n",
|
||
|
" 'pVeq',\n",
|
||
|
" 'qDiv',\n",
|
||
|
" 'qVec',\n",
|
||
|
" 'qnVec',\n",
|
||
|
" 'qsVec',\n",
|
||
|
" 'shWlt',\n",
|
||
|
" 'snoRatCrocus',\n",
|
||
|
" 'snoRatEMCSREF',\n",
|
||
|
" 'snoRatSPC',\n",
|
||
|
" 'snoRatSPCdeep',\n",
|
||
|
" 'snoRatSPCsurface',\n",
|
||
|
" 'swtIdx',\n",
|
||
|
" 'tTOT',\n",
|
||
|
" 'tWind',\n",
|
||
|
" 'tWindU',\n",
|
||
|
" 'tWindV',\n",
|
||
|
" 'uFX',\n",
|
||
|
" 'uW',\n",
|
||
|
" 'vSmthW',\n",
|
||
|
" 'vTOT',\n",
|
||
|
" 'vW',\n",
|
||
|
" 'vertCirc',\n",
|
||
|
" 'wDiv',\n",
|
||
|
" 'wSp',\n",
|
||
|
" 'wSp_001_bin',\n",
|
||
|
" 'wSp_002_bin',\n",
|
||
|
" 'wSp_003_bin',\n",
|
||
|
" 'wSp_004_bin',\n",
|
||
|
" 'zAGL']"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 14,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"request.setLocationNames(\"RAP13\")\n",
|
||
|
"availableParms = DataAccessLayer.getAvailableParameters(request)\n",
|
||
|
"availableParms.sort()\n",
|
||
|
"list(availableParms)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## DataAccessLayer.getAvailableLevels()\n",
|
||
|
"\n",
|
||
|
"Selecting **\"T\"** for temperature."
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 15,
|
||
|
"metadata": {
|
||
|
"scrolled": true
|
||
|
},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"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",
|
||
|
"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",
|
||
|
"850.0MB\n",
|
||
|
"600.0MB\n",
|
||
|
"725.0MB\n",
|
||
|
"975.0MB\n",
|
||
|
"550.0MB\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",
|
||
|
"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",
|
||
|
"60.0TILT\n",
|
||
|
"5.3TILT\n",
|
||
|
"1000.0_900.0MB\n",
|
||
|
"340.0K\n",
|
||
|
"255.0K\n",
|
||
|
"255.0_265.0K\n",
|
||
|
"25.0TILT\n",
|
||
|
"1000.0_850.0MB\n",
|
||
|
"850.0_250.0MB\n",
|
||
|
"280.0_290.0Ke\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",
|
||
|
"35.0TILT\n",
|
||
|
"12.0TILT\n",
|
||
|
"300.0_310.0K\n",
|
||
|
"0.9TILT\n",
|
||
|
"320.0K\n",
|
||
|
"400.0_350.0MB\n",
|
||
|
"750.0_700.0MB\n",
|
||
|
"345.0K\n",
|
||
|
"250.0_260.0K\n",
|
||
|
"300.0Ke\n",
|
||
|
"290.0Ke\n",
|
||
|
"950.0_900.0MB\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",
|
||
|
"335.0K\n",
|
||
|
"700.0_500.0MB\n",
|
||
|
"325.0_335.0K\n",
|
||
|
"300.0K\n",
|
||
|
"0.0MAXOMEGA\n",
|
||
|
"315.0_325.0K\n",
|
||
|
"325.0K\n",
|
||
|
"340.0Ke\n",
|
||
|
"300.0_250.0MB\n",
|
||
|
"1.5TILT\n",
|
||
|
"335.0_345.0K\n",
|
||
|
"315.0K\n",
|
||
|
"3.4TILT\n",
|
||
|
"330.0Ke\n",
|
||
|
"500.0_400.0MB\n",
|
||
|
"305.0K\n",
|
||
|
"285.0_295.0Ke\n",
|
||
|
"14.0TILT\n",
|
||
|
"325.0_335.0Ke\n",
|
||
|
"850.0_800.0MB\n",
|
||
|
"295.0Ke\n",
|
||
|
"305.0Ke\n",
|
||
|
"265.0_275.0K\n",
|
||
|
"700.0_650.0MB\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",
|
||
|
"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",
|
||
|
"1000.0_950.0MB\n",
|
||
|
"250.0_200.0MB\n",
|
||
|
"400.0_300.0MB\n",
|
||
|
"500.0_100.0MB\n",
|
||
|
"285.0Ke\n",
|
||
|
"290.0K\n",
|
||
|
"305.0_315.0K\n",
|
||
|
"285.0_295.0K\n",
|
||
|
"925.0_850.0MB\n",
|
||
|
"275.0Ke\n",
|
||
|
"300.0_200.0MB\n",
|
||
|
"260.0_270.0K\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",
|
||
|
"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",
|
||
|
"295.0K\n",
|
||
|
"4.3TILT\n",
|
||
|
"295.0_305.0K\n",
|
||
|
"330.0_340.0Ke\n",
|
||
|
"270.0K\n",
|
||
|
"280.0_290.0K\n",
|
||
|
"925.0_700.0MB\n",
|
||
|
"260.0K\n",
|
||
|
"10.0TILT\n",
|
||
|
"325.0Ke\n",
|
||
|
"285.0K\n",
|
||
|
"290.0_300.0Ke\n",
|
||
|
"7.5TILT\n",
|
||
|
"280.0Ke\n",
|
||
|
"500.0_450.0MB\n",
|
||
|
"305.0_315.0Ke\n",
|
||
|
"250.0K\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",
|
||
|
"19.5TILT\n",
|
||
|
"850.0_700.0MB\n",
|
||
|
"350.0K\n",
|
||
|
"265.0K\n",
|
||
|
"0.0_0.0SFC\n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"request.setParameters(\"T\")\n",
|
||
|
"availableLevels = DataAccessLayer.getAvailableLevels(request)\n",
|
||
|
"for level in availableLevels:\n",
|
||
|
" print(level)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"* **0.0SFC** is the Surface level\n",
|
||
|
"* **FHAG** stands for Fixed Height Above Ground (in meters)\n",
|
||
|
"* **NTAT** stands for Nominal Top of the ATmosphere\n",
|
||
|
"* **BL** stands for Boundary Layer, where **0.0_30.0BL** reads as *0-30 mb above ground level* \n",
|
||
|
"* **TROP** is the Tropopause level\n",
|
||
|
"\n",
|
||
|
"**request.setLevels()**\n",
|
||
|
"\n",
|
||
|
"For this example we will use Surface Temperature"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 16,
|
||
|
"metadata": {
|
||
|
"collapsed": true
|
||
|
},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"request.setLevels(\"2.0FHAG\")"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## DataAccessLayer.getAvailableTimes()\n",
|
||
|
"\n",
|
||
|
"* **getAvailableTimes(request, True)** will return an object of *run times* - formatted as `YYYY-MM-DD HH:MM:SS`\n",
|
||
|
"* **getAvailableTimes(request)** will return an object of all times - formatted as `YYYY-MM-DD HH:MM:SS (F:ff)`\n",
|
||
|
"* **getForecastRun(cycle, times)** will return a DataTime array for a single forecast cycle."
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 17,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"[<DataTime instance: 2018-02-11 19:00:00 (0) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (3) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (4) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (5) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (7) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (8) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (9) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (10) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (11) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (12) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (13) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (14) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (15) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (16) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (17) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (18) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (19) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (20) >,\n",
|
||
|
" <DataTime instance: 2018-02-11 19:00:00 (21) >]"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 17,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"cycles = DataAccessLayer.getAvailableTimes(request, True)\n",
|
||
|
"times = DataAccessLayer.getAvailableTimes(request)\n",
|
||
|
"fcstRun = DataAccessLayer.getForecastRun(cycles[-1], times)\n",
|
||
|
"list(fcstRun)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## DataAccessLayer.getGridData()\n",
|
||
|
"\n",
|
||
|
"Now that we have our `request` and DataTime `fcstRun` arrays ready, it's time to request the data array from EDEX."
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 18,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"('Time :', '2018-02-11 19:00:00 (21)')\n",
|
||
|
"('Model:', 'RAP13')\n",
|
||
|
"('Parm :', 'T')\n",
|
||
|
"('Unit :', 'K')\n",
|
||
|
"(337, 451)\n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"response = DataAccessLayer.getGridData(request, [fcstRun[-1]])\n",
|
||
|
"for grid in response:\n",
|
||
|
" data = grid.getRawData()\n",
|
||
|
" lons, lats = grid.getLatLonCoords()\n",
|
||
|
" print('Time :', str(grid.getDataTime()))\n",
|
||
|
"\n",
|
||
|
"print('Model:', str(grid.getLocationName()))\n",
|
||
|
"print('Parm :', str(grid.getParameter()))\n",
|
||
|
"print('Unit :', str(grid.getUnit()))\n",
|
||
|
"print(data.shape)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## Plotting with Matplotlib and Cartopy\n",
|
||
|
"\n",
|
||
|
"**1. pcolormesh**"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 19,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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\nDz744DWNcyPIsswjjzz
|
||
|
"text/plain": [
|
||
|
"<matplotlib.figure.Figure at 0x11ade22d0>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"%matplotlib inline\n",
|
||
|
"import matplotlib.pyplot as plt\n",
|
||
|
"import matplotlib\n",
|
||
|
"import cartopy.crs as ccrs\n",
|
||
|
"import cartopy.feature as cfeature\n",
|
||
|
"from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER\n",
|
||
|
"import numpy as np\n",
|
||
|
"import numpy.ma as ma\n",
|
||
|
"from scipy.io import loadmat\n",
|
||
|
"def make_map(bbox, projection=ccrs.PlateCarree()):\n",
|
||
|
" fig, ax = plt.subplots(figsize=(16, 9),\n",
|
||
|
" subplot_kw=dict(projection=projection))\n",
|
||
|
" ax.set_extent(bbox)\n",
|
||
|
" ax.coastlines(resolution='50m')\n",
|
||
|
" gl = ax.gridlines(draw_labels=True)\n",
|
||
|
" gl.xlabels_top = gl.ylabels_right = False\n",
|
||
|
" gl.xformatter = LONGITUDE_FORMATTER\n",
|
||
|
" gl.yformatter = LATITUDE_FORMATTER\n",
|
||
|
" return fig, ax\n",
|
||
|
"\n",
|
||
|
"cmap = plt.get_cmap('rainbow')\n",
|
||
|
"bbox = [lons.min(), lons.max(), lats.min(), lats.max()]\n",
|
||
|
"fig, ax = make_map(bbox=bbox)\n",
|
||
|
"cs = ax.pcolormesh(lons, lats, data, cmap=cmap)\n",
|
||
|
"cbar = fig.colorbar(cs, extend='both', shrink=0.5, orientation='horizontal')\n",
|
||
|
"cbar.set_label(str(grid.getLocationName()) +\" \" \\\n",
|
||
|
" + str(grid.getLevel()) + \" \" \\\n",
|
||
|
" + str(grid.getParameter()) \\\n",
|
||
|
" + \" (\" + str(grid.getUnit()) + \") \" \\\n",
|
||
|
" + \"valid \" + str(grid.getDataTime().getRefTime()))"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"**2. contourf**"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 20,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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\n7t27N8c6suuX8PBw+vX
|
||
|
"text/plain": [
|
||
|
"<matplotlib.figure.Figure at 0x10e4edc90>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"fig2, ax2 = make_map(bbox=bbox)\n",
|
||
|
"cs2 = ax2.contourf(lons, lats, data, 80, cmap=cmap,\n",
|
||
|
" vmin=data.min(), vmax=data.max())\n",
|
||
|
"cbar2 = fig2.colorbar(cs2, extend='both', shrink=0.5, orientation='horizontal')\n",
|
||
|
"cbar2.set_label(str(grid.getLocationName()) +\" \" \\\n",
|
||
|
" + str(grid.getLevel()) + \" \" \\\n",
|
||
|
" + str(grid.getParameter()) \\\n",
|
||
|
" + \" (\" + str(grid.getUnit()) + \") \" \\\n",
|
||
|
" + \"valid \" + str(grid.getDataTime().getRefTime()))"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"metadata": {
|
||
|
"kernelspec": {
|
||
|
"display_name": "Python 2",
|
||
|
"language": "python",
|
||
|
"name": "python2"
|
||
|
},
|
||
|
"language_info": {
|
||
|
"codemirror_mode": {
|
||
|
"name": "ipython",
|
||
|
"version": 2
|
||
|
},
|
||
|
"file_extension": ".py",
|
||
|
"mimetype": "text/x-python",
|
||
|
"name": "python",
|
||
|
"nbconvert_exporter": "python",
|
||
|
"pygments_lexer": "ipython2",
|
||
|
"version": "2.7.14"
|
||
|
}
|
||
|
},
|
||
|
"nbformat": 4,
|
||
|
"nbformat_minor": 1
|
||
|
}
|