2018-09-05 15:52:38 -06:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The EDEX modelsounding plugin creates 64-level vertical profiles from GFS and ETA (NAM) BUFR products distirubted over NOAAport. Paramters which are requestable are **pressure**, **temperature**, **specHum**, **uComp**, **vComp**, **omega**, **cldCvr**."
]
},
{
"cell_type": "code",
2018-09-06 12:12:07 -06:00
"execution_count": 1,
2018-09-05 15:52:38 -06:00
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"from awips.dataaccess import DataAccessLayer\n",
"import matplotlib.tri as mtri\n",
"import matplotlib.pyplot as plt\n",
"from mpl_toolkits.axes_grid1.inset_locator import inset_axes\n",
"from math import exp, log\n",
"import numpy as np\n",
"from metpy.calc import get_wind_components, lcl, dry_lapse, parcel_profile, dewpoint\n",
2018-09-06 12:12:07 -06:00
"from metpy.calc import wind_speed, wind_direction, thermo, vapor_pressure\n",
2018-09-05 15:52:38 -06:00
"from metpy.plots import SkewT, Hodograph\n",
"from metpy.units import units, concatenate\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
"request = DataAccessLayer.newDataRequest()\n",
"request.setDatatype(\"modelsounding\")\n",
"forecastModel = \"GFS\"\n",
"request.addIdentifier(\"reportType\", forecastModel)\n",
"request.setParameters(\"pressure\",\"temperature\",\"specHum\",\"uComp\",\"vComp\",\"omega\",\"cldCvr\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Available Locations"
]
},
{
"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
"['',\n",
" '1V4',\n",
" '3J2',\n",
" '4BL',\n",
" '4BQ',\n",
" '4HV',\n",
" '4OM',\n",
" '5AF',\n",
" '5AG',\n",
" '5SZ',\n",
" '6RO',\n",
" '8V7',\n",
" '9B6',\n",
" 'A#2',\n",
" 'A#3',\n",
" 'A#4',\n",
" 'A#5',\n",
" 'A#6',\n",
" 'A#7',\n",
" 'A#8',\n",
" 'A#9',\n",
" 'A#A',\n",
" 'A#B',\n",
" 'ABL',\n",
" 'ADM',\n",
" 'AFA',\n",
" 'AGR',\n",
" 'AHN',\n",
" 'AIA',\n",
" 'AIH',\n",
" 'AJO',\n",
" 'ANJ',\n",
" 'APX',\n",
" 'AQQ',\n",
" 'ATH',\n",
" 'ATL1',\n",
" 'ATL2',\n",
" 'ATL3',\n",
" 'ATL4',\n",
" 'ATLH',\n",
" 'AWH',\n",
" 'AWR',\n",
" 'B#1',\n",
" 'B#2',\n",
" 'B#3',\n",
" 'B#4',\n",
" 'B#5',\n",
" 'B#6',\n",
" 'B#7',\n",
" 'B#8',\n",
" 'B#9',\n",
" 'B#A',\n",
" 'B#B',\n",
" 'B#C',\n",
" 'B#D',\n",
" 'B#E',\n",
" 'B#F',\n",
" 'B#G',\n",
" 'B#H',\n",
" 'B#J',\n",
" 'B#K',\n",
" 'B#L',\n",
" 'B#M',\n",
" 'B#N',\n",
" 'B#O',\n",
" 'B#P',\n",
" 'B#Q',\n",
" 'B#S',\n",
" 'BAB',\n",
" 'BDG',\n",
" 'BDP',\n",
" 'BFL',\n",
" 'BGTL',\n",
" 'BH1',\n",
" 'BH2',\n",
" 'BH3',\n",
" 'BH4',\n",
" 'BH5',\n",
" 'BHK',\n",
" 'BID',\n",
" 'BIR',\n",
" 'BLS',\n",
" 'BLU',\n",
" 'BMX',\n",
" 'BNA',\n",
" 'BOD',\n",
" 'BRA',\n",
" 'BTL',\n",
" 'BVR',\n",
" 'C01',\n",
" 'C02',\n",
" 'C03',\n",
" 'C04',\n",
" 'C06',\n",
" 'C07',\n",
" 'C08',\n",
" 'C09',\n",
" 'C10',\n",
" 'C11',\n",
" 'C12',\n",
" 'C13',\n",
" 'C14',\n",
" 'C17',\n",
" 'C18',\n",
" 'C19',\n",
" 'C20',\n",
" 'C21',\n",
" 'C22',\n",
" 'C23',\n",
" 'C24',\n",
" 'C25',\n",
" 'C27',\n",
" 'C28',\n",
" 'C30',\n",
" 'C31',\n",
" 'C32',\n",
" 'C33',\n",
" 'C34',\n",
" 'C35',\n",
" 'C36',\n",
" 'C7H',\n",
" 'CAI',\n",
" 'CAN',\n",
" 'CBE',\n",
" 'CBN',\n",
" 'CHE',\n",
" 'CKN',\n",
" 'CLD',\n",
" 'CLE',\n",
" 'CLN',\n",
" 'COL1',\n",
" 'COL2',\n",
" 'COL3',\n",
" 'COL4',\n",
" 'COT',\n",
" 'CQV',\n",
" 'CRL',\n",
" 'CRR',\n",
" 'CTY',\n",
" 'CVM',\n",
" 'CVS',\n",
" 'CWEU',\n",
" 'CWFN',\n",
" 'CWKX',\n",
" 'CWLB',\n",
" 'CWLO',\n",
" 'CWLT',\n",
" 'CWLW',\n",
" 'CWMW',\n",
" 'CWOS',\n",
" 'CWPH',\n",
" 'CWQG',\n",
" 'CWSA',\n",
" 'CWSE',\n",
" 'CWZB',\n",
" 'CWZC',\n",
" 'CWZV',\n",
" 'CYAH',\n",
" 'CYAW',\n",
" 'CYBK',\n",
" 'CYBU',\n",
" 'CYCB',\n",
" 'CYCG',\n",
" 'CYCX',\n",
" 'CYDA',\n",
" 'CYEG',\n",
" 'CYEV',\n",
" 'CYFB',\n",
" 'CYFO',\n",
" 'CYFS',\n",
" 'CYGQ',\n",
" 'CYHM',\n",
" 'CYHZ',\n",
" 'CYJT',\n",
" 'CYLH',\n",
" 'CYLJ',\n",
" 'CYMD',\n",
" 'CYMO',\n",
" 'CYMT',\n",
" 'CYMX',\n",
" 'CYOC',\n",
" 'CYOW',\n",
" 'CYPA',\n",
" 'CYPE',\n",
" 'CYPL',\n",
" 'CYPQ',\n",
" 'CYQA',\n",
" 'CYQD',\n",
" 'CYQG',\n",
" 'CYQH',\n",
" 'CYQI',\n",
" 'CYQK',\n",
" 'CYQQ',\n",
" 'CYQR',\n",
" 'CYQT',\n",
" 'CYQX',\n",
" 'CYQY',\n",
" 'CYRB',\n",
" 'CYSM',\n",
" 'CYSY',\n",
" 'CYTH',\n",
" 'CYTL',\n",
" 'CYTS',\n",
" 'CYUL',\n",
" 'CYUX',\n",
" 'CYVO',\n",
" 'CYVP',\n",
" 'CYVQ',\n",
" 'CYVR',\n",
" 'CYVV',\n",
" 'CYWA',\n",
" 'CYWG',\n",
" 'CYWO',\n",
" 'CYXC',\n",
" 'CYXE',\n",
" 'CYXH',\n",
" 'CYXS',\n",
" 'CYXU',\n",
" 'CYXX',\n",
" 'CYXY',\n",
" 'CYXZ',\n",
" 'CYYB',\n",
" 'CYYC',\n",
" 'CYYE',\n",
" 'CYYJ',\n",
" 'CYYQ',\n",
" 'CYYR',\n",
" 'CYYT',\n",
" 'CYYZ',\n",
" 'CYZF',\n",
" 'CYZS',\n",
" 'CYZT',\n",
" 'CYZV',\n",
" 'DEN',\n",
" 'DOV',\n",
" 'DPG',\n",
" 'DSC',\n",
" 'DSD',\n",
" 'DTX',\n",
" 'DVN',\n",
" 'DYS',\n",
" 'E28',\n",
" 'E74',\n",
" 'EAT',\n",
" 'EAX',\n",
" 'EDW',\n",
" 'EFL',\n",
" 'EMP',\n",
" 'END',\n",
" 'ENL',\n",
" 'ESTC',\n",
" 'FCS',\n",
" 'FDR',\n",
" 'FFC',\n",
" 'FHU',\n",
" 'FLG',\n",
" 'FLP',\n",
" 'FPK',\n",
" 'FRI',\n",
" 'FSI',\n",
" 'FTR',\n",
" 'FWD',\n",
" 'G#1',\n",
" 'G#2',\n",
" 'G#3',\n",
" 'G#4',\n",
" 'G#5',\n",
" 'G#6',\n",
" 'G#7',\n",
" 'G#8',\n",
" 'G#9',\n",
" 'G#A',\n",
" 'G#B',\n",
" 'G#C',\n",
" 'G#D',\n",
" 'G#E',\n",
" 'G#F',\n",
" 'G#G',\n",
" 'G001',\n",
" 'G003',\n",
" 'G004',\n",
" 'G005',\n",
" 'G007',\n",
" 'G009',\n",
" 'GDP',\n",
" 'GDV',\n",
" 'GLRY',\n",
" 'GMX1',\n",
" 'GNB',\n",
" 'GNC',\n",
" 'GRF',\n",
" 'GTB',\n",
" 'GTP',\n",
" 'GVL',\n",
" 'GVS',\n",
" 'GYX',\n",
" 'H02',\n",
" 'HAY',\n",
" 'HGR',\n",
" 'HMN',\n",
" 'HOM',\n",
" 'HOO',\n",
" 'HSI',\n",
" 'HYR',\n",
" 'HYS',\n",
" 'ICC',\n",
" 'IGM',\n",
" 'ILN',\n",
" 'ILS',\n",
" 'ILX',\n",
" 'IMT',\n",
" 'INK',\n",
" 'IPX',\n",
" 'JACK',\n",
" 'JDN',\n",
" 'K40B',\n",
" 'K9V9',\n",
" 'KABE',\n",
" 'KABI',\n",
" 'KABQ',\n",
" 'KABR',\n",
" 'KABY',\n",
" 'KACK',\n",
" 'KACT',\n",
" 'KACV',\n",
" 'KACY',\n",
" 'KAGC',\n",
" 'KAGS',\n",
" 'KAHN',\n",
" 'KAK',\n",
" 'KALB',\n",
" 'KALI',\n",
" 'KALO',\n",
" 'KALS',\n",
" 'KALW',\n",
" 'KAMA',\n",
" 'KAN',\n",
" 'KANB',\n",
" 'KAND',\n",
" 'KAOO',\n",
" 'KAPA',\n",
" 'KAPN',\n",
" 'KART',\n",
" 'KASE',\n",
" 'KAST',\n",
" 'KATL',\n",
" 'KATY',\n",
" 'KAUG',\n",
" 'KAUS',\n",
" 'KAUW',\n",
" 'KAVL',\n",
" 'KAVP',\n",
" 'KAXN',\n",
" 'KAYS',\n",
" 'KAZO',\n",
" 'KBAF',\n",
" 'KBCE',\n",
" 'KBDE',\n",
" 'KBDL',\n",
" 'KBDR',\n",
" 'KBED',\n",
" 'KBFD',\n",
" 'KBFF',\n",
" 'KBFI',\n",
" 'KBFL',\n",
" 'KBGM',\n",
" 'KBGR',\n",
" 'KBHB',\n",
" 'KBHM',\n",
" 'KBIH',\n",
" 'KBIL',\n",
" 'KBIS',\n",
" 'KBJC',\n",
" 'KBJI',\n",
" 'KBKE',\n",
" 'KBKW',\n",
" 'KBLF',\n",
" 'KBLH',\n",
" 'KBLI',\n",
" 'KBML',\n",
" 'KBNA',\n",
" 'KBNO',\n",
" 'KBNV',\n",
" 'KBOI',\n",
" 'KBOS',\n",
" 'KBPT',\n",
" 'KBQK',\n",
" 'KBRD',\n",
" 'KBRL',\n",
" 'KBRO',\n",
" 'KBTL',\n",
" 'KBTM',\n",
" 'KBTR',\n",
" 'KBTV',\n",
" 'KBUF',\n",
" 'KBUR',\n",
" 'KBVI',\n",
" 'KBVX',\n",
" 'KBVY',\n",
" 'KBWG',\n",
" 'KBWI',\n",
" 'KBYI',\n",
" 'KBZN',\n",
" 'KCAE',\n",
" 'KCAK',\n",
" 'KCAR',\n",
" 'KCDC',\n",
" 'KCDR',\n",
" 'KCDS',\n",
" 'KCEC',\n",
" 'KCEF',\n",
" 'KCGI',\n",
" 'KCGX',\n",
" 'KCHA',\n",
" 'KCHH',\n",
" 'KCHO',\n",
" 'KCHS',\n",
" 'KCID',\n",
" 'KCIU',\n",
" 'KCKB',\n",
" 'KCKL',\n",
" 'KCLE',\n",
" 'KCLL',\n",
" 'KCLM',\n",
" 'KCLT',\n",
" 'KCMH',\n",
" 'KCMI',\n",
" 'KCMX',\n",
" 'KCNM',\n",
" 'KCNU',\n",
" 'KCOD',\n",
" 'KCOE',\n",
" 'KCON',\n",
" 'KCOS',\n",
" 'KCOU',\n",
" 'KCPR',\n",
" 'KCRE',\n",
" 'KCRP',\n",
" 'KCRQ',\n",
" 'KCRW',\n",
" 'KCSG',\n",
" 'KCSV',\n",
" 'KCTB',\n",
" 'KCVG',\n",
" 'KCWA',\n",
" 'KCYS',\n",
" 'KDAB',\n",
" 'KDAG',\n",
" 'KDAL',\n",
" 'KDAN',\n",
" 'KDAY',\n",
" 'KDBQ',\n",
" 'KDCA',\n",
" 'KDDC',\n",
" 'KDEC',\n",
" 'KDEN',\n",
" 'KDET',\n",
" 'KDFW',\n",
" 'KDHN',\n",
" 'KDHT',\n",
" 'KDIK',\n",
" 'KDLH',\n",
" 'KDLS',\n",
" 'KDMN',\n",
" 'KDPA',\n",
" 'KDRA',\n",
" 'KDRO',\n",
" 'KDRT',\n",
" 'KDSM',\n",
" 'KDTW',\n",
" 'KDUG',\n",
" 'KDUJ',\n",
" 'KEAT',\n",
" 'KEAU',\n",
" 'KECG',\n",
" 'KEED',\n",
" 'KEGE',\n",
" 'KEKN',\n",
" 'KEKO',\n",
" 'KEL',\n",
" 'KELD',\n",
" 'KELM',\n",
" 'KELO',\n",
" 'KELP',\n",
" 'KELY',\n",
" 'KENV',\n",
" 'KEPH',\n",
" 'KEPO',\n",
" 'KEPZ',\n",
" 'KERI',\n",
" 'KESF',\n",
" 'KEUG',\n",
" 'KEVV',\n",
" 'KEWB',\n",
" 'KEWN',\n",
" 'KEWR',\n",
" 'KEYW',\n",
" 'KFAM',\n",
" 'KFAR',\n",
" 'KFAT',\n",
" 'KFAY',\n",
" 'KFCA',\n",
" 'KFDY',\n",
" 'KFKL',\n",
" 'KFLG',\n",
" 'KFLL',\n",
" 'KFLO',\n",
" 'KFMN',\n",
" 'KFMY',\n",
" 'KFNT',\n",
" 'KFOE',\n",
" 'KFPR',\n",
" 'KFRM',\n",
" 'KFSD',\n",
" 'KFSM',\n",
" 'KFTW',\n",
" 'KFTY',\n",
" 'KFVE',\n",
" 'KFVX',\n",
" 'KFWA',\n",
" 'KFXE',\n",
" 'KFYV',\n",
" 'KGAG',\n",
" 'KGCC',\n",
" 'KGCK',\n",
" 'KGCN',\n",
" 'KGEG',\n",
" 'KGFK',\n",
" 'KGFL',\n",
" 'KGGG',\n",
" 'KGGW',\n",
" 'KGJT',\n",
" 'KGLD',\n",
" 'KGLH',\n",
" 'KGLS',\n",
" 'KGMU',\n",
" 'KGNR',\n",
" 'KGNV',\n",
" 'KGON',\n",
" 'KGPT',\n",
" 'KGRB',\n",
" 'KGRI',\n",
" 'KGRR',\n",
" 'KGSO',\n",
" 'KGSP',\n",
" 'KGTF',\n",
" 'KGUC',\n",
" 'KGUP',\n",
" 'KGWO',\n",
" 'KGYY',\n",
" 'KGZH',\n",
" 'KHAT',\n",
" 'KHBR',\n",
" 'KHDN',\n",
" 'KHIB',\n",
" 'KHIO',\n",
" 'KHKY',\n",
" 'KHLG',\n",
" 'KHLN',\n",
" 'KHOB',\n",
" 'KHON',\n",
" 'KHOT',\n",
" 'KHOU',\n",
" 'KHPN',\n",
" 'KHQM',\n",
" 'KHRL',\n",
" 'KHRO',\n",
" 'KHSV',\n",
" 'KHTH',\n",
" 'KHTS',\n",
" 'KHUF',\n",
" 'KHUL',\n",
" 'KHUT',\n",
" 'KHVN',\n",
" 'KHVR',\n",
" 'KHYA',\n",
" 'KIAD',\n",
" 'KIAG',\n",
" 'KIAH',\n",
" 'KICT',\n",
" 'KIDA',\n",
" 'KIL',\n",
" 'KILG',\n",
" 'KILM',\n",
" 'KIND',\n",
" 'KINK',\n",
" 'KINL',\n",
" 'KINT',\n",
" 'KINW',\n",
" 'KIPL',\n",
" 'KIPT',\n",
" 'KISN',\n",
" 'KISP',\n",
" 'KITH',\n",
" 'KIWD',\n",
" 'KJAC',\n",
" 'KJAN',\n",
" 'KJAX',\n",
" 'KJBR',\n",
" 'KJFK',\n",
" 'KJHW',\n",
" 'KJKL',\n",
" 'KJLN',\n",
" 'KJMS',\n",
" 'KJST',\n",
" 'KJXN',\n",
" 'KKL',\n",
" 'KLAF',\n",
" 'KLAN',\n",
" 'KLAR',\n",
" 'KLAS',\n",
" 'KLAX',\n",
" 'KLBB',\n",
" 'KLBE',\n",
" 'KLBF',\n",
" 'KLCB',\n",
" 'KLCH',\n",
" 'KLEB',\n",
" 'KLEX',\n",
" 'KLFK',\n",
" 'KLFT',\n",
" 'KLGA',\n",
" 'KLGB',\n",
" 'KLGU',\n",
" 'KLIT',\n",
" 'KLMT',\n",
" 'KLND',\n",
" 'KLNK',\n",
" 'KLOL',\n",
" 'KLOZ',\n",
" 'KLRD',\n",
" 'KLSE',\n",
" 'KLUK',\n",
" 'KLVS',\n",
" 'KLWB',\n",
" 'KLWM',\n",
" 'KLWS',\n",
" 'KLWT',\n",
" 'KLYH',\n",
" 'KLZK',\n",
" 'KMAF',\n",
" 'KMBS',\n",
" 'KMCB',\n",
" 'KMCE',\n",
" 'KMCI',\n",
" 'KMCN',\n",
" 'KMCO',\n",
" 'KMCW',\n",
" 'KMDN',\n",
" 'KMDT',\n",
" 'KMDW',\n",
" 'KMEI',\n",
" 'KMEM',\n",
" 'KMFD',\n",
" 'KMFE',\n",
" 'KMFR',\n",
" 'KMGM',\n",
" 'KMGW',\n",
" 'KMHE',\n",
" 'KMHK',\n",
" 'KMHT',\n",
" 'KMHX',\n",
" 'KMIA',\n",
" 'KMIV',\n",
" 'KMKC',\n",
" 'KMKE',\n",
" 'KMKG',\n",
" 'KMKL',\n",
" 'KMLB',\n",
" 'KMLC',\n",
" 'KMLI',\n",
" 'KMLS',\n",
" 'KMLT',\n",
" 'KMLU',\n",
" 'KMMU',\n",
" 'KMOB',\n",
" 'KMOT',\n",
" 'KMPV',\n",
" 'KMQT',\n",
" 'KMRB',\n",
" 'KMRY',\n",
" 'KMSL',\n",
" 'KMSN',\n",
" 'KMSO',\n",
" 'KMSP',\n",
" 'KMSS',\n",
" 'KMSY',\n",
" 'KMTJ',\n",
" 'KMTN',\n",
" 'KMWH',\n",
" 'KMYR',\n",
" 'KNA',\n",
" 'KNEW',\n",
" 'KNL',\n",
" 'KNSI',\n",
" 'KOAK',\n",
" 'KOFK',\n",
" 'KOGD',\n",
" 'KOKC',\n",
" 'KOLM',\n",
" 'KOMA',\n",
" 'KONT',\n",
" 'KOPF',\n",
" 'KOQU',\n",
" 'KORD',\n",
" 'KORF',\n",
" 'KORH',\n",
" 'KOSH',\n",
" 'KOTH',\n",
" 'KOTM',\n",
" 'KP11',\n",
" 'KP38',\n",
" 'KPAE',\n",
" 'KPAH',\n",
" 'KPBF',\n",
" 'KPBI',\n",
" 'KPDK',\n",
" 'KPDT',\n",
" 'KPDX',\n",
" 'KPFN',\n",
" 'KPGA',\n",
" 'KPHF',\n",
" 'KPHL',\n",
" 'KPHN',\n",
" 'KPHX',\n",
" 'KPIA',\n",
" 'KPIB',\n",
" 'KPIE',\n",
" 'KPIH',\n",
" 'KPIR',\n",
" 'KPIT',\n",
" 'KPKB',\n",
" 'KPLN',\n",
" 'KPMD',\n",
" 'KPNC',\n",
" 'KPNE',\n",
" 'KPNS',\n",
" 'KPOU',\n",
" 'KPQI',\n",
" 'KPRB',\n",
" 'KPRC',\n",
" 'KPSC',\n",
" 'KPSM',\n",
" 'KPSP',\n",
" 'KPTK',\n",
" 'KPUB',\n",
" 'KPVD',\n",
" 'KPVU',\n",
" 'KPWM',\n",
" 'KRAD',\n",
" 'KRAP',\n",
" 'KRBL',\n",
" 'KRDD',\n",
" 'KRDG',\n",
" 'KRDM',\n",
" 'KRDU',\n",
" 'KRFD',\n",
" 'KRIC',\n",
" 'KRIW',\n",
" 'KRKD',\n",
" 'KRKS',\n",
" 'KRNO',\n",
" 'KRNT',\n",
" 'KROA',\n",
" 'KROC',\n",
" 'KROW',\n",
" 'KRSL',\n",
" 'KRST',\n",
" 'KRSW',\n",
" 'KRUM',\n",
" 'KRWF',\n",
" 'KRWI',\n",
" 'KRWL',\n",
" 'KSAC',\n",
" 'KSAF',\n",
" 'KSAN',\n",
" 'KSAT',\n",
" 'KSAV',\n",
" 'KSBA',\n",
" 'KSBN',\n",
" 'KSBP',\n",
" 'KSBY',\n",
" 'KSCH',\n",
" 'KSCK',\n",
" 'KSDF',\n",
" 'KSDM',\n",
" 'KSDY',\n",
" 'KSEA',\n",
" 'KSEP',\n",
" 'KSFF',\n",
" 'KSFO',\n",
" 'KSGF',\n",
" 'KSGU',\n",
" 'KSHR',\n",
" 'KSHV',\n",
" 'KSJC',\n",
" 'KSJT',\n",
" 'KSLC',\n",
" 'KSLE',\n",
" 'KSLK',\n",
" 'KSLN',\n",
" 'KSMF',\n",
" 'KSMX',\n",
" 'KSNA',\n",
" 'KSNS',\n",
" 'KSPI',\n",
" 'KSPS',\n",
" 'KSRQ',\n",
" 'KSSI',\n",
" 'KSTJ',\n",
" 'KSTL',\n",
" 'KSTP',\n",
" 'KSTS',\n",
" 'KSUN',\n",
" 'KSUS',\n",
" 'KSUX',\n",
" 'KSVE',\n",
" 'KSWF',\n",
" 'KSYR',\n",
" 'KTCC',\n",
" 'KTCL',\n",
" 'KTCS',\n",
" 'KTEB',\n",
" 'KTIW',\n",
" 'KTLH',\n",
" 'KTMB',\n",
" 'KTOL',\n",
" 'KTOP',\n",
" 'KTPA',\n",
" 'KTPH',\n",
" 'KTRI',\n",
" 'KTRK',\n",
" 'KTRM',\n",
" 'KTTD',\n",
" 'KTTN',\n",
" 'KTUL',\n",
" 'KTUP',\n",
" 'KTUS',\n",
" 'KTVC',\n",
" 'KTVL',\n",
" 'KTWF',\n",
" 'KTXK',\n",
" 'KTYR',\n",
" 'KTYS',\n",
" 'KUCA',\n",
" 'KUIN',\n",
" 'KUKI',\n",
" 'KUNV',\n",
" 'KVCT',\n",
" 'KVEL',\n",
" 'KVLD',\n",
" 'KVNY',\n",
" 'KVRB',\n",
" 'KWJF',\n",
" 'KWMC',\n",
" 'KWRL',\n",
" 'KWYS',\n",
" 'KY22',\n",
" 'KY26',\n",
" 'KYKM',\n",
" 'KYKN',\n",
" 'KYNG',\n",
" 'KYUM',\n",
" 'KZZV',\n",
" 'LAA',\n",
" 'LAP',\n",
" 'LBY',\n",
" 'LDL',\n",
" 'LHX',\n",
" 'LIC',\n",
" 'LOR',\n",
" 'LRR',\n",
" 'LSF',\n",
" 'LUS',\n",
" 'LVM',\n",
" 'LW1',\n",
" 'MAC',\n",
" 'MAX',\n",
" 'MAZ',\n",
" 'MDPC',\n",
" 'MDPP',\n",
" 'MDSD',\n",
" 'MDST',\n",
" 'MGFL',\n",
" 'MGGT',\n",
" 'MGHT',\n",
" 'MGPB',\n",
" 'MGSJ',\n",
" 'MHAM',\n",
" 'MHCA',\n",
" 'MHCH',\n",
" 'MHLC',\n",
" 'MHLE',\n",
" 'MHLM',\n",
" 'MHNJ',\n",
" 'MHPL',\n",
" 'MHRO',\n",
" 'MHSR',\n",
" 'MHTE',\n",
" 'MHTG',\n",
" 'MHYR',\n",
" 'MIB',\n",
" 'MIE',\n",
" 'MKJP',\n",
" 'MKJS',\n",
" 'MLD',\n",
" 'MMAA',\n",
" 'MMAS',\n",
" 'MMBT',\n",
" 'MMCE',\n",
" 'MMCL',\n",
" 'MMCN',\n",
" 'MMCS',\n",
" 'MMCU',\n",
" 'MMCV',\n",
" 'MMCZ',\n",
" 'MMDO',\n",
" 'MMGL',\n",
" 'MMGM',\n",
" 'MMHO',\n",
" 'MMLP',\n",
" 'MMMA',\n",
" 'MMMD',\n",
" 'MMML',\n",
" 'MMMM',\n",
" 'MMMT',\n",
" 'MMMX',\n",
" 'MMMY',\n",
" 'MMMZ',\n",
" 'MMNL',\n",
" 'MMPR',\n",
" 'MMRX',\n",
" 'MMSD',\n",
" 'MMSP',\n",
" 'MMTC',\n",
" 'MMTJ',\n",
" 'MMTM',\n",
" 'MMTO',\n",
" 'MMTP',\n",
" 'MMUN',\n",
" 'MMVR',\n",
" 'MMZC',\n",
" 'MMZH',\n",
" 'MMZO',\n",
" 'MNMG',\n",
" 'MNPC',\n",
" 'MOR',\n",
" 'MPBO',\n",
" 'MPCH',\n",
" 'MPDA',\n",
" 'MPMG',\n",
" 'MPSA',\n",
" 'MPTO',\n",
" 'MPX',\n",
" 'MRCH',\n",
" 'MRF',\n",
" 'MRLB',\n",
" 'MRLM',\n",
" 'MROC',\n",
" 'MRPV',\n",
" 'MRS',\n",
" 'MSAC',\n",
" 'MSLP',\n",
" 'MSSS',\n",
" 'MTCH',\n",
" 'MTL',\n",
" 'MTPP',\n",
" 'MTV',\n",
" 'MTY',\n",
" 'MUBA',\n",
" 'MUBY',\n",
" 'MUCA',\n",
" 'MUCL',\n",
" 'MUCM',\n",
" 'MUCU',\n",
" 'MUGM',\n",
" 'MUGT',\n",
" 'MUHA',\n",
" 'MUMO',\n",
" 'MUMZ',\n",
" 'MUNG',\n",
" 'MUVR',\n",
" 'MUVT',\n",
" 'MWCR',\n",
" 'MYBS',\n",
" 'MYEG',\n",
" 'MYGF',\n",
" 'MYGW',\n",
" 'MYL',\n",
" 'MYNN',\n",
" 'MZBZ',\n",
" 'MZT',\n",
" 'NCK',\n",
" 'NGX',\n",
" 'NHK',\n",
" 'NID',\n",
" 'NKX',\n",
" 'NOA',\n",
" 'NRU',\n",
" 'NTD',\n",
2018-10-05 17:09:43 -06:00
" ...]"
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": [
"locations = DataAccessLayer.getAvailableLocationNames(request)\n",
"locations.sort()\n",
"list(locations)"
]
},
{
"cell_type": "code",
2018-09-06 12:12:07 -06:00
"execution_count": 3,
"metadata": {},
2018-09-05 15:52:38 -06:00
"outputs": [],
"source": [
"request.setLocationNames(\"KFRM\")\n",
"cycles = DataAccessLayer.getAvailableTimes(request, True)\n",
"times = DataAccessLayer.getAvailableTimes(request)\n",
"\n",
"try:\n",
" fcstRun = DataAccessLayer.getForecastRun(cycles[-1], times)\n",
" list(fcstRun)\n",
" response = DataAccessLayer.getGeometryData(request,[fcstRun[0]])\n",
"except:\n",
" print('No times available')\n",
" exit"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Model Sounding Parameters\n",
"\n",
"Construct arrays for each parameter to plot (temperature, pressure, moisutre (spec. humidity), wind components, and cloud cover)"
]
},
{
"cell_type": "code",
2018-10-09 13:39:16 -06:00
"execution_count": 4,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2018-10-09 13:39:16 -06:00
"parms = ['temperature', 'pressure', 'vComp', 'uComp', 'cldCvr', 'specHum', 'omega']\n",
"site = KFRM\n",
2018-09-05 15:52:38 -06:00
"geom = POINT (-94.41999816894531 43.65000152587891)\n",
2018-10-09 13:39:16 -06:00
"datetime = 2018-10-09 12:00:00\n",
"reftime = Oct 09 18 12:00:00 GMT\n",
2018-09-06 12:12:07 -06:00
"fcstHour = 0\n",
2018-10-09 13:39:16 -06:00
"period = (Oct 09 18 12:00:00 , Oct 09 18 12:00:00 )\n"
2018-09-05 15:52:38 -06:00
]
}
],
"source": [
"tmp,prs,sh = np.array([]),np.array([]),np.array([])\n",
"uc,vc,om,cld = np.array([]),np.array([]),np.array([]),np.array([])\n",
"\n",
"for ob in response:\n",
2018-10-05 17:09:43 -06:00
" tmp = np.append(tmp,ob.getNumber(\"temperature\"))\n",
" prs = np.append(prs,ob.getNumber(\"pressure\"))\n",
" sh = np.append(sh,ob.getNumber(\"specHum\"))\n",
" uc = np.append(uc,ob.getNumber(\"uComp\"))\n",
" vc = np.append(vc,ob.getNumber(\"vComp\"))\n",
" om = np.append(om,ob.getNumber(\"omega\"))\n",
" cld = np.append(cld,ob.getNumber(\"cldCvr\"))\n",
2018-09-05 15:52:38 -06:00
"\n",
"print(\"parms = \" + str(ob.getParameters()))\n",
"print(\"site = \" + str(ob.getLocationName()))\n",
"print(\"geom = \" + str(ob.getGeometry()))\n",
"print(\"datetime = \" + str(ob.getDataTime()))\n",
"print(\"reftime = \" + str(ob.getDataTime().getRefTime()))\n",
"print(\"fcstHour = \" + str(ob.getDataTime().getFcstTime()))\n",
2018-09-06 12:12:07 -06:00
"print(\"period = \" + str(ob.getDataTime().getValidPeriod()))"
2018-09-05 15:52:38 -06:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Calculating Dewpoint from Specific Humidity\n",
"\n",
"Because the modelsounding plugin does not return dewpoint values, we must calculate the profile ourselves. Here are three examples of dewpoint calculated from specific humidity, including a manual calculation following NCEP AWIPS/NSHARP. \n",
"\n",
"**1) MetPy calculated mixing ratio and vapor pressure**"
]
},
{
"cell_type": "code",
2018-10-09 13:39:16 -06:00
"execution_count": 5,
2018-09-06 12:12:07 -06:00
"metadata": {},
2018-09-05 15:52:38 -06:00
"outputs": [],
"source": [
"t = (tmp-273.15) * units.degC\n",
"p = prs/100 * units.mbar\n",
"\n",
"u,v = uc*1.94384,vc*1.94384 # m/s to knots\n",
2018-09-06 12:12:07 -06:00
"spd = wind_speed(u, v) * units.knots\n",
"dir = wind_direction(u, v) * units.deg"
2018-09-05 15:52:38 -06:00
]
},
{
"cell_type": "code",
2018-10-09 13:39:16 -06:00
"execution_count": 6,
2018-09-06 12:12:07 -06:00
"metadata": {},
2018-10-09 13:39:16 -06:00
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/mjames/miniconda3/envs/python3-awips/lib/python3.6/site-packages/metpy/calc/thermo.py:690: RuntimeWarning: divide by zero encountered in log\n",
" val = np.log(e / sat_pressure_0c)\n",
"/Users/mjames/miniconda3/envs/python3-awips/lib/python3.6/site-packages/pint/quantity.py:1403: RuntimeWarning: divide by zero encountered in log\n",
" out = uf(*mobjs)\n",
"/Users/mjames/miniconda3/envs/python3-awips/lib/python3.6/site-packages/pint/quantity.py:802: RuntimeWarning: invalid value encountered in true_divide\n",
" magnitude = magnitude_op(new_self._magnitude, other._magnitude)\n"
]
}
],
2018-09-05 15:52:38 -06:00
"source": [
"rmix = (sh/(1-sh)) *1000 * units('g/kg')\n",
"e = vapor_pressure(p, rmix)\n",
"td = dewpoint(e)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**2) metpy calculated assuming spec. humidity = mixing ratio**"
]
},
{
"cell_type": "code",
2018-10-09 13:39:16 -06:00
"execution_count": 7,
2018-09-06 12:12:07 -06:00
"metadata": {},
2018-10-05 17:09:43 -06:00
"outputs": [],
2018-09-05 15:52:38 -06:00
"source": [
"td2 = dewpoint(vapor_pressure(p, sh))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**3) NCEP AWIPS soundingrequest plugin**\n",
"\n",
"based on GEMPAK/NSHARP, from https://github.com/Unidata/awips2-ncep/blob/unidata_16.2.2/edex/gov.noaa.nws.ncep.edex.plugin.soundingrequest/src/gov/noaa/nws/ncep/edex/plugin/soundingrequest/handler/MergeSounding.java#L1783"
]
},
{
"cell_type": "code",
2018-10-09 13:39:16 -06:00
"execution_count": 8,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
2018-10-05 17:09:43 -06:00
"/Users/mjames/miniconda3/envs/python3-awips/lib/python3.6/site-packages/ipykernel_launcher.py:8: RuntimeWarning: divide by zero encountered in log\n",
2018-09-05 15:52:38 -06:00
" \n",
2018-10-05 17:09:43 -06:00
"/Users/mjames/miniconda3/envs/python3-awips/lib/python3.6/site-packages/ipykernel_launcher.py:8: RuntimeWarning: invalid value encountered in true_divide\n",
2018-09-05 15:52:38 -06:00
" \n"
]
}
],
"source": [
"# new arrays\n",
"ntmp = tmp\n",
"\n",
"# where p=pressure(pa), T=temp(C), T0=reference temp(273.16)\n",
"rh = 0.263*prs*sh / (np.exp(17.67*ntmp/(ntmp+273.15-29.65)))\n",
"vaps = 6.112 * np.exp((17.67 * ntmp) / (ntmp + 243.5))\n",
"vapr = rh * vaps / 100\n",
"dwpc = np.array(243.5 * (np.log(6.112) - np.log(vapr)) / (np.log(vapr) - np.log(6.112) - 17.67)) * units.degC"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## MetPy SkewT and Hodograph"
]
},
{
"cell_type": "code",
2018-10-09 13:39:16 -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 864x1008 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",
"\n",
"plt.rcParams['figure.figsize'] = (12, 14)\n",
"\n",
"# Create a skewT plot\n",
"skew = SkewT()\n",
"\n",
"# Plot the data\n",
"skew.plot(p, t, 'r', linewidth=2)\n",
"skew.plot(p, td, 'b', linewidth=2)\n",
"skew.plot(p, td2, 'y')\n",
"skew.plot(p, dwpc, 'g', linewidth=2)\n",
"\n",
"skew.plot_barbs(p, u, v)\n",
"skew.ax.set_ylim(1000, 100)\n",
"skew.ax.set_xlim(-40, 60)\n",
"\n",
2018-09-06 12:12:07 -06:00
"plt.title( forecastModel + \" \" \\\n",
2018-10-09 13:39:16 -06:00
" + ob.getLocationName() \\\n",
2018-09-06 12:12:07 -06:00
" + \"(\"+ str(ob.getGeometry()) + \")\" \\\n",
" + \", \" + str(ob.getDataTime())\n",
")\n",
2018-09-05 15:52:38 -06:00
"\n",
"# An example of a slanted line at constant T -- in this case the 0 isotherm\n",
"l = skew.ax.axvline(0, color='c', linestyle='--', linewidth=2)\n",
"\n",
"# Draw hodograph\n",
"ax_hod = inset_axes(skew.ax, '40%', '40%', loc=2)\n",
2018-09-06 12:12:07 -06:00
"h = Hodograph(ax_hod, component_range=wind_speed(u, v).max())\n",
2018-09-05 15:52:38 -06:00
"h.add_grid(increment=20)\n",
"h.plot_colormapped(u, v, spd)\n",
"\n",
"# Show the plot\n",
"plt.show()"
]
}
],
"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
}