mirror of
https://github.com/Unidata/python-awips.git
synced 2025-02-24 06:57:56 -05:00
484 lines
No EOL
61 KiB
HTML
484 lines
No EOL
61 KiB
HTML
<!DOCTYPE html>
|
||
<html class="writer-html5" lang="en" >
|
||
<head>
|
||
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
|
||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>Upper Air BUFR Soundings — python-awips documentation</title>
|
||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||
<!--[if lt IE 9]>
|
||
<script src="../../_static/js/html5shiv.min.js"></script>
|
||
<![endif]-->
|
||
|
||
<script src="../../_static/jquery.js?v=5d32c60e"></script>
|
||
<script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js?v=b3ba4146"></script>
|
||
<script src="../../_static/doctools.js?v=888ff710"></script>
|
||
<script src="../../_static/sphinx_highlight.js?v=4825356b"></script>
|
||
<script src="../../_static/js/theme.js"></script>
|
||
<link rel="author" title="About these documents" href="../../about.html" />
|
||
<link rel="index" title="Index" href="../../genindex.html" />
|
||
<link rel="search" title="Search" href="../../search.html" />
|
||
<link rel="next" title="Watch Warning and Advisory Plotting" href="Watch_Warning_and_Advisory_Plotting.html" />
|
||
<link rel="prev" title="Satellite Imagery" href="Satellite_Imagery.html" />
|
||
</head>
|
||
|
||
<body class="wy-body-for-nav">
|
||
<div class="wy-grid-for-nav">
|
||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||
<div class="wy-side-scroll">
|
||
<div class="wy-side-nav-search" >
|
||
|
||
|
||
|
||
<a href="../../index.html" class="icon icon-home">
|
||
python-awips
|
||
</a>
|
||
<div class="version">
|
||
18.1.8
|
||
</div>
|
||
<div role="search">
|
||
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
|
||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
</div>
|
||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||
<ul class="current">
|
||
<li class="toctree-l1"><a class="reference internal" href="../../api/index.html">API Documentation</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../datatypes.html">Available Data Types</a></li>
|
||
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Data Plotting Examples</a><ul class="current">
|
||
<li class="toctree-l2"><a class="reference internal" href="Colored_Surface_Temperature_Plot.html">Colored Surface Temperature Plot</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Colorized_Grid_Data.html">Colorized Grid Data</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Forecast_Model_Vertical_Sounding.html">Forecast Model Vertical Sounding</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="GOES_CIRA_Product_Writer.html">GOES CIRA Product Writer</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Grid_Levels_and_Parameters.html">Grid Levels and Parameters</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="METAR_Station_Plot_with_MetPy.html">METAR Station Plot with MetPy</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Map_Resources_and_Topography.html">Map Resources and Topography</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Model_Sounding_Data.html">Model Sounding Data</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="NEXRAD_Level3_Radar.html">NEXRAD Level3 Radar</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Precip_Accumulation_Region_of_Interest.html">Precip Accumulation Region of Interest</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Regional_Surface_Obs_Plot.html">Regional Surface Obs Plot</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Satellite_Imagery.html">Satellite Imagery</a></li>
|
||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Upper Air BUFR Soundings</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="#objectives">Objectives</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="#table-of-contents">Table of Contents</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="#imports">1 Imports</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="#edex-connection">2 EDEX Connection</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="#filtering-by-time">3 Filtering by Time</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="#get-the-data">4 Get the Data!</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="#use-the-data">5 Use the Data!</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="#plot-the-data">6 Plot the Data!</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="#see-also">7 See Also</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="Watch_Warning_and_Advisory_Plotting.html">Watch Warning and Advisory Plotting</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../dev.html">Development Guide</a></li>
|
||
<li class="toctree-l1"><a class="reference external" href="http://unidata.github.io/awips2/appendix/appendix-grid-parameters/">AWIPS Grid Parameters</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../../about.html">About Unidata AWIPS</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||
<a href="../../index.html">python-awips</a>
|
||
</nav>
|
||
|
||
<div class="wy-nav-content">
|
||
<div class="rst-content">
|
||
<div role="navigation" aria-label="Page navigation">
|
||
<ul class="wy-breadcrumbs">
|
||
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||
<li class="breadcrumb-item"><a href="../index.html">Data Plotting Examples</a></li>
|
||
<li class="breadcrumb-item active">Upper Air BUFR Soundings</li>
|
||
<li class="wy-breadcrumbs-aside">
|
||
<a href="../../_sources/examples/generated/Upper_Air_BUFR_Soundings.rst.txt" rel="nofollow"> View page source</a>
|
||
</li>
|
||
</ul>
|
||
<hr/>
|
||
</div>
|
||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||
<div itemprop="articleBody">
|
||
|
||
<section id="upper-air-bufr-soundings">
|
||
<h1>Upper Air BUFR Soundings<a class="headerlink" href="#upper-air-bufr-soundings" title="Permalink to this heading"></a></h1>
|
||
<p><a class="reference external" href="http://nbviewer.ipython.org/github/Unidata/python-awips/blob/master/examples/notebooks/Upper_Air_BUFR_Soundings.ipynb">Notebook</a>
|
||
Python-AWIPS Tutorial Notebook</p>
|
||
<hr class="docutils" />
|
||
<section id="objectives">
|
||
<h2>Objectives<a class="headerlink" href="#objectives" title="Permalink to this heading"></a></h2>
|
||
<ul class="simple">
|
||
<li><p>Retrieve an Upper Air vertical profile from EDEX</p></li>
|
||
<li><p>Plot a Skew-T/Log-P chart with
|
||
<a class="reference external" href="https://matplotlib.org/">Matplotlib</a> and
|
||
<a class="reference external" href="https://unidata.github.io/MetPy/latest/index.html">MetPy</a></p></li>
|
||
<li><p>Understand the <strong>bufrua</strong> plugin returns separate objects for
|
||
parameters at <em>mandatory levels</em> and at <em>significant temperature
|
||
levels</em></p>
|
||
<ul>
|
||
<li><p><em>Significant temperature levels</em> are used to plot the pressure,
|
||
temperature and dewpoint lines</p></li>
|
||
<li><p><em>Mandatory levels</em> are used to plot the wind profile</p></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<hr class="docutils" />
|
||
<section id="table-of-contents">
|
||
<h3>Table of Contents<a class="headerlink" href="#table-of-contents" title="Permalink to this heading"></a></h3>
|
||
<div class="line-block">
|
||
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html#imports">1
|
||
Imports</a></div>
|
||
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html#edex-connection">2 EDEX
|
||
Connection</a></div>
|
||
<div class="line"> <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html#initial-edex-connection">2.1 Initial EDEX
|
||
Connection</a></div>
|
||
<div class="line"> <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html#setting-additional-request-parameters">2.2 Setting Additional Request
|
||
Parameters</a></div>
|
||
<div class="line"> <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html#available-location-names">2.3 Available Location
|
||
Names</a></div>
|
||
<div class="line"> <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html#setting-the-location-name">2.4 Setting the Location
|
||
Name</a></div>
|
||
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html#filtering-by-time">3 Filtering by
|
||
Time</a></div>
|
||
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html#get-the-data">4 Get the
|
||
Data!</a></div>
|
||
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html#use-the-data">5 Use the
|
||
Data!</a></div>
|
||
<div class="line"> <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html#prepare-data-objects">5.1 Prepare Data
|
||
Objects</a></div>
|
||
<div class="line"> <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html#convert-units">5.2 Convert
|
||
Units</a></div>
|
||
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html#plot-the-data">6 Plot the
|
||
Data!</a></div>
|
||
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html#see-also">7 See
|
||
Also</a></div>
|
||
<div class="line"> <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html#related-notebooks">7.1 Related
|
||
Notebooks</a></div>
|
||
<div class="line"> <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html#additional-documentation">7.2 Additional
|
||
Documentation</a></div>
|
||
</div>
|
||
</section>
|
||
<section id="imports">
|
||
<h3>1 Imports<a class="headerlink" href="#imports" title="Permalink to this heading"></a></h3>
|
||
<p>The imports below are used throughout the notebook. Note the first
|
||
import is coming directly from python-awips and allows us to connect to
|
||
an EDEX server. The subsequent imports are for data manipulation and
|
||
visualization.</p>
|
||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">awips.dataaccess</span> <span class="kn">import</span> <span class="n">DataAccessLayer</span>
|
||
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
||
<span class="kn">from</span> <span class="nn">mpl_toolkits.axes_grid1.inset_locator</span> <span class="kn">import</span> <span class="n">inset_axes</span>
|
||
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||
<span class="kn">from</span> <span class="nn">metpy.calc</span> <span class="kn">import</span> <span class="n">wind_components</span><span class="p">,</span> <span class="n">lcl</span><span class="p">,</span> <span class="n">parcel_profile</span>
|
||
<span class="kn">from</span> <span class="nn">metpy.plots</span> <span class="kn">import</span> <span class="n">SkewT</span><span class="p">,</span> <span class="n">Hodograph</span>
|
||
<span class="kn">from</span> <span class="nn">metpy.units</span> <span class="kn">import</span> <span class="n">units</span>
|
||
</pre></div>
|
||
</div>
|
||
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html">Top</a></p>
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="edex-connection">
|
||
<h3>2 EDEX Connection<a class="headerlink" href="#edex-connection" title="Permalink to this heading"></a></h3>
|
||
<section id="initial-edex-connection">
|
||
<h4>2.1 Initial EDEX Connection<a class="headerlink" href="#initial-edex-connection" title="Permalink to this heading"></a></h4>
|
||
<p>First we establish a connection to Unidata’s public EDEX server. With
|
||
that connection made, we can create a <a class="reference external" href="http://unidata.github.io/python-awips/api/IDataRequest.html">new data request
|
||
object</a>
|
||
and set the data type to <strong>bufrua</strong>, and define additional parameters
|
||
and an identifier on the request.</p>
|
||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Set the edex server</span>
|
||
<span class="n">DataAccessLayer</span><span class="o">.</span><span class="n">changeEDEXHost</span><span class="p">(</span><span class="s2">"edex-cloud.unidata.ucar.edu"</span><span class="p">)</span>
|
||
<span class="n">request</span> <span class="o">=</span> <span class="n">DataAccessLayer</span><span class="o">.</span><span class="n">newDataRequest</span><span class="p">()</span>
|
||
|
||
<span class="c1"># Set data type</span>
|
||
<span class="n">request</span><span class="o">.</span><span class="n">setDatatype</span><span class="p">(</span><span class="s2">"bufrua"</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="setting-additional-request-parameters">
|
||
<h4>2.2 Setting Additional Request Parameters<a class="headerlink" href="#setting-additional-request-parameters" title="Permalink to this heading"></a></h4>
|
||
<p>Here we populate arrays of all the parameters that will be necessary for
|
||
plotting the Skew-T. The <code class="docutils literal notranslate"><span class="pre">MAN_PARAMS</span></code> are the <em>mandatory levels</em> and
|
||
the <code class="docutils literal notranslate"><span class="pre">SIGT_PARAMS</span></code> are the <em>significant temperature</em> parameters that
|
||
were both mentioned in the <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html#objectives">objectives
|
||
section</a>
|
||
above.</p>
|
||
<p>Also request the station name and elevation to use in the figure title
|
||
later on.</p>
|
||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">MAN_PARAMS</span> <span class="o">=</span> <span class="nb">set</span><span class="p">([</span><span class="s1">'prMan'</span><span class="p">,</span> <span class="s1">'wdMan'</span><span class="p">,</span> <span class="s1">'wsMan'</span><span class="p">])</span>
|
||
<span class="n">SIGT_PARAMS</span> <span class="o">=</span> <span class="nb">set</span><span class="p">([</span><span class="s1">'prSigT'</span><span class="p">,</span> <span class="s1">'tpSigT'</span><span class="p">,</span> <span class="s1">'tdSigT'</span><span class="p">])</span>
|
||
<span class="n">request</span><span class="o">.</span><span class="n">setParameters</span><span class="p">(</span><span class="s2">"staElev"</span><span class="p">,</span> <span class="s2">"staName"</span><span class="p">)</span>
|
||
<span class="n">request</span><span class="o">.</span><span class="n">getParameters</span><span class="p">()</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">MAN_PARAMS</span><span class="p">)</span>
|
||
<span class="n">request</span><span class="o">.</span><span class="n">getParameters</span><span class="p">()</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">SIGT_PARAMS</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="available-location-names">
|
||
<h4>2.3 Available Location Names<a class="headerlink" href="#available-location-names" title="Permalink to this heading"></a></h4>
|
||
<p>When working with a new data type, it is often useful to investigate all
|
||
available options for a particular setting. Shown below is how to see
|
||
all available location names for a data request with type <strong>bufrua</strong>.
|
||
This step is not necessary if you already know exactly what the location
|
||
ID you’re interested in is.</p>
|
||
<blockquote>
|
||
<div><p><strong>Note:</strong> It is important to note the location names are listed by
|
||
their WMO Station ID. Their corresponding location and site
|
||
identifier can be looked up in <a class="reference external" href="https://data.un.org/Data.aspx?d=CLINO&f=ElementCode%3a15%3bCountryCode%3aUS&c=2,5,6,7,10,15,18,19,20,22,24,26,28,30,32,34,36,38,40,42,44,46&s=CountryName:asc,WmoStationNumber:asc,StatisticCode:asc&v=1">this table from
|
||
UNdata</a>.</p>
|
||
</div></blockquote>
|
||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">locations</span> <span class="o">=</span> <span class="n">DataAccessLayer</span><span class="o">.</span><span class="n">getAvailableLocationNames</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
||
<span class="n">locations</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="n">locations</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="s1">'21824'</span><span class="p">,</span> <span class="s1">'21946'</span><span class="p">,</span> <span class="s1">'24266'</span><span class="p">,</span> <span class="s1">'24343'</span><span class="p">,</span> <span class="s1">'24641'</span><span class="p">,</span> <span class="s1">'24688'</span><span class="p">,</span> <span class="s1">'24959'</span><span class="p">,</span> <span class="s1">'25123'</span><span class="p">,</span> <span class="s1">'25703'</span><span class="p">,</span> <span class="s1">'25913'</span><span class="p">,</span> <span class="s1">'31004'</span><span class="p">,</span> <span class="s1">'31088'</span><span class="p">,</span> <span class="s1">'31300'</span><span class="p">,</span> <span class="s1">'31369'</span><span class="p">,</span> <span class="s1">'31510'</span><span class="p">,</span> <span class="s1">'31538'</span><span class="p">,</span> <span class="s1">'31770'</span><span class="p">,</span> <span class="s1">'31873'</span><span class="p">,</span> <span class="s1">'32061'</span><span class="p">,</span> <span class="s1">'32098'</span><span class="p">,</span> <span class="s1">'32150'</span><span class="p">,</span> <span class="s1">'32389'</span><span class="p">,</span> <span class="s1">'32477'</span><span class="p">,</span> <span class="s1">'32540'</span><span class="p">,</span> <span class="s1">'32618'</span><span class="p">,</span> <span class="s1">'47122'</span><span class="p">,</span> <span class="s1">'47138'</span><span class="p">,</span> <span class="s1">'47158'</span><span class="p">,</span> <span class="s1">'47401'</span><span class="p">,</span> <span class="s1">'47412'</span><span class="p">,</span> <span class="s1">'47582'</span><span class="p">,</span> <span class="s1">'47646'</span><span class="p">,</span> <span class="s1">'47678'</span><span class="p">,</span> <span class="s1">'47807'</span><span class="p">,</span> <span class="s1">'47827'</span><span class="p">,</span> <span class="s1">'47909'</span><span class="p">,</span> <span class="s1">'47918'</span><span class="p">,</span> <span class="s1">'47945'</span><span class="p">,</span> <span class="s1">'47971'</span><span class="p">,</span> <span class="s1">'47991'</span><span class="p">,</span> <span class="s1">'70026'</span><span class="p">,</span> <span class="s1">'70133'</span><span class="p">,</span> <span class="s1">'70200'</span><span class="p">,</span> <span class="s1">'70219'</span><span class="p">,</span> <span class="s1">'70231'</span><span class="p">,</span> <span class="s1">'70261'</span><span class="p">,</span> <span class="s1">'70273'</span><span class="p">,</span> <span class="s1">'70308'</span><span class="p">,</span> <span class="s1">'70316'</span><span class="p">,</span> <span class="s1">'70326'</span><span class="p">,</span> <span class="s1">'70350'</span><span class="p">,</span> <span class="s1">'70361'</span><span class="p">,</span> <span class="s1">'70398'</span><span class="p">,</span> <span class="s1">'70414'</span><span class="p">,</span> <span class="s1">'71043'</span><span class="p">,</span> <span class="s1">'71081'</span><span class="p">,</span> <span class="s1">'71082'</span><span class="p">,</span> <span class="s1">'71109'</span><span class="p">,</span> <span class="s1">'71119'</span><span class="p">,</span> <span class="s1">'71603'</span><span class="p">,</span> <span class="s1">'71722'</span><span class="p">,</span> <span class="s1">'71802'</span><span class="p">,</span> <span class="s1">'71811'</span><span class="p">,</span> <span class="s1">'71815'</span><span class="p">,</span> <span class="s1">'71816'</span><span class="p">,</span> <span class="s1">'71823'</span><span class="p">,</span> <span class="s1">'71845'</span><span class="p">,</span> <span class="s1">'71867'</span><span class="p">,</span> <span class="s1">'71906'</span><span class="p">,</span> <span class="s1">'71907'</span><span class="p">,</span> <span class="s1">'71909'</span><span class="p">,</span> <span class="s1">'71913'</span><span class="p">,</span> <span class="s1">'71917'</span><span class="p">,</span> <span class="s1">'71924'</span><span class="p">,</span> <span class="s1">'71925'</span><span class="p">,</span> <span class="s1">'71926'</span><span class="p">,</span> <span class="s1">'71934'</span><span class="p">,</span> <span class="s1">'71945'</span><span class="p">,</span> <span class="s1">'71957'</span><span class="p">,</span> <span class="s1">'71964'</span><span class="p">,</span> <span class="s1">'72201'</span><span class="p">,</span> <span class="s1">'72202'</span><span class="p">,</span> <span class="s1">'72206'</span><span class="p">,</span> <span class="s1">'72208'</span><span class="p">,</span> <span class="s1">'72210'</span><span class="p">,</span> <span class="s1">'72214'</span><span class="p">,</span> <span class="s1">'72215'</span><span class="p">,</span> <span class="s1">'72221'</span><span class="p">,</span> <span class="s1">'72230'</span><span class="p">,</span> <span class="s1">'72233'</span><span class="p">,</span> <span class="s1">'72235'</span><span class="p">,</span> <span class="s1">'72240'</span><span class="p">,</span> <span class="s1">'72248'</span><span class="p">,</span> <span class="s1">'72249'</span><span class="p">,</span> <span class="s1">'72250'</span><span class="p">,</span> <span class="s1">'72251'</span><span class="p">,</span> <span class="s1">'72261'</span><span class="p">,</span> <span class="s1">'72265'</span><span class="p">,</span> <span class="s1">'72274'</span><span class="p">,</span> <span class="s1">'72293'</span><span class="p">,</span> <span class="s1">'72305'</span><span class="p">,</span> <span class="s1">'72317'</span><span class="p">,</span> <span class="s1">'72318'</span><span class="p">,</span> <span class="s1">'72327'</span><span class="p">,</span> <span class="s1">'72340'</span><span class="p">,</span> <span class="s1">'72357'</span><span class="p">,</span> <span class="s1">'72363'</span><span class="p">,</span> <span class="s1">'72364'</span><span class="p">,</span> <span class="s1">'72365'</span><span class="p">,</span> <span class="s1">'72376'</span><span class="p">,</span> <span class="s1">'72381'</span><span class="p">,</span> <span class="s1">'72388'</span><span class="p">,</span> <span class="s1">'72393'</span><span class="p">,</span> <span class="s1">'72402'</span><span class="p">,</span> <span class="s1">'72403'</span><span class="p">,</span> <span class="s1">'72426'</span><span class="p">,</span> <span class="s1">'72440'</span><span class="p">,</span> <span class="s1">'72451'</span><span class="p">,</span> <span class="s1">'72456'</span><span class="p">,</span> <span class="s1">'72469'</span><span class="p">,</span> <span class="s1">'72476'</span><span class="p">,</span> <span class="s1">'72489'</span><span class="p">,</span> <span class="s1">'72493'</span><span class="p">,</span> <span class="s1">'72501'</span><span class="p">,</span> <span class="s1">'72518'</span><span class="p">,</span> <span class="s1">'72520'</span><span class="p">,</span> <span class="s1">'72528'</span><span class="p">,</span> <span class="s1">'72558'</span><span class="p">,</span> <span class="s1">'72562'</span><span class="p">,</span> <span class="s1">'72572'</span><span class="p">,</span> <span class="s1">'72582'</span><span class="p">,</span> <span class="s1">'72597'</span><span class="p">,</span> <span class="s1">'72632'</span><span class="p">,</span> <span class="s1">'72634'</span><span class="p">,</span> <span class="s1">'72645'</span><span class="p">,</span> <span class="s1">'72649'</span><span class="p">,</span> <span class="s1">'72659'</span><span class="p">,</span> <span class="s1">'72662'</span><span class="p">,</span> <span class="s1">'72672'</span><span class="p">,</span> <span class="s1">'72681'</span><span class="p">,</span> <span class="s1">'72694'</span><span class="p">,</span> <span class="s1">'72712'</span><span class="p">,</span> <span class="s1">'72747'</span><span class="p">,</span> <span class="s1">'72764'</span><span class="p">,</span> <span class="s1">'72768'</span><span class="p">,</span> <span class="s1">'72776'</span><span class="p">,</span> <span class="s1">'72786'</span><span class="p">,</span> <span class="s1">'72797'</span><span class="p">,</span> <span class="s1">'74004'</span><span class="p">,</span> <span class="s1">'74005'</span><span class="p">,</span> <span class="s1">'74389'</span><span class="p">,</span> <span class="s1">'74455'</span><span class="p">,</span> <span class="s1">'74560'</span><span class="p">,</span> <span class="s1">'74794'</span><span class="p">,</span> <span class="s1">'78016'</span><span class="p">,</span> <span class="s1">'78384'</span><span class="p">,</span> <span class="s1">'78397'</span><span class="p">,</span> <span class="s1">'78486'</span><span class="p">,</span> <span class="s1">'78526'</span><span class="p">,</span> <span class="s1">'78583'</span><span class="p">,</span> <span class="s1">'78866'</span><span class="p">,</span> <span class="s1">'78954'</span><span class="p">,</span> <span class="s1">'78970'</span><span class="p">,</span> <span class="s1">'78988'</span><span class="p">,</span> <span class="s1">'80001'</span><span class="p">,</span> <span class="s1">'91165'</span><span class="p">,</span> <span class="s1">'91212'</span><span class="p">,</span> <span class="s1">'91285'</span><span class="p">,</span> <span class="s1">'91334'</span><span class="p">,</span> <span class="s1">'91348'</span><span class="p">,</span> <span class="s1">'91366'</span><span class="p">,</span> <span class="s1">'91376'</span><span class="p">,</span> <span class="s1">'91408'</span><span class="p">,</span> <span class="s1">'91413'</span><span class="p">,</span> <span class="s1">'91610'</span><span class="p">,</span> <span class="s1">'91643'</span><span class="p">,</span> <span class="s1">'91680'</span><span class="p">,</span> <span class="s1">'91765'</span><span class="p">,</span> <span class="s1">'94120'</span><span class="p">,</span> <span class="s1">'94203'</span><span class="p">,</span> <span class="s1">'94299'</span><span class="p">,</span> <span class="s1">'94332'</span><span class="p">,</span> <span class="s1">'94461'</span><span class="p">,</span> <span class="s1">'94510'</span><span class="p">,</span> <span class="s1">'94578'</span><span class="p">,</span> <span class="s1">'94637'</span><span class="p">,</span> <span class="s1">'94638'</span><span class="p">,</span> <span class="s1">'94653'</span><span class="p">,</span> <span class="s1">'94659'</span><span class="p">,</span> <span class="s1">'94672'</span><span class="p">,</span> <span class="s1">'94711'</span><span class="p">,</span> <span class="s1">'94776'</span><span class="p">,</span> <span class="s1">'94996'</span><span class="p">]</span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="setting-the-location-name">
|
||
<h4>2.4 Setting the Location Name<a class="headerlink" href="#setting-the-location-name" title="Permalink to this heading"></a></h4>
|
||
<p>In this case we’re setting the location name to the ID for <code class="docutils literal notranslate"><span class="pre">KLBF</span></code>
|
||
which is the North Platte Regional Airport/Lee Bird, Field in Nebraska.</p>
|
||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Set station ID (not name)</span>
|
||
<span class="n">request</span><span class="o">.</span><span class="n">setLocationNames</span><span class="p">(</span><span class="s2">"72562"</span><span class="p">)</span> <span class="c1">#KLBF</span>
|
||
</pre></div>
|
||
</div>
|
||
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html">Top</a></p>
|
||
</section>
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="filtering-by-time">
|
||
<h3>3 Filtering by Time<a class="headerlink" href="#filtering-by-time" title="Permalink to this heading"></a></h3>
|
||
<p>Models produce many different time variants during their runs, so let’s
|
||
limit the data to the most recent time and forecast run.</p>
|
||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Get all times</span>
|
||
<span class="n">datatimes</span> <span class="o">=</span> <span class="n">DataAccessLayer</span><span class="o">.</span><span class="n">getAvailableTimes</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html">Top</a></p>
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="get-the-data">
|
||
<h3>4 Get the Data!<a class="headerlink" href="#get-the-data" title="Permalink to this heading"></a></h3>
|
||
<p>Here we can now request our data response from the EDEX server with our
|
||
defined time filter.</p>
|
||
<p>Printing out some data from the first object in the response array can
|
||
help verify we received the data we were interested in.</p>
|
||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Get most recent record</span>
|
||
<span class="n">response</span> <span class="o">=</span> <span class="n">DataAccessLayer</span><span class="o">.</span><span class="n">getGeometryData</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="n">times</span><span class="o">=</span><span class="n">datatimes</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">validPeriod</span><span class="p">)</span>
|
||
<span class="n">obj</span> <span class="o">=</span> <span class="n">response</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"parms = "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">getParameters</span><span class="p">()))</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"site = "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">getLocationName</span><span class="p">()))</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"geom = "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">getGeometry</span><span class="p">()))</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"datetime = "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">getDataTime</span><span class="p">()))</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"reftime = "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">getDataTime</span><span class="p">()</span><span class="o">.</span><span class="n">getRefTime</span><span class="p">()))</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"fcstHour = "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">getDataTime</span><span class="p">()</span><span class="o">.</span><span class="n">getFcstTime</span><span class="p">()))</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"period = "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">obj</span><span class="o">.</span><span class="n">getDataTime</span><span class="p">()</span><span class="o">.</span><span class="n">getValidPeriod</span><span class="p">()))</span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">parms</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'tpSigT'</span><span class="p">,</span> <span class="s1">'prSigT'</span><span class="p">,</span> <span class="s1">'tdSigT'</span><span class="p">]</span>
|
||
<span class="n">site</span> <span class="o">=</span> <span class="mi">72562</span>
|
||
<span class="n">geom</span> <span class="o">=</span> <span class="n">POINT</span> <span class="p">(</span><span class="o">-</span><span class="mf">100.7005615234375</span> <span class="mf">41.14971923828125</span><span class="p">)</span>
|
||
<span class="n">datetime</span> <span class="o">=</span> <span class="mi">2023</span><span class="o">-</span><span class="mi">05</span><span class="o">-</span><span class="mi">25</span> <span class="mi">12</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span>
|
||
<span class="n">reftime</span> <span class="o">=</span> <span class="n">May</span> <span class="mi">25</span> <span class="mi">23</span> <span class="mi">12</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span> <span class="n">GMT</span>
|
||
<span class="n">fcstHour</span> <span class="o">=</span> <span class="mi">0</span>
|
||
<span class="n">period</span> <span class="o">=</span> <span class="p">(</span><span class="n">May</span> <span class="mi">25</span> <span class="mi">23</span> <span class="mi">12</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span> <span class="p">,</span> <span class="n">May</span> <span class="mi">25</span> <span class="mi">23</span> <span class="mi">12</span><span class="p">:</span><span class="mi">00</span><span class="p">:</span><span class="mi">00</span> <span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html">Top</a></p>
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="use-the-data">
|
||
<h3>5 Use the Data!<a class="headerlink" href="#use-the-data" title="Permalink to this heading"></a></h3>
|
||
<p>Since we filtered on time, and requested the data in the previous cell,
|
||
we now have a <code class="docutils literal notranslate"><span class="pre">response</span></code> object we can work with.</p>
|
||
<section id="prepare-data-objects">
|
||
<h4>5.1 Prepare Data Objects<a class="headerlink" href="#prepare-data-objects" title="Permalink to this heading"></a></h4>
|
||
<p>Here we construct arrays for each parameter to plot (temperature,
|
||
dewpoint, pressure, and wind components). After populating each of the
|
||
arrays, we sort and mask missing data.</p>
|
||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Initialize data arrays</span>
|
||
<span class="n">prMan</span><span class="p">,</span><span class="n">wdMan</span><span class="p">,</span><span class="n">wsMan</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([]),</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([]),</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([])</span>
|
||
<span class="n">prSig</span><span class="p">,</span><span class="n">tpSig</span><span class="p">,</span><span class="n">tdSig</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([]),</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([]),</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([])</span>
|
||
<span class="n">manGeos</span> <span class="o">=</span> <span class="p">[]</span>
|
||
<span class="n">sigtGeos</span> <span class="o">=</span> <span class="p">[]</span>
|
||
|
||
<span class="c1"># Build arrays</span>
|
||
<span class="k">for</span> <span class="n">ob</span> <span class="ow">in</span> <span class="n">response</span><span class="p">:</span>
|
||
<span class="n">parm_array</span> <span class="o">=</span> <span class="n">ob</span><span class="o">.</span><span class="n">getParameters</span><span class="p">()</span>
|
||
<span class="k">if</span> <span class="nb">set</span><span class="p">(</span><span class="n">parm_array</span><span class="p">)</span> <span class="o">&</span> <span class="n">MAN_PARAMS</span><span class="p">:</span>
|
||
<span class="n">manGeos</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ob</span><span class="p">)</span>
|
||
<span class="n">prMan</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">prMan</span><span class="p">,</span><span class="n">ob</span><span class="o">.</span><span class="n">getNumber</span><span class="p">(</span><span class="s2">"prMan"</span><span class="p">))</span>
|
||
<span class="n">wdMan</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">wdMan</span><span class="p">,</span><span class="n">ob</span><span class="o">.</span><span class="n">getNumber</span><span class="p">(</span><span class="s2">"wdMan"</span><span class="p">))</span>
|
||
<span class="n">wsMan</span><span class="p">,</span> <span class="n">wsUnit</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">wsMan</span><span class="p">,</span><span class="n">ob</span><span class="o">.</span><span class="n">getNumber</span><span class="p">(</span><span class="s2">"wsMan"</span><span class="p">)),</span> <span class="n">ob</span><span class="o">.</span><span class="n">getUnit</span><span class="p">(</span><span class="s2">"wsMan"</span><span class="p">)</span>
|
||
<span class="k">continue</span>
|
||
<span class="k">if</span> <span class="nb">set</span><span class="p">(</span><span class="n">parm_array</span><span class="p">)</span> <span class="o">&</span> <span class="n">SIGT_PARAMS</span><span class="p">:</span>
|
||
<span class="n">sigtGeos</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">ob</span><span class="p">)</span>
|
||
<span class="n">prSig</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">prSig</span><span class="p">,</span><span class="n">ob</span><span class="o">.</span><span class="n">getNumber</span><span class="p">(</span><span class="s2">"prSigT"</span><span class="p">))</span>
|
||
<span class="n">tpSig</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tpSig</span><span class="p">,</span><span class="n">ob</span><span class="o">.</span><span class="n">getNumber</span><span class="p">(</span><span class="s2">"tpSigT"</span><span class="p">))</span>
|
||
<span class="n">tpUnit</span> <span class="o">=</span> <span class="n">ob</span><span class="o">.</span><span class="n">getUnit</span><span class="p">(</span><span class="s2">"tpSigT"</span><span class="p">)</span>
|
||
<span class="n">tdSig</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tdSig</span><span class="p">,</span><span class="n">ob</span><span class="o">.</span><span class="n">getNumber</span><span class="p">(</span><span class="s2">"tdSigT"</span><span class="p">))</span>
|
||
<span class="k">continue</span>
|
||
|
||
<span class="c1"># Sort mandatory levels (but not sigT levels) because of the 1000.MB interpolation inclusion</span>
|
||
<span class="n">ps</span> <span class="o">=</span> <span class="n">prMan</span><span class="o">.</span><span class="n">argsort</span><span class="p">()[::</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||
<span class="n">wpres</span> <span class="o">=</span> <span class="n">prMan</span><span class="p">[</span><span class="n">ps</span><span class="p">]</span>
|
||
<span class="n">direc</span> <span class="o">=</span> <span class="n">wdMan</span><span class="p">[</span><span class="n">ps</span><span class="p">]</span>
|
||
<span class="n">spd</span> <span class="o">=</span> <span class="n">wsMan</span><span class="p">[</span><span class="n">ps</span><span class="p">]</span>
|
||
|
||
<span class="c1"># Flag missing data</span>
|
||
<span class="n">prSig</span><span class="p">[</span><span class="n">prSig</span> <span class="o"><=</span> <span class="o">-</span><span class="mi">9999</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span>
|
||
<span class="n">tpSig</span><span class="p">[</span><span class="n">tpSig</span> <span class="o"><=</span> <span class="o">-</span><span class="mi">9999</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span>
|
||
<span class="n">tdSig</span><span class="p">[</span><span class="n">tdSig</span> <span class="o"><=</span> <span class="o">-</span><span class="mi">9999</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span>
|
||
<span class="n">wpres</span><span class="p">[</span><span class="n">wpres</span> <span class="o"><=</span> <span class="o">-</span><span class="mi">9999</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span>
|
||
<span class="n">direc</span><span class="p">[</span><span class="n">direc</span> <span class="o"><=</span> <span class="o">-</span><span class="mi">9999</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span>
|
||
<span class="n">spd</span><span class="p">[</span><span class="n">spd</span> <span class="o"><=</span> <span class="o">-</span><span class="mi">9999</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">nan</span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="convert-units">
|
||
<h4>5.2 Convert Units<a class="headerlink" href="#convert-units" title="Permalink to this heading"></a></h4>
|
||
<p>We need to modify the units several of the data parameters are returned
|
||
in. Here we convert the units for Temperature and Dewpoint from Kelvin
|
||
to Celsius, convert pressure to milibars, and extract wind for both the
|
||
u and v directional components in Knots and Radians.</p>
|
||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># assign units</span>
|
||
<span class="n">p</span> <span class="o">=</span> <span class="p">(</span><span class="n">prSig</span><span class="o">/</span><span class="mi">100</span><span class="p">)</span> <span class="o">*</span> <span class="n">units</span><span class="o">.</span><span class="n">mbar</span>
|
||
<span class="n">wpres</span> <span class="o">=</span> <span class="p">(</span><span class="n">wpres</span><span class="o">/</span><span class="mi">100</span><span class="p">)</span> <span class="o">*</span> <span class="n">units</span><span class="o">.</span><span class="n">mbar</span>
|
||
<span class="n">u</span><span class="p">,</span><span class="n">v</span> <span class="o">=</span> <span class="n">wind_components</span><span class="p">(</span><span class="n">spd</span> <span class="o">*</span> <span class="n">units</span><span class="o">.</span><span class="n">knots</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">deg2rad</span><span class="p">(</span><span class="n">direc</span><span class="p">))</span>
|
||
|
||
<span class="k">if</span> <span class="n">tpUnit</span> <span class="o">==</span> <span class="s1">'K'</span><span class="p">:</span>
|
||
<span class="n">T</span> <span class="o">=</span> <span class="p">(</span><span class="n">tpSig</span><span class="o">-</span><span class="mf">273.15</span><span class="p">)</span> <span class="o">*</span> <span class="n">units</span><span class="o">.</span><span class="n">degC</span>
|
||
<span class="n">Td</span> <span class="o">=</span> <span class="p">(</span><span class="n">tdSig</span><span class="o">-</span><span class="mf">273.15</span><span class="p">)</span> <span class="o">*</span> <span class="n">units</span><span class="o">.</span><span class="n">degC</span>
|
||
</pre></div>
|
||
</div>
|
||
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html">Top</a></p>
|
||
</section>
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="plot-the-data">
|
||
<h3>6 Plot the Data!<a class="headerlink" href="#plot-the-data" title="Permalink to this heading"></a></h3>
|
||
<p>Create and display SkewT and Hodograph plots using MetPy.</p>
|
||
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Create SkewT/LogP</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'figure.figsize'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">12</span><span class="p">)</span>
|
||
<span class="n">skew</span> <span class="o">=</span> <span class="n">SkewT</span><span class="p">()</span>
|
||
<span class="n">skew</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">T</span><span class="p">,</span> <span class="s1">'r'</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
||
<span class="n">skew</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">Td</span><span class="p">,</span> <span class="s1">'g'</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
||
<span class="n">skew</span><span class="o">.</span><span class="n">plot_barbs</span><span class="p">(</span><span class="n">wpres</span><span class="p">,</span> <span class="n">u</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span>
|
||
<span class="n">skew</span><span class="o">.</span><span class="n">ax</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="mi">1000</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
|
||
<span class="n">skew</span><span class="o">.</span><span class="n">ax</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="o">-</span><span class="mi">60</span><span class="p">,</span> <span class="mi">30</span><span class="p">)</span>
|
||
|
||
<span class="n">title_string</span> <span class="o">=</span> <span class="s2">" T(F) Td "</span>
|
||
<span class="n">title_string</span> <span class="o">+=</span> <span class="s2">" "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">ob</span><span class="o">.</span><span class="n">getString</span><span class="p">(</span><span class="s2">"staName"</span><span class="p">))</span>
|
||
<span class="n">title_string</span> <span class="o">+=</span> <span class="s2">" "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">ob</span><span class="o">.</span><span class="n">getDataTime</span><span class="p">()</span><span class="o">.</span><span class="n">getRefTime</span><span class="p">())</span>
|
||
<span class="n">title_string</span> <span class="o">+=</span> <span class="s2">" ("</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">ob</span><span class="o">.</span><span class="n">getNumber</span><span class="p">(</span><span class="s2">"staElev"</span><span class="p">))</span> <span class="o">+</span> <span class="s2">"m elev)"</span>
|
||
<span class="n">title_string</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="nb">round</span><span class="p">(</span><span class="n">T</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="s1">'degF'</span><span class="p">)</span><span class="o">.</span><span class="n">item</span><span class="p">(),</span><span class="mi">1</span><span class="p">))</span>
|
||
<span class="n">title_string</span> <span class="o">+=</span> <span class="s2">" "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="nb">round</span><span class="p">(</span><span class="n">Td</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="s1">'degF'</span><span class="p">)</span><span class="o">.</span><span class="n">item</span><span class="p">(),</span><span class="mi">1</span><span class="p">))</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="n">title_string</span><span class="p">,</span> <span class="n">loc</span><span class="o">=</span><span class="s1">'left'</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Calculate LCL height and plot as black dot</span>
|
||
<span class="n">lcl_pressure</span><span class="p">,</span> <span class="n">lcl_temperature</span> <span class="o">=</span> <span class="n">lcl</span><span class="p">(</span><span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">T</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">Td</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||
<span class="n">skew</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">lcl_pressure</span><span class="p">,</span> <span class="n">lcl_temperature</span><span class="p">,</span> <span class="s1">'ko'</span><span class="p">,</span> <span class="n">markerfacecolor</span><span class="o">=</span><span class="s1">'black'</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Calculate full parcel profile and add to plot as black line</span>
|
||
<span class="n">prof</span> <span class="o">=</span> <span class="n">parcel_profile</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">T</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">Td</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="s1">'degC'</span><span class="p">)</span>
|
||
<span class="n">skew</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">prof</span><span class="p">,</span> <span class="s1">'k'</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
||
|
||
<span class="c1"># An example of a slanted line at constant T -- in this case the 0 isotherm</span>
|
||
<span class="n">l</span> <span class="o">=</span> <span class="n">skew</span><span class="o">.</span><span class="n">ax</span><span class="o">.</span><span class="n">axvline</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">'c'</span><span class="p">,</span> <span class="n">linestyle</span><span class="o">=</span><span class="s1">'--'</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Draw hodograph</span>
|
||
<span class="n">ax_hod</span> <span class="o">=</span> <span class="n">inset_axes</span><span class="p">(</span><span class="n">skew</span><span class="o">.</span><span class="n">ax</span><span class="p">,</span> <span class="s1">'30%'</span><span class="p">,</span> <span class="s1">'30%'</span><span class="p">,</span> <span class="n">loc</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>
|
||
<span class="n">h</span> <span class="o">=</span> <span class="n">Hodograph</span><span class="p">(</span><span class="n">ax_hod</span><span class="p">,</span> <span class="n">component_range</span><span class="o">=</span><span class="nb">max</span><span class="p">(</span><span class="n">wsMan</span><span class="p">))</span>
|
||
<span class="n">h</span><span class="o">.</span><span class="n">add_grid</span><span class="p">(</span><span class="n">increment</span><span class="o">=</span><span class="mi">20</span><span class="p">)</span>
|
||
<span class="n">h</span><span class="o">.</span><span class="n">plot_colormapped</span><span class="p">(</span><span class="n">u</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">spd</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Show the plot</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
<img alt="../../_images/Upper_Air_BUFR_Soundings_28_0.png" src="../../_images/Upper_Air_BUFR_Soundings_28_0.png" />
|
||
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html">Top</a></p>
|
||
</section>
|
||
<hr class="docutils" />
|
||
<section id="see-also">
|
||
<h3>7 See Also<a class="headerlink" href="#see-also" title="Permalink to this heading"></a></h3>
|
||
<section id="related-notebooks">
|
||
<h4>7.1 Related Notebooks<a class="headerlink" href="#related-notebooks" title="Permalink to this heading"></a></h4>
|
||
<ul class="simple">
|
||
<li><p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Grid_Levels_and_Parameters.html">Grid Levels and
|
||
Parameters</a></p></li>
|
||
<li><p><a class="reference external" href="http://unidata.github.io/python-awips/examples/generated/Model_Sounding_Data.html">Model Sounding
|
||
Data</a></p></li>
|
||
<li><p><a class="reference external" href="http://unidata.github.io/python-awips/examples/generated/Forecast_Model_Vertical_Sounding.html">Forecast Model Vertical
|
||
Sounding</a></p></li>
|
||
</ul>
|
||
</section>
|
||
<section id="additional-documentation">
|
||
<h4>7.2 Additional Documentation<a class="headerlink" href="#additional-documentation" title="Permalink to this heading"></a></h4>
|
||
<p><strong>python-awips:</strong></p>
|
||
<ul class="simple">
|
||
<li><p><a class="reference external" href="http://unidata.github.io/python-awips/api/DataAccessLayer.html">awips.DataAccessLayer</a></p></li>
|
||
<li><p><a class="reference external" href="http://unidata.github.io/python-awips/api/PyGeometryData.html">awips.PyGeometryData</a></p></li>
|
||
</ul>
|
||
<p><strong>matplotlib:</strong></p>
|
||
<ul class="simple">
|
||
<li><p><a class="reference external" href="https://matplotlib.org/3.3.3/api/_as_gen/matplotlib.pyplot.html">matplotlib.pyplot</a></p></li>
|
||
</ul>
|
||
<p><strong>MetPy</strong></p>
|
||
<ul class="simple">
|
||
<li><p><a class="reference external" href="https://unidata.github.io/MetPy/latest/api/generated/metpy.calc.wind_components.html">metpy.wind_components</a></p></li>
|
||
<li><p><a class="reference external" href="https://unidata.github.io/MetPy/latest/api/generated/metpy.calc.lcl.html">metpy.lcl</a>
|
||
(Lifted Condensation Level)</p></li>
|
||
<li><p><a class="reference external" href="https://unidata.github.io/MetPy/latest/api/generated/metpy.calc.parcel_profile.html">metpy.parcel_profile</a></p></li>
|
||
<li><p><a class="reference external" href="https://unidata.github.io/MetPy/latest/api/generated/metpy.plots.SkewT.html">metpy.skewt</a></p></li>
|
||
<li><p><a class="reference external" href="https://unidata.github.io/MetPy/latest/api/generated/metpy.plots.Hodograph.html">metpy.hodograph</a></p></li>
|
||
</ul>
|
||
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/Upper_Air_BUFR_Soundings.html">Top</a></p>
|
||
<hr class="docutils" />
|
||
</section>
|
||
</section>
|
||
</section>
|
||
</section>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||
<a href="Satellite_Imagery.html" class="btn btn-neutral float-left" title="Satellite Imagery" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
<a href="Watch_Warning_and_Advisory_Plotting.html" class="btn btn-neutral float-right" title="Watch Warning and Advisory Plotting" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||
</div>
|
||
|
||
<hr/>
|
||
|
||
<div role="contentinfo">
|
||
<p>© Copyright 2018, Unidata.</p>
|
||
</div>
|
||
|
||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||
|
||
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<script>
|
||
jQuery(function () {
|
||
SphinxRtdTheme.Navigation.enable(true);
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html> |