This commit is contained in:
srcarter3 2021-07-14 21:23:25 +00:00
parent 0b8fb7a51d
commit 6eeb64e9f8
25 changed files with 1160 additions and 13 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 MiB

View file

@ -0,0 +1,470 @@
========================
GOES CIRA Product Writer
========================
`Notebook <http://nbviewer.ipython.org/github/Unidata/python-awips/blob/master/examples/notebooks/GOES_CIRA_Product_Writer.ipynb>`_
Python-AWIPS Tutorial Notebook
--------------
Objectives
==========
- Use python-awips to connect to an EDEX server
- Define and filter the data request specifically for new `CIRA GOES16
data
products <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#additional-documentation>`__
- Resize the products to their native resolution
- Write the individual bands (channels) locally
- Combine and write the RGB product locally
--------------
Table of Contents
-----------------
| `1
Imports <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#imports>`__\
| `2 Initial
Setup <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#initial-setup>`__\
|     `2.1 EDEX
Connection <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#edex-connection>`__\
|     `2.2 Parameter
Definition <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#parameter-definition>`__\
| `3 Function:
set_size() <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#function-set_size>`__\
| `4 Function:
write_img() <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#function-write-img>`__\
| `5 Get the Data and Write it
Out! <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#get-the-data-and-write-it-out>`__\
|     `5.1 Filter the
Data <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#filter-the-data>`__\
|     `5.2 Define Output
Location <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#define-output-location>`__\
|     `5.3 Write Out GOES
Images <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#write-out-goes-images>`__\
| `6 See
Also <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#see-also>`__\
|     `6.1 Related
Notebooks <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#related-notebooks>`__\
|     `6.2 Additional
Documentation <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#additional-documentation>`__\
--------------
1 Imports
---------
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.
.. code:: ipython3
from awips.dataaccess import DataAccessLayer
import cartopy.crs as ccrs
import cartopy.feature as cfeat
import matplotlib.pyplot as plt
from datetime import datetime
import numpy as np
import os
`Top <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html>`__
--------------
2 Initial Setup
---------------
2.1 EDEX Connection
~~~~~~~~~~~~~~~~~~~
First we establish a connection to Unidatas public EDEX server. With
that connection made, we can create a `new data request
object <http://unidata.github.io/python-awips/api/IDataRequest.html>`__
and set the data type to **satellite**.
.. code:: ipython3
# Create an EDEX data request
DataAccessLayer.changeEDEXHost("edex-cloud.unidata.ucar.edu")
request = DataAccessLayer.newDataRequest()
request.setDatatype("satellite")
2.2 Parameter Definition
~~~~~~~~~~~~~~~~~~~~~~~~
After establishing the python-awips specific objects, we create a few
other parameters that will be used for the data query based off of known
values: projection, and extent.
.. code:: ipython3
# Create a projection for ECONUS and WCONUS
# Set up the projection using known parameters (from the netcdf of GOES products)
globe = ccrs.Globe(semimajor_axis=6378137.0, semiminor_axis=6356752.5, ellipse=None)
sat_h = 35785830.0
proj = ccrs.Geostationary(globe=globe, central_longitude=-75.0, satellite_height=sat_h, sweep_axis='x')
# Define the extents for ECONUS and WCONUS in goes native coords
# (originally taken from netcdf GOES data)
extent = (-3626751., 1382263.5, 1583666.1, 4588674.)
`Top <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html>`__
--------------
3 Function: set_size()
----------------------
Here were defining a function that will allow us to pass in the
dimensions of the output file we desire in pixels. Default Python
methods require the size to be set in inches, which is confusing in our
case, since we know what the size of GOES images are in pixels. Also,
default Python functions add a padding when creating figures, and we
dont want that.
This function allows the exact final image to be specified based in
pixels, with no padding or buffers.
.. code:: ipython3
def set_size(w,h, plt):
""" w, h: width, height in pixels """
# Convert from pixels to inches
DPI = plt.figure().get_dpi()
w = w/float(DPI)
h = h/float(DPI)
# Get the axes
ax=plt.gca()
# Remove the padding
l = ax.figure.subplotpars.left
r = ax.figure.subplotpars.right
t = ax.figure.subplotpars.top
b = ax.figure.subplotpars.bottom
figw = float(w)/(r-l)
figh = float(h)/(t-b)
# Set the final size
ax.figure.set_size_inches(figw, figh)
# Return the DPI, this is used when in the
# write_image() function
return DPI
`Top <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html>`__
--------------
4 Function: write_img()
-----------------------
Next, were defining another function which takes the image data, file
name, projection, extent, reference time, and whether or not to print
out a footnote.
This method specifies the size of the output image and creates a plot
object to draw all our data into. Then it draws the GOES data,
coastlines, state boundaries, and lat/lon lines onto the image.
Additionally, if we want, it writes out a short footnote describing what
product were looking at. Finally, it writes out the figure to disk.
By default were specifying the output dimensions to be 5000x4000
pixels, because that is the native GOES image size, but feel free to
modify these values if you wish to print out an image of another size
(you may want to keep the w:h ratio the same though).
.. code:: ipython3
def write_img(data, name, proj, extent, reftime, footnote):
# Specify the desired size, in pixels
px_width = 5000.0
px_height = 3000.0
# Create the plot with proper projection, and set the figure size
fig = plt.figure()
DPI = set_size(px_width, px_height, plt)
ax = plt.axes(projection=proj)
# Draw GOES data
ax.imshow(data, cmap='gray', transform=proj, extent=extent)
# Add Coastlines and States
ax.coastlines(resolution='50m', color='magenta', linewidth=1.0)
ax.add_feature(cfeat.STATES, edgecolor='magenta', linewidth=1.0)
ax.gridlines(color='cyan', linewidth=2.0, xlocs=np.arange(-180, 180, 10), linestyle=(0,(5,10)))
# Create and draw the footnote if needed
if footnote:
footnoteStr = ' CIRA-'+name[7:-4]+'-'+str(reftime)
plt.annotate(str(footnoteStr), (0,0), (0, 0), xycoords='axes fraction', textcoords='offset points', va='top')
# Write out the figure
plt.savefig(name, dpi=DPI, bbox_inches='tight', pad_inches=0)
`Top <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html>`__
--------------
5 Get the Data and Write it Out!
--------------------------------
5.1 Filter the Data
~~~~~~~~~~~~~~~~~~~
Define exactly what data we want to be printing out. This notebook is
designed to loop through and print out multiple images, so here we can
pick which images were wanting to print out. Were specifying
**ECONUS** (for East CONUS), **CLDSNOW**, **DBRDUST**, and **GEOCOLR**
(for the new CIRA products) and the **three channels** for the RBG
composites.
.. container:: alert-info
| Tip:
| More information could be gathered by looking at all the available
location names (sectors), identifiers (entities), and parameters
(channels). To see those run the following lines of code after the
dataType has been set to satellite on the request object:
::
## Print Available Location Names
print((DataAccessLayer.getAvailableLocationNames(request))
## Print Available Identifiers and Values
ids = DataAccessLayer.getOptionalIdentifiers(request)
print(ids)
for id in ids:
print(id, DataAccessLayer.getIdentifierValues(request, id))
.. code:: ipython3
# Define Location names
sectors = ["ECONUS"]
# Define creatingEntity Identifiers
entities = ["CLDSNOW", "DBRDUST", "GEOCOLR"]
# Define parameters
ch1 = "CH-01-0.47um"
ch2 = "CH-02-0.64um"
ch3 = "CH-03-0.87um"
channels = [ch1, ch2, ch3]
5.2 Define Output Location
~~~~~~~~~~~~~~~~~~~~~~~~~~
Here we define a folder for where the satellite images will be written
to. The default directory is a new folder called output that lives
whereever this notebook lives.
.. container:: alert-info
| Tip:
| If you specify the fully qualified path, it will no longer depend
on where this notebook is located. For example (for a Mac):
::
outputDir = '/Users/scarter/test_dir/output/'
.. code:: ipython3
# Define name of the desired end directory
outputDir = 'output/'
# Check to see if this folder exists
if not os.path.exists(outputDir):
# If not, create the directory
print('Creating new output directory: ',outputDir)
os.makedirs(outputDir)
else:
# If so, let the user know
print('Output directory exists!')
.. parsed-literal::
Output directory exists!
5.3 Write Out GOES Images
~~~~~~~~~~~~~~~~~~~~~~~~~
.. code:: ipython3
# First loop through the sectors (location names)
for sector in sectors:
# Set the location on the request
request.setLocationNames(sector)
# Next loop through the Products (entities)
for entity in entities:
# Reset the time and channel variables since we're on a new product
time = None
R = None
G = None
B = None
# Set the product
request.addIdentifier("creatingEntity", entity)
# Cycle through the channels (parameters)
for channel in channels:
request.setParameters(channel)
# Set the time for this product if it hasn't been set
# If it has been set, then we proceed with that value
# so that all bands in for the one product are pulled
# from the same time
if(time is None):
times = DataAccessLayer.getAvailableTimes(request)
time = [times[-1]]
print("selected time:", time)
# Request the data from EDEX
response = DataAccessLayer.getGridData(request, time)
# Grab the actual data from the response
grid = response[0]
# Get the raw data from the response
data = grid.getRawData()
reftime = grid.getDataTime().getRefTime()
# Set the R,G,B channel
if(channel == ch1):
B = data
elif (channel == ch2):
R = data
elif (channel == ch3):
G = data
# Create the single channel name
name = outputDir+entity+'-'+sector+'-'+channel+'.png'
# Write out the single channel
print('writing',name)
write_img(data, name, proj, extent, reftime, False)
# --- End of channel loop
# Create the RGB product
# Apply range limits for each channel. RGB values must be between 0 and 1
R = np.clip(R, 0, 1)
G = np.clip(G, 0, 1)
B = np.clip(B, 0, 1)
RGB = np.dstack([R, G, B])
# Create RGB name
rgbName = outputDir+entity+'-'+sector+'-RGB.png'
# Write out the RGB image
print('writing', rgbName)
write_img(RGB, rgbName, proj, extent, time, False)
# --- End of entity loop
#--- End of sector loop
print('Done!')
.. parsed-literal::
selected time: [<DataTime instance: 2021-05-28 06:51:14 >]
writing output/CLDSNOW-ECONUS-CH-01-0.47um.png
writing output/CLDSNOW-ECONUS-CH-02-0.64um.png
writing output/CLDSNOW-ECONUS-CH-03-0.87um.png
writing output/CLDSNOW-ECONUS-RGB.png
selected time: [<DataTime instance: 2021-05-28 06:51:14 >]
writing output/DBRDUST-ECONUS-CH-01-0.47um.png
writing output/DBRDUST-ECONUS-CH-02-0.64um.png
writing output/DBRDUST-ECONUS-CH-03-0.87um.png
writing output/DBRDUST-ECONUS-RGB.png
selected time: [<DataTime instance: 2021-05-28 06:56:14 >]
writing output/GEOCOLR-ECONUS-CH-01-0.47um.png
writing output/GEOCOLR-ECONUS-CH-02-0.64um.png
writing output/GEOCOLR-ECONUS-CH-03-0.87um.png
writing output/GEOCOLR-ECONUS-RGB.png
Done!
.. parsed-literal::
<Figure size 432x288 with 0 Axes>
.. image:: GOES_CIRA_Product_Writer_files/GOES_CIRA_Product_Writer_25_2.png
.. parsed-literal::
<Figure size 432x288 with 0 Axes>
.. image:: GOES_CIRA_Product_Writer_files/GOES_CIRA_Product_Writer_25_4.png
.. parsed-literal::
<Figure size 432x288 with 0 Axes>
.. image:: GOES_CIRA_Product_Writer_files/GOES_CIRA_Product_Writer_25_6.png
`Top <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html>`__
--------------
6 See Also
----------
6.1 Related Notebooks
~~~~~~~~~~~~~~~~~~~~~
- `Satellite
Imagery <http://unidata.github.io/python-awips/examples/generated/Satellite_Imagery.html>`__
6.2 Additional Documentation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**CIRA Quick Guides**
- `DEBRA-Dust <https://rammb.cira.colostate.edu/training/visit/quick_guides/QuickGuide_DEBRA-Dust_20210217.pdf>`__
- `Cloud-Snow <https://rammb.cira.colostate.edu/training/visit/quick_guides/GOES_Cloud_Snow_Discriminator_Quick_Guide_20190814.pdf>`__
- `GEOCOLOR <https://rammb.cira.colostate.edu/training/visit/quick_guides/QuickGuide_CIRA_Geocolor_20171019.pdf>`__
**python-awips**
- `DataAccessLayer.changeEDEXHost() <http://unidata.github.io/python-awips/api/DataAccessLayer.html#awips.dataaccess.DataAccessLayer.changeEDEXHost>`__
- `DataAccessLayer.newDataRequest() <http://unidata.github.io/python-awips/api/DataAccessLayer.html#awips.dataaccess.DataAccessLayer.newDataRequest>`__
- `DataAccessLayer.getAvailableLocationNames() <http://unidata.github.io/python-awips/api/DataAccessLayer.html#awips.dataaccess.DataAccessLayer.getAvailableLocationNames>`__
- `DataAccessLayer.getOptionalIdentifiers() <http://unidata.github.io/python-awips/api/DataAccessLayer.html#awips.dataaccess.DataAccessLayer.getOptionalIdentifiers>`__
- `DataAccessLayer.getIdentifierValues() <http://unidata.github.io/python-awips/api/DataAccessLayer.html#awips.dataaccess.DataAccessLayer.getIdentifierValues>`__
- `DataAccessLayer.getAvailableTimes() <http://unidata.github.io/python-awips/api/DataAccessLayer.html#awips.dataaccess.DataAccessLayer.getAvailableTimes>`__
- `IDataRequest <http://unidata.github.io/python-awips/api/IDataRequest.html>`__
**matplotlib**
- `matplotlib.pyplot() <https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.html>`__
- `matplotlib.pyplot.axes() <https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.axes.html>`__
- `matplotlib.pyplot.figure() <https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.figure.html>`__
**numpy**
- `numpy.clip() <https://numpy.org/doc/stable/reference/generated/numpy.clip.html>`__
- `numpy.dstack() <https://numpy.org/doc/stable/reference/generated/numpy.dstack.html>`__
`Top <https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html>`__
--------------

View file

@ -819,7 +819,7 @@ div.code-block-caption code {
table.highlighttable td.linenos, table.highlighttable td.linenos,
span.linenos, span.linenos,
div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */ div.highlight span.gp { /* gp: Generic.Prompt */
user-select: none; user-select: none;
-webkit-user-select: text; /* Safari fallback only */ -webkit-user-select: text; /* Safari fallback only */
-webkit-user-select: none; /* Chrome/Safari */ -webkit-user-select: none; /* Chrome/Safari */

View file

@ -301,12 +301,14 @@ var Documentation = {
window.location.href = prevHref; window.location.href = prevHref;
return false; return false;
} }
break;
case 39: // right case 39: // right
var nextHref = $('link[rel="next"]').prop('href'); var nextHref = $('link[rel="next"]').prop('href');
if (nextHref) { if (nextHref) {
window.location.href = nextHref; window.location.href = nextHref;
return false; return false;
} }
break;
} }
} }
}); });

View file

@ -276,7 +276,7 @@ var Search = {
setTimeout(function() { setTimeout(function() {
displayNextItem(); displayNextItem();
}, 5); }, 5);
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) { } else {
$.ajax({url: requestUrl, $.ajax({url: requestUrl,
dataType: "text", dataType: "text",
complete: function(jqxhr, textstatus) { complete: function(jqxhr, textstatus) {
@ -289,12 +289,6 @@ var Search = {
displayNextItem(); displayNextItem();
}, 5); }, 5);
}}); }});
} else {
// no source available, just display title
Search.output.append(listItem);
setTimeout(function() {
displayNextItem();
}, 5);
} }
} }
// search finished, update title and status message // search finished, update title and status message

View file

@ -98,6 +98,7 @@
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Data Plotting Examples</a><ul class="current"> <li class="toctree-l1 current"><a class="reference internal" href="../index.html">Data Plotting Examples</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">Colored Surface Temperature Plot</a></li> <li class="toctree-l2 current"><a class="current reference internal" href="#">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="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="GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</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"><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="Grids_and_Cartopy.html">Grids and Cartopy</a></li> <li class="toctree-l2"><a class="reference internal" href="Grids_and_Cartopy.html">Grids and Cartopy</a></li>

View file

@ -42,7 +42,7 @@
<link rel="author" title="About these documents" href="../../about.html" /> <link rel="author" title="About these documents" href="../../about.html" />
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="GOES Geostationary Lightning Mapper" href="GOES_Geostationary_Lightning_Mapper.html" /> <link rel="next" title="GOES CIRA Product Writer" href="GOES_CIRA_Product_Writer.html" />
<link rel="prev" title="Colored Surface Temperature Plot" href="Colored_Surface_Temperature_Plot.html" /> <link rel="prev" title="Colored Surface Temperature Plot" href="Colored_Surface_Temperature_Plot.html" />
</head> </head>
@ -102,6 +102,7 @@
<li class="toctree-l3"><a class="reference internal" href="#model-sounding-comparison">Model Sounding Comparison</a></li> <li class="toctree-l3"><a class="reference internal" href="#model-sounding-comparison">Model Sounding Comparison</a></li>
</ul> </ul>
</li> </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="GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</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"><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="Grids_and_Cartopy.html">Grids and Cartopy</a></li> <li class="toctree-l2"><a class="reference internal" href="Grids_and_Cartopy.html">Grids and Cartopy</a></li>
@ -483,7 +484,7 @@ are returned as Kelvin and wind components as m/s.</p></li>
</div> </div>
<footer> <footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="GOES_Geostationary_Lightning_Mapper.html" class="btn btn-neutral float-right" title="GOES Geostationary Lightning Mapper" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> <a href="GOES_CIRA_Product_Writer.html" class="btn btn-neutral float-right" title="GOES CIRA Product Writer" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="Colored_Surface_Temperature_Plot.html" class="btn btn-neutral float-left" title="Colored Surface Temperature Plot" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> <a href="Colored_Surface_Temperature_Plot.html" class="btn btn-neutral float-left" title="Colored Surface Temperature Plot" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div> </div>

View file

@ -0,0 +1,665 @@
<!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>GOES CIRA Product Writer &mdash; 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" />
<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 type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script data-url_root="../../" id="documentation_options" 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 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="GOES Geostationary Lightning Mapper" href="GOES_Geostationary_Lightning_Mapper.html" />
<link rel="prev" title="Forecast Model Vertical Sounding" href="Forecast_Model_Vertical_Sounding.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.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="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 current"><a class="current reference internal" href="#">GOES CIRA Product Writer</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="#initial-setup">2 Initial Setup</a></li>
<li class="toctree-l4"><a class="reference internal" href="#function-set-size">3 Function: set_size()</a></li>
<li class="toctree-l4"><a class="reference internal" href="#function-write-img">4 Function: write_img()</a></li>
<li class="toctree-l4"><a class="reference internal" href="#get-the-data-and-write-it-out">5 Get the Data and Write it Out!</a></li>
<li class="toctree-l4"><a class="reference internal" href="#see-also">6 See Also</a></li>
</ul>
</li>
</ul>
</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"><a class="reference internal" href="Grids_and_Cartopy.html">Grids and Cartopy</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"><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> &raquo;</li>
<li><a href="../index.html">Data Plotting Examples</a> &raquo;</li>
<li>GOES CIRA Product Writer</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/examples/generated/GOES_CIRA_Product_Writer.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="goes-cira-product-writer">
<h1>GOES CIRA Product Writer<a class="headerlink" href="#goes-cira-product-writer" 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/GOES_CIRA_Product_Writer.ipynb">Notebook</a>
Python-AWIPS Tutorial Notebook</p>
<hr class="docutils" />
<div class="section" id="objectives">
<h2>Objectives<a class="headerlink" href="#objectives" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><p>Use python-awips to connect to an EDEX server</p></li>
<li><p>Define and filter the data request specifically for new <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#additional-documentation">CIRA GOES16
data
products</a></p></li>
<li><p>Resize the products to their native resolution</p></li>
<li><p>Write the individual bands (channels) locally</p></li>
<li><p>Combine and write the RGB product locally</p></li>
</ul>
<hr class="docutils" />
<div class="section" id="table-of-contents">
<h3>Table of Contents<a class="headerlink" href="#table-of-contents" title="Permalink to this headline"></a></h3>
<div class="line-block">
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#imports">1
Imports</a></div>
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#initial-setup">2 Initial
Setup</a></div>
<div class="line">    <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#edex-connection">2.1 EDEX
Connection</a></div>
<div class="line">    <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#parameter-definition">2.2 Parameter
Definition</a></div>
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#function-set_size">3 Function:
set_size()</a></div>
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#function-write-img">4 Function:
write_img()</a></div>
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#get-the-data-and-write-it-out">5 Get the Data and Write it
Out!</a></div>
<div class="line">    <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#filter-the-data">5.1 Filter the
Data</a></div>
<div class="line">    <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#define-output-location">5.2 Define Output
Location</a></div>
<div class="line">    <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#write-out-goes-images">5.3 Write Out GOES
Images</a></div>
<div class="line"><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#see-also">6 See
Also</a></div>
<div class="line">    <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#related-notebooks">6.1 Related
Notebooks</a></div>
<div class="line">    <a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html#additional-documentation">6.2 Additional
Documentation</a></div>
</div>
</div>
<hr class="docutils" />
<div class="section" id="imports">
<h3>1 Imports<a class="headerlink" href="#imports" title="Permalink to this headline"></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">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">cfeat</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">datetime</span> <span class="kn">import</span> <span class="n">datetime</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">os</span>
</pre></div>
</div>
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html">Top</a></p>
</div>
<hr class="docutils" />
<div class="section" id="initial-setup">
<h3>2 Initial Setup<a class="headerlink" href="#initial-setup" title="Permalink to this headline"></a></h3>
<div class="section" id="edex-connection">
<h4>2.1 EDEX Connection<a class="headerlink" href="#edex-connection" title="Permalink to this headline"></a></h4>
<p>First we establish a connection to Unidatas 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>satellite</strong>.</p>
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Create an EDEX data request</span>
<span class="n">DataAccessLayer</span><span class="o">.</span><span class="n">changeEDEXHost</span><span class="p">(</span><span class="s2">&quot;edex-cloud.unidata.ucar.edu&quot;</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="n">request</span><span class="o">.</span><span class="n">setDatatype</span><span class="p">(</span><span class="s2">&quot;satellite&quot;</span><span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="parameter-definition">
<h4>2.2 Parameter Definition<a class="headerlink" href="#parameter-definition" title="Permalink to this headline"></a></h4>
<p>After establishing the python-awips specific objects, we create a few
other parameters that will be used for the data query based off of known
values: projection, and extent.</p>
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Create a projection for ECONUS and WCONUS</span>
<span class="c1"># Set up the projection using known parameters (from the netcdf of GOES products)</span>
<span class="n">globe</span> <span class="o">=</span> <span class="n">ccrs</span><span class="o">.</span><span class="n">Globe</span><span class="p">(</span><span class="n">semimajor_axis</span><span class="o">=</span><span class="mf">6378137.0</span><span class="p">,</span> <span class="n">semiminor_axis</span><span class="o">=</span><span class="mf">6356752.5</span><span class="p">,</span> <span class="n">ellipse</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
<span class="n">sat_h</span> <span class="o">=</span> <span class="mf">35785830.0</span>
<span class="n">proj</span> <span class="o">=</span> <span class="n">ccrs</span><span class="o">.</span><span class="n">Geostationary</span><span class="p">(</span><span class="n">globe</span><span class="o">=</span><span class="n">globe</span><span class="p">,</span> <span class="n">central_longitude</span><span class="o">=-</span><span class="mf">75.0</span><span class="p">,</span> <span class="n">satellite_height</span><span class="o">=</span><span class="n">sat_h</span><span class="p">,</span> <span class="n">sweep_axis</span><span class="o">=</span><span class="s1">&#39;x&#39;</span><span class="p">)</span>
<span class="c1"># Define the extents for ECONUS and WCONUS in goes native coords</span>
<span class="c1"># (originally taken from netcdf GOES data)</span>
<span class="n">extent</span> <span class="o">=</span> <span class="p">(</span><span class="o">-</span><span class="mf">3626751.</span><span class="p">,</span> <span class="mf">1382263.5</span><span class="p">,</span> <span class="mf">1583666.1</span><span class="p">,</span> <span class="mf">4588674.</span><span class="p">)</span>
</pre></div>
</div>
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html">Top</a></p>
</div>
</div>
<hr class="docutils" />
<div class="section" id="function-set-size">
<h3>3 Function: set_size()<a class="headerlink" href="#function-set-size" title="Permalink to this headline"></a></h3>
<p>Here were defining a function that will allow us to pass in the
dimensions of the output file we desire in pixels. Default Python
methods require the size to be set in inches, which is confusing in our
case, since we know what the size of GOES images are in pixels. Also,
default Python functions add a padding when creating figures, and we
dont want that.</p>
<p>This function allows the exact final image to be specified based in
pixels, with no padding or buffers.</p>
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">set_size</span><span class="p">(</span><span class="n">w</span><span class="p">,</span><span class="n">h</span><span class="p">,</span> <span class="n">plt</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot; w, h: width, height in pixels &quot;&quot;&quot;</span>
<span class="c1"># Convert from pixels to inches</span>
<span class="n">DPI</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="o">.</span><span class="n">get_dpi</span><span class="p">()</span>
<span class="n">w</span> <span class="o">=</span> <span class="n">w</span><span class="o">/</span><span class="nb">float</span><span class="p">(</span><span class="n">DPI</span><span class="p">)</span>
<span class="n">h</span> <span class="o">=</span> <span class="n">h</span><span class="o">/</span><span class="nb">float</span><span class="p">(</span><span class="n">DPI</span><span class="p">)</span>
<span class="c1"># Get the axes</span>
<span class="n">ax</span><span class="o">=</span><span class="n">plt</span><span class="o">.</span><span class="n">gca</span><span class="p">()</span>
<span class="c1"># Remove the padding</span>
<span class="n">l</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">subplotpars</span><span class="o">.</span><span class="n">left</span>
<span class="n">r</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">subplotpars</span><span class="o">.</span><span class="n">right</span>
<span class="n">t</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">subplotpars</span><span class="o">.</span><span class="n">top</span>
<span class="n">b</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">subplotpars</span><span class="o">.</span><span class="n">bottom</span>
<span class="n">figw</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">w</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">r</span><span class="o">-</span><span class="n">l</span><span class="p">)</span>
<span class="n">figh</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">h</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">t</span><span class="o">-</span><span class="n">b</span><span class="p">)</span>
<span class="c1"># Set the final size</span>
<span class="n">ax</span><span class="o">.</span><span class="n">figure</span><span class="o">.</span><span class="n">set_size_inches</span><span class="p">(</span><span class="n">figw</span><span class="p">,</span> <span class="n">figh</span><span class="p">)</span>
<span class="c1"># Return the DPI, this is used when in the</span>
<span class="c1"># write_image() function</span>
<span class="k">return</span> <span class="n">DPI</span>
</pre></div>
</div>
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html">Top</a></p>
</div>
<hr class="docutils" />
<div class="section" id="function-write-img">
<h3>4 Function: write_img()<a class="headerlink" href="#function-write-img" title="Permalink to this headline"></a></h3>
<p>Next, were defining another function which takes the image data, file
name, projection, extent, reference time, and whether or not to print
out a footnote.</p>
<p>This method specifies the size of the output image and creates a plot
object to draw all our data into. Then it draws the GOES data,
coastlines, state boundaries, and lat/lon lines onto the image.
Additionally, if we want, it writes out a short footnote describing what
product were looking at. Finally, it writes out the figure to disk.</p>
<p>By default were specifying the output dimensions to be 5000x4000
pixels, because that is the native GOES image size, but feel free to
modify these values if you wish to print out an image of another size
(you may want to keep the w:h ratio the same though).</p>
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">write_img</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">proj</span><span class="p">,</span> <span class="n">extent</span><span class="p">,</span> <span class="n">reftime</span><span class="p">,</span> <span class="n">footnote</span><span class="p">):</span>
<span class="c1"># Specify the desired size, in pixels</span>
<span class="n">px_width</span> <span class="o">=</span> <span class="mf">5000.0</span>
<span class="n">px_height</span> <span class="o">=</span> <span class="mf">3000.0</span>
<span class="c1"># Create the plot with proper projection, and set the figure size</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">DPI</span> <span class="o">=</span> <span class="n">set_size</span><span class="p">(</span><span class="n">px_width</span><span class="p">,</span> <span class="n">px_height</span><span class="p">,</span> <span class="n">plt</span><span class="p">)</span>
<span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">axes</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"># Draw GOES data</span>
<span class="n">ax</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">&#39;gray&#39;</span><span class="p">,</span> <span class="n">transform</span><span class="o">=</span><span class="n">proj</span><span class="p">,</span> <span class="n">extent</span><span class="o">=</span><span class="n">extent</span><span class="p">)</span>
<span class="c1"># Add Coastlines and States</span>
<span class="n">ax</span><span class="o">.</span><span class="n">coastlines</span><span class="p">(</span><span class="n">resolution</span><span class="o">=</span><span class="s1">&#39;50m&#39;</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">&#39;magenta&#39;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">1.0</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">cfeat</span><span class="o">.</span><span class="n">STATES</span><span class="p">,</span> <span class="n">edgecolor</span><span class="o">=</span><span class="s1">&#39;magenta&#39;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">1.0</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">gridlines</span><span class="p">(</span><span class="n">color</span><span class="o">=</span><span class="s1">&#39;cyan&#39;</span><span class="p">,</span> <span class="n">linewidth</span><span class="o">=</span><span class="mf">2.0</span><span class="p">,</span> <span class="n">xlocs</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="o">-</span><span class="mi">180</span><span class="p">,</span> <span class="mi">180</span><span class="p">,</span> <span class="mi">10</span><span class="p">),</span> <span class="n">linestyle</span><span class="o">=</span><span class="p">(</span><span class="mi">0</span><span class="p">,(</span><span class="mi">5</span><span class="p">,</span><span class="mi">10</span><span class="p">)))</span>
<span class="c1"># Create and draw the footnote if needed</span>
<span class="k">if</span> <span class="n">footnote</span><span class="p">:</span>
<span class="n">footnoteStr</span> <span class="o">=</span> <span class="s1">&#39; CIRA-&#39;</span><span class="o">+</span><span class="n">name</span><span class="p">[</span><span class="mi">7</span><span class="p">:</span><span class="o">-</span><span class="mi">4</span><span class="p">]</span><span class="o">+</span><span class="s1">&#39;-&#39;</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">reftime</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">annotate</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">footnoteStr</span><span class="p">),</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">),</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">xycoords</span><span class="o">=</span><span class="s1">&#39;axes fraction&#39;</span><span class="p">,</span> <span class="n">textcoords</span><span class="o">=</span><span class="s1">&#39;offset points&#39;</span><span class="p">,</span> <span class="n">va</span><span class="o">=</span><span class="s1">&#39;top&#39;</span><span class="p">)</span>
<span class="c1"># Write out the figure</span>
<span class="n">plt</span><span class="o">.</span><span class="n">savefig</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">dpi</span><span class="o">=</span><span class="n">DPI</span><span class="p">,</span> <span class="n">bbox_inches</span><span class="o">=</span><span class="s1">&#39;tight&#39;</span><span class="p">,</span> <span class="n">pad_inches</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
</pre></div>
</div>
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html">Top</a></p>
</div>
<hr class="docutils" />
<div class="section" id="get-the-data-and-write-it-out">
<h3>5 Get the Data and Write it Out!<a class="headerlink" href="#get-the-data-and-write-it-out" title="Permalink to this headline"></a></h3>
<div class="section" id="filter-the-data">
<h4>5.1 Filter the Data<a class="headerlink" href="#filter-the-data" title="Permalink to this headline"></a></h4>
<p>Define exactly what data we want to be printing out. This notebook is
designed to loop through and print out multiple images, so here we can
pick which images were wanting to print out. Were specifying
<strong>ECONUS</strong> (for East CONUS), <strong>CLDSNOW</strong>, <strong>DBRDUST</strong>, and <strong>GEOCOLR</strong>
(for the new CIRA products) and the <strong>three channels</strong> for the RBG
composites.</p>
<div class="alert-info docutils container">
<div class="line-block">
<div class="line">Tip:</div>
<div class="line">More information could be gathered by looking at all the available
location names (sectors), identifiers (entities), and parameters
(channels). To see those run the following lines of code after the
dataType has been set to satellite on the request object:</div>
</div>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">## Print Available Location Names</span>
<span class="nb">print</span><span class="p">((</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="c1">## Print Available Identifiers and Values</span>
<span class="n">ids</span> <span class="o">=</span> <span class="n">DataAccessLayer</span><span class="o">.</span><span class="n">getOptionalIdentifiers</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">ids</span><span class="p">)</span>
<span class="k">for</span> <span class="nb">id</span> <span class="ow">in</span> <span class="n">ids</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="nb">id</span><span class="p">,</span> <span class="n">DataAccessLayer</span><span class="o">.</span><span class="n">getIdentifierValues</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="nb">id</span><span class="p">))</span>
</pre></div>
</div>
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Define Location names</span>
<span class="n">sectors</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;ECONUS&quot;</span><span class="p">]</span>
<span class="c1"># Define creatingEntity Identifiers</span>
<span class="n">entities</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;CLDSNOW&quot;</span><span class="p">,</span> <span class="s2">&quot;DBRDUST&quot;</span><span class="p">,</span> <span class="s2">&quot;GEOCOLR&quot;</span><span class="p">]</span>
<span class="c1"># Define parameters</span>
<span class="n">ch1</span> <span class="o">=</span> <span class="s2">&quot;CH-01-0.47um&quot;</span>
<span class="n">ch2</span> <span class="o">=</span> <span class="s2">&quot;CH-02-0.64um&quot;</span>
<span class="n">ch3</span> <span class="o">=</span> <span class="s2">&quot;CH-03-0.87um&quot;</span>
<span class="n">channels</span> <span class="o">=</span> <span class="p">[</span><span class="n">ch1</span><span class="p">,</span> <span class="n">ch2</span><span class="p">,</span> <span class="n">ch3</span><span class="p">]</span>
</pre></div>
</div>
</div>
<div class="section" id="define-output-location">
<h4>5.2 Define Output Location<a class="headerlink" href="#define-output-location" title="Permalink to this headline"></a></h4>
<p>Here we define a folder for where the satellite images will be written
to. The default directory is a new folder called output that lives
whereever this notebook lives.</p>
<div class="alert-info docutils container">
<div class="line-block">
<div class="line">Tip:</div>
<div class="line">If you specify the fully qualified path, it will no longer depend
on where this notebook is located. For example (for a Mac):</div>
</div>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">outputDir</span> <span class="o">=</span> <span class="s1">&#39;/Users/scarter/test_dir/output/&#39;</span>
</pre></div>
</div>
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Define name of the desired end directory</span>
<span class="n">outputDir</span> <span class="o">=</span> <span class="s1">&#39;output/&#39;</span>
<span class="c1"># Check to see if this folder exists</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">outputDir</span><span class="p">):</span>
<span class="c1"># If not, create the directory</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Creating new output directory: &#39;</span><span class="p">,</span><span class="n">outputDir</span><span class="p">)</span>
<span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">outputDir</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># If so, let the user know</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Output directory exists!&#39;</span><span class="p">)</span>
</pre></div>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>Output directory exists!
</pre></div>
</div>
</div>
<div class="section" id="write-out-goes-images">
<h4>5.3 Write Out GOES Images<a class="headerlink" href="#write-out-goes-images" title="Permalink to this headline"></a></h4>
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># First loop through the sectors (location names)</span>
<span class="k">for</span> <span class="n">sector</span> <span class="ow">in</span> <span class="n">sectors</span><span class="p">:</span>
<span class="c1"># Set the location on the request</span>
<span class="n">request</span><span class="o">.</span><span class="n">setLocationNames</span><span class="p">(</span><span class="n">sector</span><span class="p">)</span>
<span class="c1"># Next loop through the Products (entities)</span>
<span class="k">for</span> <span class="n">entity</span> <span class="ow">in</span> <span class="n">entities</span><span class="p">:</span>
<span class="c1"># Reset the time and channel variables since we&#39;re on a new product</span>
<span class="n">time</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">R</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">G</span> <span class="o">=</span> <span class="kc">None</span>
<span class="n">B</span> <span class="o">=</span> <span class="kc">None</span>
<span class="c1"># Set the product</span>
<span class="n">request</span><span class="o">.</span><span class="n">addIdentifier</span><span class="p">(</span><span class="s2">&quot;creatingEntity&quot;</span><span class="p">,</span> <span class="n">entity</span><span class="p">)</span>
<span class="c1"># Cycle through the channels (parameters)</span>
<span class="k">for</span> <span class="n">channel</span> <span class="ow">in</span> <span class="n">channels</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="n">channel</span><span class="p">)</span>
<span class="c1"># Set the time for this product if it hasn&#39;t been set</span>
<span class="c1"># If it has been set, then we proceed with that value</span>
<span class="c1"># so that all bands in for the one product are pulled</span>
<span class="c1"># from the same time</span>
<span class="k">if</span><span class="p">(</span><span class="n">time</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">):</span>
<span class="n">times</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>
<span class="n">time</span> <span class="o">=</span> <span class="p">[</span><span class="n">times</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;selected time:&quot;</span><span class="p">,</span> <span class="n">time</span><span class="p">)</span>
<span class="c1"># Request the data from EDEX</span>
<span class="n">response</span> <span class="o">=</span> <span class="n">DataAccessLayer</span><span class="o">.</span><span class="n">getGridData</span><span class="p">(</span><span class="n">request</span><span class="p">,</span> <span class="n">time</span><span class="p">)</span>
<span class="c1"># Grab the actual data from the response</span>
<span class="n">grid</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="c1"># Get the raw data from the response</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">grid</span><span class="o">.</span><span class="n">getRawData</span><span class="p">()</span>
<span class="n">reftime</span> <span class="o">=</span> <span class="n">grid</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="c1"># Set the R,G,B channel</span>
<span class="k">if</span><span class="p">(</span><span class="n">channel</span> <span class="o">==</span> <span class="n">ch1</span><span class="p">):</span>
<span class="n">B</span> <span class="o">=</span> <span class="n">data</span>
<span class="k">elif</span> <span class="p">(</span><span class="n">channel</span> <span class="o">==</span> <span class="n">ch2</span><span class="p">):</span>
<span class="n">R</span> <span class="o">=</span> <span class="n">data</span>
<span class="k">elif</span> <span class="p">(</span><span class="n">channel</span> <span class="o">==</span> <span class="n">ch3</span><span class="p">):</span>
<span class="n">G</span> <span class="o">=</span> <span class="n">data</span>
<span class="c1"># Create the single channel name</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">outputDir</span><span class="o">+</span><span class="n">entity</span><span class="o">+</span><span class="s1">&#39;-&#39;</span><span class="o">+</span><span class="n">sector</span><span class="o">+</span><span class="s1">&#39;-&#39;</span><span class="o">+</span><span class="n">channel</span><span class="o">+</span><span class="s1">&#39;.png&#39;</span>
<span class="c1"># Write out the single channel</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;writing&#39;</span><span class="p">,</span><span class="n">name</span><span class="p">)</span>
<span class="n">write_img</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">proj</span><span class="p">,</span> <span class="n">extent</span><span class="p">,</span> <span class="n">reftime</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
<span class="c1"># --- End of channel loop</span>
<span class="c1"># Create the RGB product</span>
<span class="c1"># Apply range limits for each channel. RGB values must be between 0 and 1</span>
<span class="n">R</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">clip</span><span class="p">(</span><span class="n">R</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">G</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">clip</span><span class="p">(</span><span class="n">G</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">B</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">clip</span><span class="p">(</span><span class="n">B</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">RGB</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">dstack</span><span class="p">([</span><span class="n">R</span><span class="p">,</span> <span class="n">G</span><span class="p">,</span> <span class="n">B</span><span class="p">])</span>
<span class="c1"># Create RGB name</span>
<span class="n">rgbName</span> <span class="o">=</span> <span class="n">outputDir</span><span class="o">+</span><span class="n">entity</span><span class="o">+</span><span class="s1">&#39;-&#39;</span><span class="o">+</span><span class="n">sector</span><span class="o">+</span><span class="s1">&#39;-RGB.png&#39;</span>
<span class="c1"># Write out the RGB image</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;writing&#39;</span><span class="p">,</span> <span class="n">rgbName</span><span class="p">)</span>
<span class="n">write_img</span><span class="p">(</span><span class="n">RGB</span><span class="p">,</span> <span class="n">rgbName</span><span class="p">,</span> <span class="n">proj</span><span class="p">,</span> <span class="n">extent</span><span class="p">,</span> <span class="n">time</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
<span class="c1"># --- End of entity loop</span>
<span class="c1">#--- End of sector loop</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Done!&#39;</span><span class="p">)</span>
</pre></div>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>selected time: [&lt;DataTime instance: 2021-05-28 06:51:14 &gt;]
writing output/CLDSNOW-ECONUS-CH-01-0.47um.png
writing output/CLDSNOW-ECONUS-CH-02-0.64um.png
writing output/CLDSNOW-ECONUS-CH-03-0.87um.png
writing output/CLDSNOW-ECONUS-RGB.png
selected time: [&lt;DataTime instance: 2021-05-28 06:51:14 &gt;]
writing output/DBRDUST-ECONUS-CH-01-0.47um.png
writing output/DBRDUST-ECONUS-CH-02-0.64um.png
writing output/DBRDUST-ECONUS-CH-03-0.87um.png
writing output/DBRDUST-ECONUS-RGB.png
selected time: [&lt;DataTime instance: 2021-05-28 06:56:14 &gt;]
writing output/GEOCOLR-ECONUS-CH-01-0.47um.png
writing output/GEOCOLR-ECONUS-CH-02-0.64um.png
writing output/GEOCOLR-ECONUS-CH-03-0.87um.png
writing output/GEOCOLR-ECONUS-RGB.png
Done!
</pre></div>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">Figure</span> <span class="n">size</span> <span class="mi">432</span><span class="n">x288</span> <span class="k">with</span> <span class="mi">0</span> <span class="n">Axes</span><span class="o">&gt;</span>
</pre></div>
</div>
<img alt="../../_images/GOES_CIRA_Product_Writer_25_2.png" src="../../_images/GOES_CIRA_Product_Writer_25_2.png" />
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">Figure</span> <span class="n">size</span> <span class="mi">432</span><span class="n">x288</span> <span class="k">with</span> <span class="mi">0</span> <span class="n">Axes</span><span class="o">&gt;</span>
</pre></div>
</div>
<img alt="../../_images/GOES_CIRA_Product_Writer_25_4.png" src="../../_images/GOES_CIRA_Product_Writer_25_4.png" />
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">Figure</span> <span class="n">size</span> <span class="mi">432</span><span class="n">x288</span> <span class="k">with</span> <span class="mi">0</span> <span class="n">Axes</span><span class="o">&gt;</span>
</pre></div>
</div>
<img alt="../../_images/GOES_CIRA_Product_Writer_25_6.png" src="../../_images/GOES_CIRA_Product_Writer_25_6.png" />
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html">Top</a></p>
</div>
</div>
<hr class="docutils" />
<div class="section" id="see-also">
<h3>6 See Also<a class="headerlink" href="#see-also" title="Permalink to this headline"></a></h3>
<div class="section" id="related-notebooks">
<h4>6.1 Related Notebooks<a class="headerlink" href="#related-notebooks" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><p><a class="reference external" href="http://unidata.github.io/python-awips/examples/generated/Satellite_Imagery.html">Satellite
Imagery</a></p></li>
</ul>
</div>
<div class="section" id="additional-documentation">
<h4>6.2 Additional Documentation<a class="headerlink" href="#additional-documentation" title="Permalink to this headline"></a></h4>
<p><strong>CIRA Quick Guides</strong></p>
<ul class="simple">
<li><p><a class="reference external" href="https://rammb.cira.colostate.edu/training/visit/quick_guides/QuickGuide_DEBRA-Dust_20210217.pdf">DEBRA-Dust</a></p></li>
<li><p><a class="reference external" href="https://rammb.cira.colostate.edu/training/visit/quick_guides/GOES_Cloud_Snow_Discriminator_Quick_Guide_20190814.pdf">Cloud-Snow</a></p></li>
<li><p><a class="reference external" href="https://rammb.cira.colostate.edu/training/visit/quick_guides/QuickGuide_CIRA_Geocolor_20171019.pdf">GEOCOLOR</a></p></li>
</ul>
<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.dataaccess.DataAccessLayer.changeEDEXHost">DataAccessLayer.changeEDEXHost()</a></p></li>
<li><p><a class="reference external" href="http://unidata.github.io/python-awips/api/DataAccessLayer.html#awips.dataaccess.DataAccessLayer.newDataRequest">DataAccessLayer.newDataRequest()</a></p></li>
<li><p><a class="reference external" href="http://unidata.github.io/python-awips/api/DataAccessLayer.html#awips.dataaccess.DataAccessLayer.getAvailableLocationNames">DataAccessLayer.getAvailableLocationNames()</a></p></li>
<li><p><a class="reference external" href="http://unidata.github.io/python-awips/api/DataAccessLayer.html#awips.dataaccess.DataAccessLayer.getOptionalIdentifiers">DataAccessLayer.getOptionalIdentifiers()</a></p></li>
<li><p><a class="reference external" href="http://unidata.github.io/python-awips/api/DataAccessLayer.html#awips.dataaccess.DataAccessLayer.getIdentifierValues">DataAccessLayer.getIdentifierValues()</a></p></li>
<li><p><a class="reference external" href="http://unidata.github.io/python-awips/api/DataAccessLayer.html#awips.dataaccess.DataAccessLayer.getAvailableTimes">DataAccessLayer.getAvailableTimes()</a></p></li>
<li><p><a class="reference external" href="http://unidata.github.io/python-awips/api/IDataRequest.html">IDataRequest</a></p></li>
</ul>
<p><strong>matplotlib</strong></p>
<ul class="simple">
<li><p><a class="reference external" href="https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.html">matplotlib.pyplot()</a></p></li>
<li><p><a class="reference external" href="https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.axes.html">matplotlib.pyplot.axes()</a></p></li>
<li><p><a class="reference external" href="https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.figure.html">matplotlib.pyplot.figure()</a></p></li>
</ul>
<p><strong>numpy</strong></p>
<ul class="simple">
<li><p><a class="reference external" href="https://numpy.org/doc/stable/reference/generated/numpy.clip.html">numpy.clip()</a></p></li>
<li><p><a class="reference external" href="https://numpy.org/doc/stable/reference/generated/numpy.dstack.html">numpy.dstack()</a></p></li>
</ul>
<p><a class="reference external" href="https://unidata.github.io/python-awips/examples/generated/GOES_CIRA_Product_Writer.html">Top</a></p>
<hr class="docutils" />
</div>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="GOES_Geostationary_Lightning_Mapper.html" class="btn btn-neutral float-right" title="GOES Geostationary Lightning Mapper" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="Forecast_Model_Vertical_Sounding.html" class="btn btn-neutral float-left" title="Forecast Model Vertical Sounding" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&#169; 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 type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View file

@ -43,7 +43,7 @@
<link rel="index" title="Index" href="../../genindex.html" /> <link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" /> <link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Grid Levels and Parameters" href="Grid_Levels_and_Parameters.html" /> <link rel="next" title="Grid Levels and Parameters" href="Grid_Levels_and_Parameters.html" />
<link rel="prev" title="Forecast Model Vertical Sounding" href="Forecast_Model_Vertical_Sounding.html" /> <link rel="prev" title="GOES CIRA Product Writer" href="GOES_CIRA_Product_Writer.html" />
</head> </head>
<body class="wy-body-for-nav"> <body class="wy-body-for-nav">
@ -98,6 +98,7 @@
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Data Plotting Examples</a><ul class="current"> <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="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="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 current"><a class="current reference internal" href="#">GOES Geostationary Lightning Mapper</a><ul> <li class="toctree-l2 current"><a class="current reference internal" href="#">GOES Geostationary Lightning Mapper</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#glm-sources-and-parameters">GLM Sources and Parameters</a></li> <li class="toctree-l3"><a class="reference internal" href="#glm-sources-and-parameters">GLM Sources and Parameters</a></li>
</ul> </ul>
@ -285,7 +286,7 @@ tornadoes, hurricanes, flash floods, snowstorms and fires.</p>
<footer> <footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="Grid_Levels_and_Parameters.html" class="btn btn-neutral float-right" title="Grid Levels and Parameters" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> <a href="Grid_Levels_and_Parameters.html" class="btn btn-neutral float-right" title="Grid Levels and Parameters" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="Forecast_Model_Vertical_Sounding.html" class="btn btn-neutral float-left" title="Forecast Model Vertical Sounding" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> <a href="GOES_CIRA_Product_Writer.html" class="btn btn-neutral float-left" title="GOES CIRA Product Writer" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div> </div>
<hr/> <hr/>

View file

@ -98,6 +98,7 @@
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Data Plotting Examples</a><ul class="current"> <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="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="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="GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</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 current"><a class="current reference internal" href="#">Grid Levels and Parameters</a><ul> <li class="toctree-l2 current"><a class="current reference internal" href="#">Grid Levels and Parameters</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#objectives">Objectives</a><ul> <li class="toctree-l3"><a class="reference internal" href="#objectives">Objectives</a><ul>

View file

@ -98,6 +98,7 @@
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Data Plotting Examples</a><ul class="current"> <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="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="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="GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</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"><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="#">Grids and Cartopy</a><ul> <li class="toctree-l2 current"><a class="current reference internal" href="#">Grids and Cartopy</a><ul>

View file

@ -98,6 +98,7 @@
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Data Plotting Examples</a><ul class="current"> <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="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="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="GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</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"><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="Grids_and_Cartopy.html">Grids and Cartopy</a></li> <li class="toctree-l2"><a class="reference internal" href="Grids_and_Cartopy.html">Grids and Cartopy</a></li>

View file

@ -98,6 +98,7 @@
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Data Plotting Examples</a><ul class="current"> <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="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="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="GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</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"><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="Grids_and_Cartopy.html">Grids and Cartopy</a></li> <li class="toctree-l2"><a class="reference internal" href="Grids_and_Cartopy.html">Grids and Cartopy</a></li>

View file

@ -98,6 +98,7 @@
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Data Plotting Examples</a><ul class="current"> <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="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="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="GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</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"><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="Grids_and_Cartopy.html">Grids and Cartopy</a></li> <li class="toctree-l2"><a class="reference internal" href="Grids_and_Cartopy.html">Grids and Cartopy</a></li>

View file

@ -98,6 +98,7 @@
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Data Plotting Examples</a><ul class="current"> <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="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="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="GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</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"><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="Grids_and_Cartopy.html">Grids and Cartopy</a></li> <li class="toctree-l2"><a class="reference internal" href="Grids_and_Cartopy.html">Grids and Cartopy</a></li>

View file

@ -98,6 +98,7 @@
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Data Plotting Examples</a><ul class="current"> <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="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="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="GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</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"><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="Grids_and_Cartopy.html">Grids and Cartopy</a></li> <li class="toctree-l2"><a class="reference internal" href="Grids_and_Cartopy.html">Grids and Cartopy</a></li>

View file

@ -98,6 +98,7 @@
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Data Plotting Examples</a><ul class="current"> <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="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="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="GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</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"><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="Grids_and_Cartopy.html">Grids and Cartopy</a></li> <li class="toctree-l2"><a class="reference internal" href="Grids_and_Cartopy.html">Grids and Cartopy</a></li>

View file

@ -98,6 +98,7 @@
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Data Plotting Examples</a><ul class="current"> <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="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="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="GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</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"><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="Grids_and_Cartopy.html">Grids and Cartopy</a></li> <li class="toctree-l2"><a class="reference internal" href="Grids_and_Cartopy.html">Grids and Cartopy</a></li>

View file

@ -98,6 +98,7 @@
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Data Plotting Examples</a><ul class="current"> <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="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="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="GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</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"><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="Grids_and_Cartopy.html">Grids and Cartopy</a></li> <li class="toctree-l2"><a class="reference internal" href="Grids_and_Cartopy.html">Grids and Cartopy</a></li>

View file

@ -98,6 +98,7 @@
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">Data Plotting Examples</a><ul class="current"> <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="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="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="GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</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"><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="Grids_and_Cartopy.html">Grids and Cartopy</a></li> <li class="toctree-l2"><a class="reference internal" href="Grids_and_Cartopy.html">Grids and Cartopy</a></li>

View file

@ -98,6 +98,7 @@
<li class="toctree-l1 current"><a class="current reference internal" href="#">Data Plotting Examples</a><ul> <li class="toctree-l1 current"><a class="current reference internal" href="#">Data Plotting Examples</a><ul>
<li class="toctree-l2"><a class="reference internal" href="generated/Colored_Surface_Temperature_Plot.html">Colored Surface Temperature Plot</a></li> <li class="toctree-l2"><a class="reference internal" href="generated/Colored_Surface_Temperature_Plot.html">Colored Surface Temperature Plot</a></li>
<li class="toctree-l2"><a class="reference internal" href="generated/Forecast_Model_Vertical_Sounding.html">Forecast Model Vertical Sounding</a></li> <li class="toctree-l2"><a class="reference internal" href="generated/Forecast_Model_Vertical_Sounding.html">Forecast Model Vertical Sounding</a></li>
<li class="toctree-l2"><a class="reference internal" href="generated/GOES_CIRA_Product_Writer.html">GOES CIRA Product Writer</a></li>
<li class="toctree-l2"><a class="reference internal" href="generated/GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</a></li> <li class="toctree-l2"><a class="reference internal" href="generated/GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</a></li>
<li class="toctree-l2"><a class="reference internal" href="generated/Grid_Levels_and_Parameters.html">Grid Levels and Parameters</a></li> <li class="toctree-l2"><a class="reference internal" href="generated/Grid_Levels_and_Parameters.html">Grid Levels and Parameters</a></li>
<li class="toctree-l2"><a class="reference internal" href="generated/Grids_and_Cartopy.html">Grids and Cartopy</a></li> <li class="toctree-l2"><a class="reference internal" href="generated/Grids_and_Cartopy.html">Grids and Cartopy</a></li>
@ -188,6 +189,7 @@
<ul> <ul>
<li class="toctree-l1"><a class="reference internal" href="generated/Colored_Surface_Temperature_Plot.html">Colored Surface Temperature Plot</a></li> <li class="toctree-l1"><a class="reference internal" href="generated/Colored_Surface_Temperature_Plot.html">Colored Surface Temperature Plot</a></li>
<li class="toctree-l1"><a class="reference internal" href="generated/Forecast_Model_Vertical_Sounding.html">Forecast Model Vertical Sounding</a></li> <li class="toctree-l1"><a class="reference internal" href="generated/Forecast_Model_Vertical_Sounding.html">Forecast Model Vertical Sounding</a></li>
<li class="toctree-l1"><a class="reference internal" href="generated/GOES_CIRA_Product_Writer.html">GOES CIRA Product Writer</a></li>
<li class="toctree-l1"><a class="reference internal" href="generated/GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</a></li> <li class="toctree-l1"><a class="reference internal" href="generated/GOES_Geostationary_Lightning_Mapper.html">GOES Geostationary Lightning Mapper</a></li>
<li class="toctree-l1"><a class="reference internal" href="generated/Grid_Levels_and_Parameters.html">Grid Levels and Parameters</a></li> <li class="toctree-l1"><a class="reference internal" href="generated/Grid_Levels_and_Parameters.html">Grid Levels and Parameters</a></li>
<li class="toctree-l1"><a class="reference internal" href="generated/Grids_and_Cartopy.html">Grids and Cartopy</a></li> <li class="toctree-l1"><a class="reference internal" href="generated/Grids_and_Cartopy.html">Grids and Cartopy</a></li>

Binary file not shown.

File diff suppressed because one or more lines are too long