mirror of
https://github.com/Unidata/python-awips.git
synced 2025-02-23 22:57:56 -05:00
420 lines
48 KiB
HTML
420 lines
48 KiB
HTML
|
|
||
|
|
||
|
<!DOCTYPE html>
|
||
|
<html class="writer-html5" lang="en" >
|
||
|
<head>
|
||
|
<meta charset="utf-8">
|
||
|
|
||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
|
||
|
<title>METAR Station Plot with MetPy — python-awips documentation</title>
|
||
|
|
||
|
|
||
|
|
||
|
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
|
||
|
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<!--[if lt IE 9]>
|
||
|
<script src="../../_static/js/html5shiv.min.js"></script>
|
||
|
<![endif]-->
|
||
|
|
||
|
|
||
|
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||
|
<script src="../../_static/jquery.js"></script>
|
||
|
<script src="../../_static/underscore.js"></script>
|
||
|
<script src="../../_static/doctools.js"></script>
|
||
|
<script src="../../_static/language_data.js"></script>
|
||
|
|
||
|
<script type="text/javascript" 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="Map Resources and Topography" href="Map_Resources_and_Topography.html" />
|
||
|
<link rel="prev" title="Grid Levels and Parameters" href="Grid_Levels_and_Parameters.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" alt="Documentation Home"> python-awips
|
||
|
|
||
|
|
||
|
|
||
|
</a>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<div class="version">
|
||
|
18.1.7
|
||
|
</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" />
|
||
|
<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="main navigation">
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<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="AWIPS_Grids_and_Cartopy.html">AWIPS Grids and Cartopy</a></li>
|
||
|
<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="Forecast_Model_Vertical_Sounding.html">Forecast Model Vertical Sounding</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</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 current"><a class="current reference internal" href="#">METAR Station Plot with MetPy</a><ul>
|
||
|
<li class="toctree-l3"><a class="reference internal" href="#metpy-surface-obs-plot">MetPy Surface Obs Plot</a></li>
|
||
|
</ul>
|
||
|
</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"><a class="reference internal" href="Upper_Air_BUFR_Soundings.html">Upper Air BUFR Soundings</a></li>
|
||
|
<li class="toctree-l2"><a class="reference internal" href="Watch_and_Warning_Polygons.html">Watch and Warning Polygons</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 internal" href="../../gridparms.html">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="top navigation">
|
||
|
|
||
|
<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="breadcrumbs navigation">
|
||
|
|
||
|
<ul class="wy-breadcrumbs">
|
||
|
|
||
|
<li><a href="../../index.html" class="icon icon-home"></a> »</li>
|
||
|
|
||
|
<li><a href="../index.html">Data Plotting Examples</a> »</li>
|
||
|
|
||
|
<li>METAR Station Plot with MetPy</li>
|
||
|
|
||
|
|
||
|
<li class="wy-breadcrumbs-aside">
|
||
|
|
||
|
|
||
|
<a href="../../_sources/examples/generated/METAR_Station_Plot_with_MetPy.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">
|
||
|
|
||
|
<div class="section" id="metar-station-plot-with-metpy">
|
||
|
<h1>METAR Station Plot with MetPy<a class="headerlink" href="#metar-station-plot-with-metpy" title="Permalink to this headline">¶</a></h1>
|
||
|
<p><a class="reference external" href="http://nbviewer.ipython.org/github/Unidata/python-awips/blob/master/examples/notebooks/METAR_Station_Plot_with_MetPy.ipynb">Notebook</a>
|
||
|
This exercise creates a METAR plot for North America using AWIPS METAR
|
||
|
observations (datatype <em>obs</em>) and MetPy.</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">from</span> <span class="nn">dynamicserialize.dstypes.com.raytheon.uf.common.time</span> <span class="kn">import</span> <span class="n">TimeRange</span>
|
||
|
<span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span><span class="p">,</span> <span class="n">timedelta</span>
|
||
|
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
||
|
<span class="kn">import</span> <span class="nn">cartopy.crs</span> <span class="k">as</span> <span class="nn">ccrs</span>
|
||
|
<span class="kn">import</span> <span class="nn">cartopy.feature</span> <span class="k">as</span> <span class="nn">cfeature</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">metpy.calc</span> <span class="kn">import</span> <span class="n">wind_components</span>
|
||
|
<span class="kn">from</span> <span class="nn">metpy.plots</span> <span class="kn">import</span> <span class="n">StationPlot</span><span class="p">,</span> <span class="n">StationPlotLayout</span>
|
||
|
<span class="kn">from</span> <span class="nn">metpy.units</span> <span class="kn">import</span> <span class="n">units</span>
|
||
|
<span class="kn">import</span> <span class="nn">warnings</span>
|
||
|
<span class="o">%</span><span class="k">matplotlib</span> inline
|
||
|
<span class="n">warnings</span><span class="o">.</span><span class="n">filterwarnings</span><span class="p">(</span><span class="s2">"ignore"</span><span class="p">,</span><span class="n">category</span> <span class="o">=</span><span class="ne">RuntimeWarning</span><span class="p">)</span>
|
||
|
|
||
|
<span class="k">def</span> <span class="nf">get_cloud_cover</span><span class="p">(</span><span class="n">code</span><span class="p">):</span>
|
||
|
<span class="k">if</span> <span class="s1">'OVC'</span> <span class="ow">in</span> <span class="n">code</span><span class="p">:</span>
|
||
|
<span class="k">return</span> <span class="mf">1.0</span>
|
||
|
<span class="k">elif</span> <span class="s1">'BKN'</span> <span class="ow">in</span> <span class="n">code</span><span class="p">:</span>
|
||
|
<span class="k">return</span> <span class="mf">6.0</span><span class="o">/</span><span class="mf">8.0</span>
|
||
|
<span class="k">elif</span> <span class="s1">'SCT'</span> <span class="ow">in</span> <span class="n">code</span><span class="p">:</span>
|
||
|
<span class="k">return</span> <span class="mf">4.0</span><span class="o">/</span><span class="mf">8.0</span>
|
||
|
<span class="k">elif</span> <span class="s1">'FEW'</span> <span class="ow">in</span> <span class="n">code</span><span class="p">:</span>
|
||
|
<span class="k">return</span> <span class="mf">2.0</span><span class="o">/</span><span class="mf">8.0</span>
|
||
|
<span class="k">else</span><span class="p">:</span>
|
||
|
<span class="k">return</span> <span class="mi">0</span>
|
||
|
|
||
|
<span class="c1"># Pull out these specific stations (prepend K for AWIPS identifiers)</span>
|
||
|
<span class="n">selected</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'PDX'</span><span class="p">,</span> <span class="s1">'OKC'</span><span class="p">,</span> <span class="s1">'ICT'</span><span class="p">,</span> <span class="s1">'GLD'</span><span class="p">,</span> <span class="s1">'MEM'</span><span class="p">,</span> <span class="s1">'BOS'</span><span class="p">,</span> <span class="s1">'MIA'</span><span class="p">,</span> <span class="s1">'MOB'</span><span class="p">,</span> <span class="s1">'ABQ'</span><span class="p">,</span> <span class="s1">'PHX'</span><span class="p">,</span> <span class="s1">'TTF'</span><span class="p">,</span>
|
||
|
<span class="s1">'ORD'</span><span class="p">,</span> <span class="s1">'BIL'</span><span class="p">,</span> <span class="s1">'BIS'</span><span class="p">,</span> <span class="s1">'CPR'</span><span class="p">,</span> <span class="s1">'LAX'</span><span class="p">,</span> <span class="s1">'ATL'</span><span class="p">,</span> <span class="s1">'MSP'</span><span class="p">,</span> <span class="s1">'SLC'</span><span class="p">,</span> <span class="s1">'DFW'</span><span class="p">,</span> <span class="s1">'NYC'</span><span class="p">,</span> <span class="s1">'PHL'</span><span class="p">,</span>
|
||
|
<span class="s1">'PIT'</span><span class="p">,</span> <span class="s1">'IND'</span><span class="p">,</span> <span class="s1">'OLY'</span><span class="p">,</span> <span class="s1">'SYR'</span><span class="p">,</span> <span class="s1">'LEX'</span><span class="p">,</span> <span class="s1">'CHS'</span><span class="p">,</span> <span class="s1">'TLH'</span><span class="p">,</span> <span class="s1">'HOU'</span><span class="p">,</span> <span class="s1">'GJT'</span><span class="p">,</span> <span class="s1">'LBB'</span><span class="p">,</span> <span class="s1">'LSV'</span><span class="p">,</span>
|
||
|
<span class="s1">'GRB'</span><span class="p">,</span> <span class="s1">'CLT'</span><span class="p">,</span> <span class="s1">'LNK'</span><span class="p">,</span> <span class="s1">'DSM'</span><span class="p">,</span> <span class="s1">'BOI'</span><span class="p">,</span> <span class="s1">'FSD'</span><span class="p">,</span> <span class="s1">'RAP'</span><span class="p">,</span> <span class="s1">'RIC'</span><span class="p">,</span> <span class="s1">'JAN'</span><span class="p">,</span> <span class="s1">'HSV'</span><span class="p">,</span> <span class="s1">'CRW'</span><span class="p">,</span>
|
||
|
<span class="s1">'SAT'</span><span class="p">,</span> <span class="s1">'BUY'</span><span class="p">,</span> <span class="s1">'0CO'</span><span class="p">,</span> <span class="s1">'ZPC'</span><span class="p">,</span> <span class="s1">'VIH'</span><span class="p">,</span> <span class="s1">'BDG'</span><span class="p">,</span> <span class="s1">'MLF'</span><span class="p">,</span> <span class="s1">'ELY'</span><span class="p">,</span> <span class="s1">'WMC'</span><span class="p">,</span> <span class="s1">'OTH'</span><span class="p">,</span> <span class="s1">'CAR'</span><span class="p">,</span>
|
||
|
<span class="s1">'LMT'</span><span class="p">,</span> <span class="s1">'RDM'</span><span class="p">,</span> <span class="s1">'PDT'</span><span class="p">,</span> <span class="s1">'SEA'</span><span class="p">,</span> <span class="s1">'UIL'</span><span class="p">,</span> <span class="s1">'EPH'</span><span class="p">,</span> <span class="s1">'PUW'</span><span class="p">,</span> <span class="s1">'COE'</span><span class="p">,</span> <span class="s1">'MLP'</span><span class="p">,</span> <span class="s1">'PIH'</span><span class="p">,</span> <span class="s1">'IDA'</span><span class="p">,</span>
|
||
|
<span class="s1">'MSO'</span><span class="p">,</span> <span class="s1">'ACV'</span><span class="p">,</span> <span class="s1">'HLN'</span><span class="p">,</span> <span class="s1">'BIL'</span><span class="p">,</span> <span class="s1">'OLF'</span><span class="p">,</span> <span class="s1">'RUT'</span><span class="p">,</span> <span class="s1">'PSM'</span><span class="p">,</span> <span class="s1">'JAX'</span><span class="p">,</span> <span class="s1">'TPA'</span><span class="p">,</span> <span class="s1">'SHV'</span><span class="p">,</span> <span class="s1">'MSY'</span><span class="p">,</span>
|
||
|
<span class="s1">'ELP'</span><span class="p">,</span> <span class="s1">'RNO'</span><span class="p">,</span> <span class="s1">'FAT'</span><span class="p">,</span> <span class="s1">'SFO'</span><span class="p">,</span> <span class="s1">'NYL'</span><span class="p">,</span> <span class="s1">'BRO'</span><span class="p">,</span> <span class="s1">'MRF'</span><span class="p">,</span> <span class="s1">'DRT'</span><span class="p">,</span> <span class="s1">'FAR'</span><span class="p">,</span> <span class="s1">'BDE'</span><span class="p">,</span> <span class="s1">'DLH'</span><span class="p">,</span>
|
||
|
<span class="s1">'HOT'</span><span class="p">,</span> <span class="s1">'LBF'</span><span class="p">,</span> <span class="s1">'FLG'</span><span class="p">,</span> <span class="s1">'CLE'</span><span class="p">,</span> <span class="s1">'UNV'</span><span class="p">]</span>
|
||
|
<span class="n">selected</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'K</span><span class="si">{0}</span><span class="s1">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">id</span><span class="p">)</span> <span class="k">for</span> <span class="nb">id</span> <span class="ow">in</span> <span class="n">selected</span><span class="p">]</span>
|
||
|
<span class="n">data_arr</span> <span class="o">=</span> <span class="p">[]</span>
|
||
|
</pre></div>
|
||
|
</div>
|
||
|
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># EDEX Request</span>
|
||
|
<span class="n">edexServer</span> <span class="o">=</span> <span class="s2">"edex-cloud.unidata.ucar.edu"</span>
|
||
|
<span class="n">DataAccessLayer</span><span class="o">.</span><span class="n">changeEDEXHost</span><span class="p">(</span><span class="n">edexServer</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="s2">"obs"</span><span class="p">)</span>
|
||
|
<span class="n">availableProducts</span> <span class="o">=</span> <span class="n">DataAccessLayer</span><span class="o">.</span><span class="n">getAvailableParameters</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
|
||
|
|
||
|
<span class="n">single_value_params</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"timeObs"</span><span class="p">,</span> <span class="s2">"stationName"</span><span class="p">,</span> <span class="s2">"longitude"</span><span class="p">,</span> <span class="s2">"latitude"</span><span class="p">,</span>
|
||
|
<span class="s2">"temperature"</span><span class="p">,</span> <span class="s2">"dewpoint"</span><span class="p">,</span> <span class="s2">"windDir"</span><span class="p">,</span>
|
||
|
<span class="s2">"windSpeed"</span><span class="p">,</span> <span class="s2">"seaLevelPress"</span><span class="p">]</span>
|
||
|
<span class="n">multi_value_params</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"presWeather"</span><span class="p">,</span> <span class="s2">"skyCover"</span><span class="p">,</span> <span class="s2">"skyLayerBase"</span><span class="p">]</span>
|
||
|
<span class="n">pres_weather</span><span class="p">,</span> <span class="n">sky_cov</span><span class="p">,</span> <span class="n">sky_layer_base</span> <span class="o">=</span> <span class="p">[],[],[]</span>
|
||
|
<span class="n">params</span> <span class="o">=</span> <span class="n">single_value_params</span> <span class="o">+</span> <span class="n">multi_value_params</span>
|
||
|
<span class="n">obs</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">({</span><span class="n">params</span><span class="p">:</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">params</span> <span class="ow">in</span> <span class="n">params</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="o">*</span><span class="p">(</span><span class="n">params</span><span class="p">))</span>
|
||
|
<span class="n">request</span><span class="o">.</span><span class="n">setLocationNames</span><span class="p">(</span><span class="o">*</span><span class="p">(</span><span class="n">selected</span><span class="p">))</span>
|
||
|
</pre></div>
|
||
|
</div>
|
||
|
<p>Here we use the Python-AWIPS class <strong>TimeRange</strong> to prepare a beginning
|
||
|
and end time span for requesting observations (the last hour):</p>
|
||
|
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Time range</span>
|
||
|
<span class="n">lastHourDateTime</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">utcnow</span><span class="p">()</span> <span class="o">-</span> <span class="n">timedelta</span><span class="p">(</span><span class="n">hours</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span>
|
||
|
<span class="n">start</span> <span class="o">=</span> <span class="n">lastHourDateTime</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'%Y-%m-</span><span class="si">%d</span><span class="s1"> %H'</span><span class="p">)</span>
|
||
|
<span class="n">beginRange</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span> <span class="n">start</span> <span class="o">+</span> <span class="s2">":00:00"</span><span class="p">,</span> <span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2"> %H:%M:%S"</span><span class="p">)</span>
|
||
|
<span class="n">endRange</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span> <span class="n">start</span> <span class="o">+</span> <span class="s2">":59:59"</span><span class="p">,</span> <span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2"> %H:%M:%S"</span><span class="p">)</span>
|
||
|
<span class="n">timerange</span> <span class="o">=</span> <span class="n">TimeRange</span><span class="p">(</span><span class="n">beginRange</span><span class="p">,</span> <span class="n">endRange</span><span class="p">)</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">timerange</span><span class="p">)</span>
|
||
|
</pre></div>
|
||
|
</div>
|
||
|
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">station_names</span> <span class="o">=</span> <span class="p">[]</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">avail_params</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="s2">"presWeather"</span> <span class="ow">in</span> <span class="n">avail_params</span><span class="p">:</span>
|
||
|
<span class="n">pres_weather</span><span class="o">.</span><span class="n">append</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">"presWeather"</span><span class="p">))</span>
|
||
|
<span class="k">elif</span> <span class="s2">"skyCover"</span> <span class="ow">in</span> <span class="n">avail_params</span> <span class="ow">and</span> <span class="s2">"skyLayerBase"</span> <span class="ow">in</span> <span class="n">avail_params</span><span class="p">:</span>
|
||
|
<span class="n">sky_cov</span><span class="o">.</span><span class="n">append</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">"skyCover"</span><span class="p">))</span>
|
||
|
<span class="n">sky_layer_base</span><span class="o">.</span><span class="n">append</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">"skyLayerBase"</span><span class="p">))</span>
|
||
|
<span class="k">else</span><span class="p">:</span>
|
||
|
<span class="c1"># If we already have a record for this stationName, skip</span>
|
||
|
<span class="k">if</span> <span class="n">ob</span><span class="o">.</span><span class="n">getString</span><span class="p">(</span><span class="s1">'stationName'</span><span class="p">)</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">station_names</span><span class="p">:</span>
|
||
|
<span class="n">station_names</span><span class="o">.</span><span class="n">append</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="s1">'stationName'</span><span class="p">))</span>
|
||
|
<span class="k">for</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">single_value_params</span><span class="p">:</span>
|
||
|
<span class="k">if</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">avail_params</span><span class="p">:</span>
|
||
|
<span class="k">if</span> <span class="n">param</span> <span class="o">==</span> <span class="s1">'timeObs'</span><span class="p">:</span>
|
||
|
<span class="n">obs</span><span class="p">[</span><span class="n">param</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">fromtimestamp</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="n">param</span><span class="p">)</span><span class="o">/</span><span class="mf">1000.0</span><span class="p">))</span>
|
||
|
<span class="k">else</span><span class="p">:</span>
|
||
|
<span class="k">try</span><span class="p">:</span>
|
||
|
<span class="n">obs</span><span class="p">[</span><span class="n">param</span><span class="p">]</span><span class="o">.</span><span class="n">append</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="n">param</span><span class="p">))</span>
|
||
|
<span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span>
|
||
|
<span class="n">obs</span><span class="p">[</span><span class="n">param</span><span class="p">]</span><span class="o">.</span><span class="n">append</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="n">param</span><span class="p">))</span>
|
||
|
<span class="k">else</span><span class="p">:</span>
|
||
|
<span class="n">obs</span><span class="p">[</span><span class="n">param</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span>
|
||
|
|
||
|
<span class="n">obs</span><span class="p">[</span><span class="s1">'presWeather'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pres_weather</span><span class="p">);</span>
|
||
|
<span class="n">obs</span><span class="p">[</span><span class="s1">'skyCover'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sky_cov</span><span class="p">);</span>
|
||
|
<span class="n">obs</span><span class="p">[</span><span class="s1">'skyLayerBase'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">sky_layer_base</span><span class="p">);</span>
|
||
|
<span class="n">pres_weather</span> <span class="o">=</span> <span class="p">[]</span>
|
||
|
<span class="n">sky_cov</span> <span class="o">=</span> <span class="p">[]</span>
|
||
|
<span class="n">sky_layer_base</span> <span class="o">=</span> <span class="p">[]</span>
|
||
|
</pre></div>
|
||
|
</div>
|
||
|
<p>Next grab the simple variables out of the data we have (attaching
|
||
|
correct units), and put them into a dictionary that we will hand the
|
||
|
plotting function later:</p>
|
||
|
<ul class="simple">
|
||
|
<li><p>Get wind components from speed and direction</p></li>
|
||
|
<li><p>Convert cloud fraction values to integer codes [0 - 8]</p></li>
|
||
|
<li><p>Map METAR weather codes to WMO codes for weather symbols</p></li>
|
||
|
</ul>
|
||
|
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">data</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">()</span>
|
||
|
<span class="n">data</span><span class="p">[</span><span class="s1">'stid'</span><span class="p">]</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">obs</span><span class="p">[</span><span class="s1">'stationName'</span><span class="p">])</span>
|
||
|
<span class="n">data</span><span class="p">[</span><span class="s1">'latitude'</span><span class="p">]</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">obs</span><span class="p">[</span><span class="s1">'latitude'</span><span class="p">])</span>
|
||
|
<span class="n">data</span><span class="p">[</span><span class="s1">'longitude'</span><span class="p">]</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">obs</span><span class="p">[</span><span class="s1">'longitude'</span><span class="p">])</span>
|
||
|
<span class="n">data</span><span class="p">[</span><span class="s1">'air_temperature'</span><span class="p">]</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">obs</span><span class="p">[</span><span class="s1">'temperature'</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="nb">float</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">data</span><span class="p">[</span><span class="s1">'dew_point_temperature'</span><span class="p">]</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">obs</span><span class="p">[</span><span class="s1">'dewpoint'</span><span class="p">],</span> <span class="n">dtype</span><span class="o">=</span><span class="nb">float</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">data</span><span class="p">[</span><span class="s1">'air_pressure_at_sea_level'</span><span class="p">]</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">obs</span><span class="p">[</span><span class="s1">'seaLevelPress'</span><span class="p">])</span><span class="o">*</span> <span class="n">units</span><span class="p">(</span><span class="s1">'mbar'</span><span class="p">)</span>
|
||
|
|
||
|
<span class="n">direction</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">obs</span><span class="p">[</span><span class="s1">'windDir'</span><span class="p">])</span>
|
||
|
<span class="n">direction</span><span class="p">[</span><span class="n">direction</span> <span class="o">==</span> <span class="o">-</span><span class="mf">9999.0</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'nan'</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">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="s1">'windSpeed'</span><span class="p">])</span> <span class="o">*</span> <span class="n">units</span><span class="p">(</span><span class="s1">'knots'</span><span class="p">),</span>
|
||
|
<span class="n">direction</span> <span class="o">*</span> <span class="n">units</span><span class="o">.</span><span class="n">degree</span><span class="p">)</span>
|
||
|
<span class="n">data</span><span class="p">[</span><span class="s1">'eastward_wind'</span><span class="p">],</span> <span class="n">data</span><span class="p">[</span><span class="s1">'northward_wind'</span><span class="p">]</span> <span class="o">=</span> <span class="n">u</span><span class="p">,</span> <span class="n">v</span>
|
||
|
<span class="n">data</span><span class="p">[</span><span class="s1">'cloud_coverage'</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">get_cloud_cover</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">*</span><span class="mi">8</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">obs</span><span class="p">[</span><span class="s1">'skyCover'</span><span class="p">]]</span>
|
||
|
<span class="n">data</span><span class="p">[</span><span class="s1">'present_weather'</span><span class="p">]</span> <span class="o">=</span> <span class="n">obs</span><span class="p">[</span><span class="s1">'presWeather'</span><span class="p">]</span>
|
||
|
</pre></div>
|
||
|
</div>
|
||
|
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="n">obs</span><span class="p">[</span><span class="s1">'stationName'</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">'K0CO'</span><span class="p">,</span> <span class="s1">'KHOT'</span><span class="p">,</span> <span class="s1">'KSHV'</span><span class="p">,</span> <span class="s1">'KIND'</span><span class="p">,</span> <span class="s1">'KBDE'</span><span class="p">,</span> <span class="s1">'KPSM'</span><span class="p">,</span> <span class="s1">'KORD'</span><span class="p">,</span> <span class="s1">'KDFW'</span><span class="p">,</span> <span class="s1">'KPHL'</span><span class="p">,</span> <span class="s1">'KTTF'</span><span class="p">,</span> <span class="s1">'KBDG'</span><span class="p">,</span> <span class="s1">'KOLY'</span><span class="p">,</span> <span class="s1">'KNYC'</span><span class="p">,</span> <span class="s1">'KABQ'</span><span class="p">,</span> <span class="s1">'KLEX'</span><span class="p">,</span> <span class="s1">'KDRT'</span><span class="p">,</span> <span class="s1">'KELP'</span><span class="p">,</span> <span class="s1">'KRUT'</span><span class="p">,</span> <span class="s1">'KRIC'</span><span class="p">,</span> <span class="s1">'KPIT'</span><span class="p">,</span> <span class="s1">'KMSP'</span><span class="p">,</span> <span class="s1">'KHSV'</span><span class="p">,</span> <span class="s1">'KUNV'</span><span class="p">,</span> <span class="s1">'KSAT'</span><span class="p">,</span> <span class="s1">'KCLE'</span><span class="p">,</span> <span class="s1">'KPHX'</span><span class="p">,</span> <span class="s1">'KMIA'</span><span class="p">,</span> <span class="s1">'KBOI'</span><span class="p">,</span> <span class="s1">'KBRO'</span><span class="p">,</span> <span class="s1">'KLAX'</span><span class="p">,</span> <span class="s1">'KLBB'</span><span class="p">,</span> <span class="s1">'KMSO'</span><span class="p">,</span> <span class="s1">'KPDX'</span><span class="p">,</span> <span class="s1">'KTLH'</span><span class="p">,</span> <span class="s1">'KUIL'</span><span class="p">,</span> <span class="s1">'KTPA'</span><span class="p">,</span> <span class="s1">'KVIH'</span><span class="p">,</span> <span class="s1">'KBIL'</span><span class="p">,</span> <span class="s1">'KMLF'</span><span class="p">,</span> <span class="s1">'KCPR'</span><span class="p">,</span> <span class="s1">'KATL'</span><span class="p">,</span> <span class="s1">'KBIS'</span><span class="p">,</span> <span class="s1">'KCLT'</span><span class="p">,</span> <span class="s1">'KOKC'</span><span class="p">,</span> <span class="s1">'KRAP'</span><span class="p">,</span> <span class="s1">'KACV'</span><span class="p">,</span> <span class="s1">'KEPH'</span><span class="p">,</span> <span class="s1">'KELY'</span><span class="p">,</span> <span class="s1">'KFAR'</span><span class="p">,</span> <span class="s1">'KFAT'</span><span class="p">,</span> <span class="s1">'KMSY'</span><span class="p">,</span> <span class="s1">'KOLF'</span><span class="p">,</span> <span class="s1">'KPDT'</span><span class="p">,</span> <span class="s1">'KLMT'</span><span class="p">,</span> <span class="s1">'KHLN'</span><span class="p">,</span> <span class="s1">'KHOU'</span><span class="p">,</span> <span class="s1">'KICT'</span><span class="p">,</span> <span class="s1">'KIDA'</span><span class="p">,</span> <span class="s1">'KPIH'</span><span class="p">,</span> <span class="s1">'KPUW'</span><span class="p">,</span> <span class="s1">'KGJT'</span><span class="p">,</span> <span class="s1">'KGLD'</span><span class="p">,</span> <span class="s1">'KGRB'</span><span class="p">,</span> <span class="s1">&
|
||
|
</pre></div>
|
||
|
</div>
|
||
|
<div class="section" id="metpy-surface-obs-plot">
|
||
|
<h2>MetPy Surface Obs Plot<a class="headerlink" href="#metpy-surface-obs-plot" title="Permalink to this headline">¶</a></h2>
|
||
|
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">proj</span> <span class="o">=</span> <span class="n">ccrs</span><span class="o">.</span><span class="n">LambertConformal</span><span class="p">(</span><span class="n">central_longitude</span><span class="o">=-</span><span class="mi">95</span><span class="p">,</span> <span class="n">central_latitude</span><span class="o">=</span><span class="mi">35</span><span class="p">,</span>
|
||
|
<span class="n">standard_parallels</span><span class="o">=</span><span class="p">[</span><span class="mi">35</span><span class="p">])</span>
|
||
|
|
||
|
<span class="c1"># Change the DPI of the figure</span>
|
||
|
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s1">'savefig.dpi'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">255</span>
|
||
|
|
||
|
<span class="c1"># Winds, temps, dewpoint, station id</span>
|
||
|
<span class="n">custom_layout</span> <span class="o">=</span> <span class="n">StationPlotLayout</span><span class="p">()</span>
|
||
|
<span class="n">custom_layout</span><span class="o">.</span><span class="n">add_barb</span><span class="p">(</span><span class="s1">'eastward_wind'</span><span class="p">,</span> <span class="s1">'northward_wind'</span><span class="p">,</span> <span class="n">units</span><span class="o">=</span><span class="s1">'knots'</span><span class="p">)</span>
|
||
|
<span class="n">custom_layout</span><span class="o">.</span><span class="n">add_value</span><span class="p">(</span><span class="s1">'NW'</span><span class="p">,</span> <span class="s1">'air_temperature'</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">'.0f'</span><span class="p">,</span> <span class="n">units</span><span class="o">=</span><span class="s1">'degF'</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">'darkred'</span><span class="p">)</span>
|
||
|
<span class="n">custom_layout</span><span class="o">.</span><span class="n">add_value</span><span class="p">(</span><span class="s1">'SW'</span><span class="p">,</span> <span class="s1">'dew_point_temperature'</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">'.0f'</span><span class="p">,</span> <span class="n">units</span><span class="o">=</span><span class="s1">'degF'</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">'darkgreen'</span><span class="p">)</span>
|
||
|
<span class="n">custom_layout</span><span class="o">.</span><span class="n">add_value</span><span class="p">(</span><span class="s1">'E'</span><span class="p">,</span> <span class="s1">'precipitation'</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">'0.1f'</span><span class="p">,</span> <span class="n">units</span><span class="o">=</span><span class="s1">'inch'</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">'blue'</span><span class="p">)</span>
|
||
|
|
||
|
<span class="c1"># Create the figure</span>
|
||
|
<span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">20</span><span class="p">,</span> <span class="mi">10</span><span class="p">))</span>
|
||
|
<span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">projection</span><span class="o">=</span><span class="n">proj</span><span class="p">)</span>
|
||
|
|
||
|
<span class="c1"># Add various map elements</span>
|
||
|
<span class="n">ax</span><span class="o">.</span><span class="n">add_feature</span><span class="p">(</span><span class="n">cfeature</span><span class="o">.</span><span class="n">LAND</span><span class="p">)</span>
|
||
|
<span class="n">ax</span><span class="o">.</span><span class="n">add_feature</span><span class="p">(</span><span class="n">cfeature</span><span class="o">.</span><span class="n">OCEAN</span><span class="p">)</span>
|
||
|
<span class="n">ax</span><span class="o">.</span><span class="n">add_feature</span><span class="p">(</span><span class="n">cfeature</span><span class="o">.</span><span class="n">LAKES</span><span class="p">)</span>
|
||
|
<span class="n">ax</span><span class="o">.</span><span class="n">add_feature</span><span class="p">(</span><span class="n">cfeature</span><span class="o">.</span><span class="n">COASTLINE</span><span class="p">)</span>
|
||
|
<span class="n">ax</span><span class="o">.</span><span class="n">add_feature</span><span class="p">(</span><span class="n">cfeature</span><span class="o">.</span><span class="n">STATES</span><span class="p">)</span>
|
||
|
<span class="n">ax</span><span class="o">.</span><span class="n">add_feature</span><span class="p">(</span><span class="n">cfeature</span><span class="o">.</span><span class="n">BORDERS</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"># Set plot bounds</span>
|
||
|
<span class="n">ax</span><span class="o">.</span><span class="n">set_extent</span><span class="p">((</span><span class="o">-</span><span class="mi">118</span><span class="p">,</span> <span class="o">-</span><span class="mi">73</span><span class="p">,</span> <span class="mi">23</span><span class="p">,</span> <span class="mi">50</span><span class="p">))</span>
|
||
|
<span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</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="s2">" | METAR | "</span> <span class="o">+</span> <span class="n">edexServer</span><span class="p">)</span>
|
||
|
|
||
|
<span class="n">stationplot</span> <span class="o">=</span> <span class="n">StationPlot</span><span class="p">(</span><span class="n">ax</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="s1">'longitude'</span><span class="p">],</span> <span class="n">data</span><span class="p">[</span><span class="s1">'latitude'</span><span class="p">],</span> <span class="n">clip_on</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||
|
<span class="n">transform</span><span class="o">=</span><span class="n">ccrs</span><span class="o">.</span><span class="n">PlateCarree</span><span class="p">(),</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
|
||
|
<span class="n">stationplot</span><span class="o">.</span><span class="n">plot_text</span><span class="p">((</span><span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">data</span><span class="p">[</span><span class="s1">'stid'</span><span class="p">])</span>
|
||
|
<span class="n">custom_layout</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">stationplot</span><span class="p">,</span> <span class="n">data</span><span class="p">)</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/METAR_Station_Plot_with_MetPy_10_0.png" src="../../_images/METAR_Station_Plot_with_MetPy_10_0.png" />
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
<footer>
|
||
|
|
||
|
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||
|
|
||
|
<a href="Map_Resources_and_Topography.html" class="btn btn-neutral float-right" title="Map Resources and Topography" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
|
||
|
|
||
|
|
||
|
<a href="Grid_Levels_and_Parameters.html" class="btn btn-neutral float-left" title="Grid Levels and Parameters" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<hr/>
|
||
|
|
||
|
<div role="contentinfo">
|
||
|
<p>
|
||
|
|
||
|
© Copyright 2018, Unidata
|
||
|
|
||
|
</p>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
|
||
|
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
|
||
|
|
||
|
<a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
|
||
|
|
||
|
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||
|
|
||
|
</footer>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
</section>
|
||
|
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
jQuery(function () {
|
||
|
SphinxRtdTheme.Navigation.enable(true);
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
</body>
|
||
|
</html>
|