python-awips/examples/notebooks/Model_Sounding_Data.ipynb

1308 lines
197 KiB
Text
Raw Normal View History

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",
"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",
"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",
"execution_count": 2,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2018-10-05 17:09:43 -06:00
"[b'',\n",
" b'1V4',\n",
" b'3J2',\n",
" b'4BL',\n",
" b'4BQ',\n",
" b'4HV',\n",
" b'4OM',\n",
" b'5AF',\n",
" b'5AG',\n",
" b'5SZ',\n",
" b'6RO',\n",
" b'8V7',\n",
" b'9B6',\n",
" b'A#2',\n",
" b'A#3',\n",
" b'A#4',\n",
" b'A#5',\n",
" b'A#6',\n",
" b'A#7',\n",
" b'A#8',\n",
" b'A#9',\n",
" b'A#A',\n",
" b'A#B',\n",
" b'ABL',\n",
" b'ADM',\n",
" b'AFA',\n",
" b'AGR',\n",
" b'AHN',\n",
" b'AIA',\n",
" b'AIH',\n",
" b'AJO',\n",
" b'ANJ',\n",
" b'APX',\n",
" b'AQQ',\n",
" b'ATH',\n",
" b'ATL1',\n",
" b'ATL2',\n",
" b'ATL3',\n",
" b'ATL4',\n",
" b'ATLH',\n",
" b'AWH',\n",
" b'AWR',\n",
" b'B#1',\n",
" b'B#2',\n",
" b'B#3',\n",
" b'B#4',\n",
" b'B#5',\n",
" b'B#6',\n",
" b'B#7',\n",
" b'B#8',\n",
" b'B#9',\n",
" b'B#A',\n",
" b'B#B',\n",
" b'B#C',\n",
" b'B#D',\n",
" b'B#E',\n",
" b'B#F',\n",
" b'B#G',\n",
" b'B#H',\n",
" b'B#J',\n",
" b'B#K',\n",
" b'B#L',\n",
" b'B#M',\n",
" b'B#N',\n",
" b'B#O',\n",
" b'B#P',\n",
" b'B#Q',\n",
" b'B#S',\n",
" b'BAB',\n",
" b'BDG',\n",
" b'BDP',\n",
" b'BFL',\n",
" b'BGTL',\n",
" b'BH1',\n",
" b'BH2',\n",
" b'BH3',\n",
" b'BH4',\n",
" b'BH5',\n",
" b'BHK',\n",
" b'BID',\n",
" b'BIR',\n",
" b'BLS',\n",
" b'BLU',\n",
" b'BMX',\n",
" b'BNA',\n",
" b'BOD',\n",
" b'BRA',\n",
" b'BTL',\n",
" b'BVR',\n",
" b'C01',\n",
" b'C02',\n",
" b'C03',\n",
" b'C04',\n",
" b'C06',\n",
" b'C07',\n",
" b'C08',\n",
" b'C09',\n",
" b'C10',\n",
" b'C11',\n",
" b'C12',\n",
" b'C13',\n",
" b'C14',\n",
" b'C17',\n",
" b'C18',\n",
" b'C19',\n",
" b'C20',\n",
" b'C21',\n",
" b'C22',\n",
" b'C23',\n",
" b'C24',\n",
" b'C25',\n",
" b'C27',\n",
" b'C28',\n",
" b'C30',\n",
" b'C31',\n",
" b'C32',\n",
" b'C33',\n",
" b'C34',\n",
" b'C35',\n",
" b'C36',\n",
" b'C7H',\n",
" b'CAI',\n",
" b'CAN',\n",
" b'CBE',\n",
" b'CBN',\n",
" b'CHE',\n",
" b'CKN',\n",
" b'CLD',\n",
" b'CLE',\n",
" b'CLN',\n",
" b'COL1',\n",
" b'COL2',\n",
" b'COL3',\n",
" b'COL4',\n",
" b'COT',\n",
" b'CQV',\n",
" b'CRL',\n",
2018-10-05 17:09:43 -06:00
" b'CRR',\n",
" b'CTY',\n",
" b'CVM',\n",
" b'CVS',\n",
" b'CWEU',\n",
" b'CWFN',\n",
" b'CWKX',\n",
" b'CWLB',\n",
" b'CWLO',\n",
" b'CWLT',\n",
" b'CWLW',\n",
" b'CWMW',\n",
" b'CWOS',\n",
" b'CWPH',\n",
" b'CWQG',\n",
" b'CWSA',\n",
" b'CWSE',\n",
" b'CWZB',\n",
" b'CWZC',\n",
" b'CWZV',\n",
" b'CYAH',\n",
" b'CYAW',\n",
" b'CYBK',\n",
" b'CYBU',\n",
" b'CYCB',\n",
" b'CYCG',\n",
" b'CYCX',\n",
" b'CYDA',\n",
" b'CYEG',\n",
" b'CYEV',\n",
" b'CYFB',\n",
" b'CYFO',\n",
" b'CYFS',\n",
" b'CYGQ',\n",
" b'CYHM',\n",
" b'CYHZ',\n",
" b'CYJT',\n",
" b'CYLH',\n",
" b'CYLJ',\n",
" b'CYMD',\n",
" b'CYMO',\n",
" b'CYMT',\n",
" b'CYMX',\n",
" b'CYOC',\n",
" b'CYOW',\n",
" b'CYPA',\n",
" b'CYPE',\n",
" b'CYPL',\n",
" b'CYPQ',\n",
" b'CYQA',\n",
" b'CYQD',\n",
" b'CYQG',\n",
" b'CYQH',\n",
" b'CYQI',\n",
" b'CYQK',\n",
" b'CYQQ',\n",
" b'CYQR',\n",
" b'CYQT',\n",
" b'CYQX',\n",
" b'CYQY',\n",
" b'CYRB',\n",
" b'CYSM',\n",
" b'CYSY',\n",
" b'CYTH',\n",
" b'CYTL',\n",
" b'CYTS',\n",
" b'CYUL',\n",
" b'CYUX',\n",
" b'CYVO',\n",
" b'CYVP',\n",
" b'CYVQ',\n",
" b'CYVR',\n",
" b'CYVV',\n",
" b'CYWA',\n",
" b'CYWG',\n",
" b'CYWO',\n",
" b'CYXC',\n",
" b'CYXE',\n",
" b'CYXH',\n",
" b'CYXS',\n",
" b'CYXU',\n",
" b'CYXX',\n",
" b'CYXY',\n",
" b'CYXZ',\n",
" b'CYYB',\n",
" b'CYYC',\n",
" b'CYYE',\n",
" b'CYYJ',\n",
" b'CYYQ',\n",
" b'CYYR',\n",
" b'CYYT',\n",
" b'CYYZ',\n",
" b'CYZF',\n",
" b'CYZS',\n",
" b'CYZT',\n",
" b'CYZV',\n",
" b'DEN',\n",
" b'DOV',\n",
" b'DPG',\n",
" b'DSC',\n",
" b'DSD',\n",
" b'DTX',\n",
" b'DVN',\n",
" b'DYS',\n",
" b'E28',\n",
" b'E74',\n",
" b'EAT',\n",
" b'EAX',\n",
2018-10-05 17:09:43 -06:00
" b'EDW',\n",
" b'EFL',\n",
" b'EMP',\n",
" b'END',\n",
" b'ENL',\n",
" b'ESTC',\n",
" b'FCS',\n",
" b'FDR',\n",
" b'FFC',\n",
" b'FHU',\n",
" b'FLG',\n",
" b'FLP',\n",
" b'FPK',\n",
" b'FRI',\n",
" b'FSI',\n",
" b'FTR',\n",
" b'FWD',\n",
" b'G#1',\n",
" b'G#2',\n",
" b'G#3',\n",
" b'G#4',\n",
" b'G#5',\n",
" b'G#6',\n",
" b'G#7',\n",
" b'G#8',\n",
" b'G#9',\n",
" b'G#A',\n",
" b'G#B',\n",
" b'G#C',\n",
" b'G#D',\n",
" b'G#E',\n",
" b'G#F',\n",
" b'G#G',\n",
" b'G001',\n",
" b'G003',\n",
" b'G004',\n",
" b'G005',\n",
" b'G007',\n",
" b'G009',\n",
" b'GDP',\n",
" b'GDV',\n",
" b'GLRY',\n",
" b'GMX1',\n",
" b'GNB',\n",
" b'GNC',\n",
" b'GRF',\n",
" b'GTB',\n",
" b'GTP',\n",
" b'GVL',\n",
" b'GVS',\n",
" b'GYX',\n",
" b'H02',\n",
" b'HAY',\n",
" b'HGR',\n",
" b'HMN',\n",
" b'HOM',\n",
" b'HOO',\n",
" b'HSI',\n",
2018-10-05 17:09:43 -06:00
" b'HYR',\n",
" b'HYS',\n",
" b'ICC',\n",
" b'IGM',\n",
" b'ILN',\n",
" b'ILS',\n",
" b'ILX',\n",
" b'IMT',\n",
" b'INK',\n",
" b'IPX',\n",
" b'JACK',\n",
" b'JDN',\n",
" b'K40B',\n",
" b'K9V9',\n",
" b'KABE',\n",
" b'KABI',\n",
" b'KABQ',\n",
" b'KABR',\n",
" b'KABY',\n",
" b'KACK',\n",
" b'KACT',\n",
" b'KACV',\n",
" b'KACY',\n",
" b'KAGC',\n",
" b'KAGS',\n",
" b'KAHN',\n",
" b'KAK',\n",
" b'KALB',\n",
" b'KALI',\n",
" b'KALO',\n",
" b'KALS',\n",
" b'KALW',\n",
" b'KAMA',\n",
" b'KAN',\n",
" b'KANB',\n",
" b'KAND',\n",
" b'KAOO',\n",
" b'KAPA',\n",
" b'KAPN',\n",
" b'KART',\n",
" b'KASE',\n",
" b'KAST',\n",
" b'KATL',\n",
" b'KATY',\n",
" b'KAUG',\n",
" b'KAUS',\n",
" b'KAUW',\n",
" b'KAVL',\n",
" b'KAVP',\n",
" b'KAXN',\n",
" b'KAYS',\n",
" b'KAZO',\n",
" b'KBAF',\n",
" b'KBCE',\n",
" b'KBDE',\n",
" b'KBDL',\n",
" b'KBDR',\n",
" b'KBED',\n",
" b'KBFD',\n",
" b'KBFF',\n",
" b'KBFI',\n",
" b'KBFL',\n",
" b'KBGM',\n",
" b'KBGR',\n",
" b'KBHB',\n",
" b'KBHM',\n",
" b'KBIH',\n",
" b'KBIL',\n",
" b'KBIS',\n",
" b'KBJC',\n",
" b'KBJI',\n",
" b'KBKE',\n",
" b'KBKW',\n",
" b'KBLF',\n",
" b'KBLH',\n",
" b'KBLI',\n",
" b'KBML',\n",
" b'KBNA',\n",
" b'KBNO',\n",
" b'KBNV',\n",
" b'KBOI',\n",
" b'KBOS',\n",
" b'KBPT',\n",
" b'KBQK',\n",
" b'KBRD',\n",
" b'KBRL',\n",
" b'KBRO',\n",
" b'KBTL',\n",
" b'KBTM',\n",
" b'KBTR',\n",
" b'KBTV',\n",
" b'KBUF',\n",
" b'KBUR',\n",
" b'KBVI',\n",
" b'KBVX',\n",
" b'KBVY',\n",
" b'KBWG',\n",
" b'KBWI',\n",
" b'KBYI',\n",
" b'KBZN',\n",
" b'KCAE',\n",
" b'KCAK',\n",
" b'KCAR',\n",
" b'KCDC',\n",
" b'KCDR',\n",
" b'KCDS',\n",
" b'KCEC',\n",
" b'KCEF',\n",
" b'KCGI',\n",
" b'KCGX',\n",
" b'KCHA',\n",
" b'KCHH',\n",
" b'KCHO',\n",
" b'KCHS',\n",
" b'KCID',\n",
" b'KCIU',\n",
" b'KCKB',\n",
" b'KCKL',\n",
" b'KCLE',\n",
" b'KCLL',\n",
" b'KCLM',\n",
" b'KCLT',\n",
" b'KCMH',\n",
" b'KCMI',\n",
" b'KCMX',\n",
" b'KCNM',\n",
" b'KCNU',\n",
" b'KCOD',\n",
" b'KCOE',\n",
" b'KCON',\n",
" b'KCOS',\n",
" b'KCOU',\n",
" b'KCPR',\n",
" b'KCRE',\n",
" b'KCRP',\n",
" b'KCRQ',\n",
" b'KCRW',\n",
" b'KCSG',\n",
" b'KCSV',\n",
" b'KCTB',\n",
" b'KCVG',\n",
" b'KCWA',\n",
" b'KCYS',\n",
" b'KDAB',\n",
" b'KDAG',\n",
" b'KDAL',\n",
" b'KDAN',\n",
" b'KDAY',\n",
" b'KDBQ',\n",
" b'KDCA',\n",
" b'KDDC',\n",
" b'KDEC',\n",
" b'KDEN',\n",
" b'KDET',\n",
" b'KDFW',\n",
" b'KDHN',\n",
" b'KDHT',\n",
" b'KDIK',\n",
" b'KDLH',\n",
" b'KDLS',\n",
" b'KDMN',\n",
" b'KDPA',\n",
" b'KDRA',\n",
" b'KDRO',\n",
" b'KDRT',\n",
" b'KDSM',\n",
2018-10-05 17:09:43 -06:00
" b'KDTW',\n",
" b'KDUG',\n",
" b'KDUJ',\n",
" b'KEAT',\n",
" b'KEAU',\n",
" b'KECG',\n",
" b'KEED',\n",
" b'KEGE',\n",
" b'KEKN',\n",
" b'KEKO',\n",
" b'KEL',\n",
" b'KELD',\n",
" b'KELM',\n",
" b'KELO',\n",
" b'KELP',\n",
" b'KELY',\n",
" b'KENV',\n",
" b'KEPH',\n",
" b'KEPO',\n",
" b'KEPZ',\n",
" b'KERI',\n",
" b'KESF',\n",
" b'KEUG',\n",
" b'KEVV',\n",
" b'KEWB',\n",
" b'KEWN',\n",
" b'KEWR',\n",
" b'KEYW',\n",
" b'KFAM',\n",
" b'KFAR',\n",
" b'KFAT',\n",
" b'KFAY',\n",
" b'KFCA',\n",
" b'KFDY',\n",
" b'KFKL',\n",
" b'KFLG',\n",
" b'KFLL',\n",
" b'KFLO',\n",
" b'KFMN',\n",
" b'KFMY',\n",
" b'KFNT',\n",
" b'KFOE',\n",
2018-10-05 17:09:43 -06:00
" b'KFPR',\n",
" b'KFRM',\n",
" b'KFSD',\n",
2018-10-05 17:09:43 -06:00
" b'KFSM',\n",
" b'KFTW',\n",
" b'KFTY',\n",
" b'KFVE',\n",
" b'KFVX',\n",
" b'KFWA',\n",
" b'KFXE',\n",
" b'KFYV',\n",
" b'KGAG',\n",
" b'KGCC',\n",
" b'KGCK',\n",
" b'KGCN',\n",
" b'KGEG',\n",
" b'KGFK',\n",
" b'KGFL',\n",
" b'KGGG',\n",
" b'KGGW',\n",
" b'KGJT',\n",
" b'KGLD',\n",
" b'KGLH',\n",
" b'KGLS',\n",
" b'KGMU',\n",
" b'KGNR',\n",
" b'KGNV',\n",
" b'KGON',\n",
" b'KGPT',\n",
" b'KGRB',\n",
" b'KGRI',\n",
2018-10-05 17:09:43 -06:00
" b'KGRR',\n",
" b'KGSO',\n",
" b'KGSP',\n",
" b'KGTF',\n",
" b'KGUC',\n",
" b'KGUP',\n",
" b'KGWO',\n",
" b'KGYY',\n",
" b'KGZH',\n",
" b'KHAT',\n",
" b'KHBR',\n",
" b'KHDN',\n",
" b'KHIB',\n",
" b'KHIO',\n",
" b'KHKY',\n",
" b'KHLG',\n",
" b'KHLN',\n",
" b'KHOB',\n",
" b'KHON',\n",
" b'KHOT',\n",
" b'KHOU',\n",
" b'KHPN',\n",
" b'KHQM',\n",
" b'KHRL',\n",
" b'KHRO',\n",
" b'KHSV',\n",
" b'KHTH',\n",
" b'KHTS',\n",
" b'KHUF',\n",
" b'KHUL',\n",
" b'KHUT',\n",
" b'KHVN',\n",
" b'KHVR',\n",
" b'KHYA',\n",
" b'KIAD',\n",
" b'KIAG',\n",
" b'KIAH',\n",
" b'KICT',\n",
" b'KIDA',\n",
" b'KIL',\n",
" b'KILG',\n",
" b'KILM',\n",
" b'KIND',\n",
" b'KINK',\n",
" b'KINL',\n",
" b'KINT',\n",
" b'KINW',\n",
" b'KIPL',\n",
" b'KIPT',\n",
" b'KISN',\n",
" b'KISP',\n",
" b'KITH',\n",
" b'KIWD',\n",
" b'KJAC',\n",
" b'KJAN',\n",
" b'KJAX',\n",
" b'KJBR',\n",
" b'KJFK',\n",
" b'KJHW',\n",
" b'KJKL',\n",
" b'KJLN',\n",
" b'KJMS',\n",
" b'KJST',\n",
" b'KJXN',\n",
" b'KKL',\n",
" b'KLAF',\n",
" b'KLAN',\n",
" b'KLAR',\n",
" b'KLAS',\n",
" b'KLAX',\n",
" b'KLBB',\n",
" b'KLBE',\n",
" b'KLBF',\n",
" b'KLCB',\n",
" b'KLCH',\n",
" b'KLEB',\n",
" b'KLEX',\n",
" b'KLFK',\n",
" b'KLFT',\n",
" b'KLGA',\n",
" b'KLGB',\n",
" b'KLGU',\n",
" b'KLIT',\n",
" b'KLMT',\n",
" b'KLND',\n",
" b'KLNK',\n",
2018-10-05 17:09:43 -06:00
" b'KLOL',\n",
" b'KLOZ',\n",
" b'KLRD',\n",
" b'KLSE',\n",
" b'KLUK',\n",
" b'KLVS',\n",
" b'KLWB',\n",
" b'KLWM',\n",
" b'KLWS',\n",
" b'KLWT',\n",
" b'KLYH',\n",
" b'KLZK',\n",
" b'KMAF',\n",
" b'KMBS',\n",
" b'KMCB',\n",
" b'KMCE',\n",
" b'KMCI',\n",
2018-10-05 17:09:43 -06:00
" b'KMCN',\n",
" b'KMCO',\n",
" b'KMCW',\n",
2018-10-05 17:09:43 -06:00
" b'KMDN',\n",
" b'KMDT',\n",
" b'KMDW',\n",
" b'KMEI',\n",
" b'KMEM',\n",
" b'KMFD',\n",
" b'KMFE',\n",
" b'KMFR',\n",
" b'KMGM',\n",
" b'KMGW',\n",
" b'KMHE',\n",
" b'KMHK',\n",
2018-10-05 17:09:43 -06:00
" b'KMHT',\n",
" b'KMHX',\n",
" b'KMIA',\n",
" b'KMIV',\n",
" b'KMKC',\n",
2018-10-05 17:09:43 -06:00
" b'KMKE',\n",
" b'KMKG',\n",
" b'KMKL',\n",
" b'KMLB',\n",
" b'KMLC',\n",
" b'KMLI',\n",
" b'KMLS',\n",
" b'KMLT',\n",
" b'KMLU',\n",
" b'KMMU',\n",
" b'KMOB',\n",
" b'KMOT',\n",
" b'KMPV',\n",
" b'KMQT',\n",
" b'KMRB',\n",
" b'KMRY',\n",
" b'KMSL',\n",
" b'KMSN',\n",
" b'KMSO',\n",
" b'KMSP',\n",
" b'KMSS',\n",
" b'KMSY',\n",
" b'KMTJ',\n",
" b'KMTN',\n",
" b'KMWH',\n",
" b'KMYR',\n",
" b'KNA',\n",
" b'KNEW',\n",
" b'KNL',\n",
" b'KNSI',\n",
" b'KOAK',\n",
" b'KOFK',\n",
2018-10-05 17:09:43 -06:00
" b'KOGD',\n",
" b'KOKC',\n",
" b'KOLM',\n",
" b'KOMA',\n",
2018-10-05 17:09:43 -06:00
" b'KONT',\n",
" b'KOPF',\n",
" b'KOQU',\n",
" b'KORD',\n",
" b'KORF',\n",
" b'KORH',\n",
" b'KOSH',\n",
" b'KOTH',\n",
" b'KOTM',\n",
" b'KP11',\n",
" b'KP38',\n",
" b'KPAE',\n",
" b'KPAH',\n",
" b'KPBF',\n",
" b'KPBI',\n",
" b'KPDK',\n",
" b'KPDT',\n",
" b'KPDX',\n",
" b'KPFN',\n",
" b'KPGA',\n",
" b'KPHF',\n",
" b'KPHL',\n",
" b'KPHN',\n",
" b'KPHX',\n",
" b'KPIA',\n",
" b'KPIB',\n",
" b'KPIE',\n",
" b'KPIH',\n",
" b'KPIR',\n",
" b'KPIT',\n",
" b'KPKB',\n",
" b'KPLN',\n",
" b'KPMD',\n",
" b'KPNC',\n",
" b'KPNE',\n",
" b'KPNS',\n",
" b'KPOU',\n",
" b'KPQI',\n",
" b'KPRB',\n",
" b'KPRC',\n",
" b'KPSC',\n",
" b'KPSM',\n",
" b'KPSP',\n",
" b'KPTK',\n",
" b'KPUB',\n",
" b'KPVD',\n",
" b'KPVU',\n",
" b'KPWM',\n",
" b'KRAD',\n",
" b'KRAP',\n",
" b'KRBL',\n",
" b'KRDD',\n",
" b'KRDG',\n",
" b'KRDM',\n",
" b'KRDU',\n",
" b'KRFD',\n",
" b'KRIC',\n",
" b'KRIW',\n",
" b'KRKD',\n",
" b'KRKS',\n",
" b'KRNO',\n",
" b'KRNT',\n",
" b'KROA',\n",
" b'KROC',\n",
" b'KROW',\n",
" b'KRSL',\n",
2018-10-05 17:09:43 -06:00
" b'KRST',\n",
" b'KRSW',\n",
" b'KRUM',\n",
" b'KRWF',\n",
" b'KRWI',\n",
" b'KRWL',\n",
" b'KSAC',\n",
" b'KSAF',\n",
" b'KSAN',\n",
" b'KSAT',\n",
" b'KSAV',\n",
" b'KSBA',\n",
" b'KSBN',\n",
" b'KSBP',\n",
" b'KSBY',\n",
" b'KSCH',\n",
" b'KSCK',\n",
" b'KSDF',\n",
" b'KSDM',\n",
" b'KSDY',\n",
" b'KSEA',\n",
" b'KSEP',\n",
" b'KSFF',\n",
" b'KSFO',\n",
" b'KSGF',\n",
" b'KSGU',\n",
" b'KSHR',\n",
" b'KSHV',\n",
" b'KSJC',\n",
" b'KSJT',\n",
" b'KSLC',\n",
" b'KSLE',\n",
" b'KSLK',\n",
" b'KSLN',\n",
2018-10-05 17:09:43 -06:00
" b'KSMF',\n",
" b'KSMX',\n",
" b'KSNA',\n",
" b'KSNS',\n",
" b'KSPI',\n",
" b'KSPS',\n",
" b'KSRQ',\n",
" b'KSSI',\n",
" b'KSTJ',\n",
2018-10-05 17:09:43 -06:00
" b'KSTL',\n",
" b'KSTP',\n",
" b'KSTS',\n",
" b'KSUN',\n",
" b'KSUS',\n",
" b'KSUX',\n",
2018-10-05 17:09:43 -06:00
" b'KSVE',\n",
" b'KSWF',\n",
" b'KSYR',\n",
" b'KTCC',\n",
" b'KTCL',\n",
" b'KTCS',\n",
" b'KTEB',\n",
" b'KTIW',\n",
" b'KTLH',\n",
" b'KTMB',\n",
" b'KTOL',\n",
" b'KTOP',\n",
2018-10-05 17:09:43 -06:00
" b'KTPA',\n",
" b'KTPH',\n",
" b'KTRI',\n",
" b'KTRK',\n",
" b'KTRM',\n",
" b'KTTD',\n",
" b'KTTN',\n",
" b'KTUL',\n",
" b'KTUP',\n",
" b'KTUS',\n",
" b'KTVC',\n",
" b'KTVL',\n",
" b'KTWF',\n",
" b'KTXK',\n",
" b'KTYR',\n",
" b'KTYS',\n",
" b'KUCA',\n",
" b'KUIN',\n",
" b'KUKI',\n",
" b'KUNV',\n",
" b'KVCT',\n",
" b'KVEL',\n",
" b'KVLD',\n",
" b'KVNY',\n",
" b'KVRB',\n",
" b'KWJF',\n",
" b'KWMC',\n",
" b'KWRL',\n",
" b'KWYS',\n",
" b'KY22',\n",
" b'KY26',\n",
" b'KYKM',\n",
" b'KYKN',\n",
2018-10-05 17:09:43 -06:00
" b'KYNG',\n",
" b'KYUM',\n",
" b'KZZV',\n",
" b'LAA',\n",
" b'LAP',\n",
" b'LBY',\n",
" b'LDL',\n",
" b'LHX',\n",
" b'LIC',\n",
" b'LOR',\n",
" b'LRR',\n",
" b'LSF',\n",
" b'LUS',\n",
" b'LVM',\n",
" b'LW1',\n",
" b'MAC',\n",
" b'MAX',\n",
" b'MAZ',\n",
" b'MDPC',\n",
" b'MDPP',\n",
" b'MDSD',\n",
" b'MDST',\n",
" b'MGFL',\n",
" b'MGGT',\n",
" b'MGHT',\n",
" b'MGPB',\n",
" b'MGSJ',\n",
" b'MHAM',\n",
" b'MHCA',\n",
" b'MHCH',\n",
" b'MHLC',\n",
" b'MHLE',\n",
" b'MHLM',\n",
" b'MHNJ',\n",
" b'MHPL',\n",
" b'MHRO',\n",
" b'MHSR',\n",
" b'MHTE',\n",
" b'MHTG',\n",
" b'MHYR',\n",
" b'MIB',\n",
" b'MIE',\n",
" b'MKJP',\n",
" b'MKJS',\n",
" b'MLD',\n",
" b'MMAA',\n",
" b'MMAS',\n",
" b'MMBT',\n",
" b'MMCE',\n",
" b'MMCL',\n",
" b'MMCN',\n",
" b'MMCS',\n",
" b'MMCU',\n",
" b'MMCV',\n",
" b'MMCZ',\n",
" b'MMDO',\n",
" b'MMGL',\n",
" b'MMGM',\n",
" b'MMHO',\n",
" b'MMLP',\n",
" b'MMMA',\n",
" b'MMMD',\n",
" b'MMML',\n",
" b'MMMM',\n",
" b'MMMT',\n",
" b'MMMX',\n",
" b'MMMY',\n",
" b'MMMZ',\n",
" b'MMNL',\n",
" b'MMPR',\n",
" b'MMRX',\n",
" b'MMSD',\n",
" b'MMSP',\n",
" b'MMTC',\n",
" b'MMTJ',\n",
" b'MMTM',\n",
" b'MMTO',\n",
" b'MMTP',\n",
" b'MMUN',\n",
" b'MMVR',\n",
" b'MMZC',\n",
" b'MMZH',\n",
" b'MMZO',\n",
" b'MNMG',\n",
" b'MNPC',\n",
" b'MOR',\n",
" b'MPBO',\n",
" b'MPCH',\n",
" b'MPDA',\n",
" b'MPMG',\n",
" b'MPSA',\n",
" b'MPTO',\n",
" b'MPX',\n",
" b'MRCH',\n",
" b'MRF',\n",
" b'MRLB',\n",
" b'MRLM',\n",
" b'MROC',\n",
" b'MRPV',\n",
" b'MRS',\n",
" b'MSAC',\n",
" b'MSLP',\n",
" b'MSSS',\n",
" b'MTCH',\n",
" b'MTL',\n",
" b'MTPP',\n",
" b'MTV',\n",
" b'MTY',\n",
" b'MUBA',\n",
" b'MUBY',\n",
" b'MUCA',\n",
" b'MUCL',\n",
" b'MUCM',\n",
" b'MUCU',\n",
" b'MUGM',\n",
" b'MUGT',\n",
" b'MUHA',\n",
" b'MUMO',\n",
" b'MUMZ',\n",
" b'MUNG',\n",
" b'MUVR',\n",
" b'MUVT',\n",
" b'MWCR',\n",
" b'MYBS',\n",
" b'MYEG',\n",
" b'MYGF',\n",
" b'MYGW',\n",
" b'MYL',\n",
" b'MYNN',\n",
" b'MZBZ',\n",
" b'MZT',\n",
" b'NCK',\n",
" b'NGX',\n",
" b'NHK',\n",
" b'NID',\n",
" b'NKX',\n",
" b'NOA',\n",
" b'NRU',\n",
" b'NTD',\n",
" ...]"
2018-09-05 15:52:38 -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",
"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-05 17:09:43 -06:00
"execution_count": 5,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"parms = [b'temperature', b'pressure', b'vComp', b'uComp', b'cldCvr', b'specHum', b'omega']\n",
"site = b'KFRM'\n",
2018-09-05 15:52:38 -06:00
"geom = POINT (-94.41999816894531 43.65000152587891)\n",
2018-10-05 17:09:43 -06:00
"datetime = 2018-10-05 12:00:00\n",
"reftime = Oct 05 18 12:00:00 GMT\n",
"fcstHour = 0\n",
2018-10-05 17:09:43 -06:00
"period = (Oct 05 18 12:00:00 , Oct 05 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",
"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",
"execution_count": 6,
"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",
"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-05 17:09:43 -06:00
"execution_count": 8,
"metadata": {},
2018-10-05 17:09:43 -06:00
"outputs": [],
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-05 17:09:43 -06:00
"execution_count": 9,
"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-05 17:09:43 -06:00
"execution_count": 11,
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-05 17:09:43 -06:00
"execution_count": 12,
2018-09-05 15:52:38 -06:00
"metadata": {},
"outputs": [
{
"data": {
2018-10-05 17:09:43 -06:00
"image/png": "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
2018-09-05 15:52:38 -06:00
"text/plain": [
"<Figure size 864x1008 with 2 Axes>"
2018-09-05 15:52:38 -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",
"plt.title( forecastModel + \" \" \\\n",
" + ob.getLocationName().decode('UTF-8') \\\n",
" + \"(\"+ 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",
"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": {
"display_name": "Python 3",
2018-09-05 15:52:38 -06:00
"language": "python",
"name": "python3"
2018-09-05 15:52:38 -06:00
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
2018-09-05 15:52:38 -06:00
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
2018-09-05 15:52:38 -06:00
}
},
"nbformat": 4,
"nbformat_minor": 1
}