Gridded NUCAPS in AWIPS, part II

November 12th, 2019 |

NUCAPS horizontal plots of 850-hPa temperature, 1643-1705 UTC on 12 November 2019, and the NUCAPS Sounding Availability plots (Click to enlarge)

As noted in this post from October, horizontal fields of thermodynamic variables that have been derived from NUCAPS vertical profiles are now available in AWIPS. The fields give a swath of observations derived from infrared and microwave sounders in regions of the troposphere where observations by Radiosondes happen only occasionally. In this case, NUCAPS observed the strong cold front moving southward into the north Atlantic. Temperatures over eastern Canada at 850 hPa were in the teens below 0 Celsius, and in the teens (Celsius) out over the Atlantic.

850-hPa Temperatures derived from NUCAPS Soundings, 1653 UTC on 12 November 2019 (Click to enlarge)

Lower-tropospheric temperatures are an important variable to know when early-season cold airmasses are cold enough that the temperature difference between 850 hPa and surface water bodies — such as rivers and lakes — is sufficient to support Lake (or River) Effect clouds and precipitation. River-effect flurries hit mid-town Memphis on the 12th of November, and the 0.86 “Veggie” image (0.86 µm, this wavelength was chosen because land/water contrasts are large in it) image, below, shows a band extending from the Mississippi River in northwest Tennessee southward into central Memphis. NUCAPS data at 850 on this day showed 850-mb temperatures around -10 C at 0900 UTC.

GOES-16 0.86 “Veggie” Band (0.86 µm) imagery, 1346 UTC on 12 November 2019 (Click to enlarge). Shelby County in Tennessee is outlined, and the arrow points to a River-Effect snow band that dropped flurries over mid-town Memphis.

Potential Vorticity anomaly approaching Baja California and Southern California

November 5th, 2019 |

GOES-17 Upper-level Water Vapor (6.2 µm), Mid-level Water Vapor (6.9 µm) and Air Mass RGB images, with and without contours of PV1.5 pressure [click to play animation |MP4]

GOES-17 Upper-level Water Vapor (6.2 µm), Mid-level Water Vapor (6.9 µm) and Air Mass RGB images, with and without contours of PV1.5 pressure [click to play animation |MP4]

GOES-17 (GOES-West) Upper-level Water Vapor (6.2 µm), Mid-level Water Vapor (6.9 µm) and Air Mass RGB images (above) displayed the signature of dry, ozone-rich air associated with a Potential Vorticity (PV) anomaly approaching Baja California and Southern California on 05 November 2019. The “dynamic tropopause” — taken to be the pressure of the PV1.5 surface — descended to the 500 hPa level within this PV anomaly.

A GOES-17 Water Vapor image with plots of available NOAA-20 NUCAPS soundings (below) is labeled with sounding points within the core of the PV anomaly (Point 1) and within the core of the driest air (Point 2).

GOES-17 Upper-level Water Vapor (6.2 µm) images, with plots of available NOAA-20 NUCAPS soundings [click to enlarge]

GOES-17 Upper-level Water Vapor (6.2 µm) images, with plots of available NOAA-20 NUCAPS soundings [click to enlarge]

The NUCAPS sounding profiles for Point 1 and Point 2 are shown below. The middle/upper troposphere was quite dry at both locations.

NUCAPS sounding profile for Point 1 [click to enlarge]

NUCAPS sounding profile for Point 1 [click to enlarge]

NUCAPS sounding profile for Point 2 [click to enlarge]

NUCAPS sounding profile for Point 2 [click to enlarge]

Gridded NUCAPS fields are available in AWIPS

October 29th, 2019 |

NUCAPS Sounding Availability points from AWIPS, 1304 UTC on 29 October 2019, and the Temperature at 500 hPa at the same time (Click to enlarge)

Gridded NUCAPS fields (Here’s a NASA SpoRT VLab page on the product) are now available in AWIPS, effective with AWIPS Build 19.3.1. The imagery above includes a swath of NUCAPS points (called up via ‘NUCAPS Sounding Availability’) under the Satellite Tab, and the ‘S-NPP and NOAA-20’ choice there (even though, at present, only NOAA-20 NUCAPS profiles are supplied to AWIPS). A ‘Gridded NUCAPS’ choice is available right about the NUCAPS Sounding Availability, and this allows a user to choose Temperature, Dewpoint Temperature, Equivalent Potential Temperature, Lapse Rates (and more!) at different standard mandatory pressure levels (or layers, for Lapse Rates). Interpolation in the vertical has moved the native NUCAPS pressure levels (mentioned here) to standard pressure levels.

The plot above also shows the temperature at 500 hPa for the same time, 1304 UTC.  Gridded NUCAPS fields do not cover the entire extent of the NUCAPS Sounding Availability plots.  In addition, values are present for all sounding color dot points — green, yellow and red — on the theory that a user can identify the bad data visually.

The animation below shows a series of gridded fields over northern Canada, covering much of the the Sounding Availability plot.  Because of the timestamps on these different grids, they do not all time match the swath of NUCAPS Sounding Availability points. On this day, the size of some of the fields produced was quite small.  The size of the gridded region is limited by computational resources on AWIPS, and the upper limit is 20 lines of NUCAPS soundings — 600 soundings total that are horizontally and vertically interpolated. The size is also affected by the order in which the soundings appear in AWIPS. If a small chunk (say, 7 lines of soundings) comes in, then that small chunk will be processed into a horizontal grid. It’s more common that grid sizes will be closer to what occurred at 1304 UTC.

Temperature at 500 mb from NUCAPS Soundings, 1304 – 1311 UTC on 29 October 2019 (Click to enlarge)

If you look in the Product Browser on AWIPS, you will find far more data than are available under the ‘Gridded NUCAPS’ menu under ‘NOAA-20 and S-NPP’ under the satellite tab.  (Here’s just a small sample!)  For example, you can plot Ozone estimates from NUCAPS, as shown below — loaded as a grid then converted to an image.  Expect the presentation of NUCAPS horizontal fields in AWIPS to evolve with time.  In the meantime, this is a valuable data set to determine (for example) the likelihood of snow v. rain based on the 925 Temperature and Dewpoint Depression.

AWIPS Product Browser showing Ozone Estimates at 1304 UTC on 29 October 2019 (Click to enlarge)

(Thanks to Dr. Emily Berndt, NASA SpoRT, for clarifying remarks. Any errors that remain are the author’s, however!  Imagery courtesy NWS MKX)

Displaying NUCAPS values at one horizontal level using Polar2Grid

October 8th, 2019 |

Temperature at 707 hPa at 0621 UTC on 20 September 2019, from NUCAPS profiles (Click to enlarge)


NOAA-Unique Combined Atmospheric Processing System (NUCAPS) vertical profiles provide useful information derived from data from CrIS and ATMS instruments on board both Suomi-NPP and NOAA-20.  Infrared Sounder information from CrIS gives profiles in clear/partly cloud regions, and ATMS supplies information in regions that are uniformly cloudy.  (Click here for more information on NUCAPS profiles in AWIPS (profiles are also available here) ;  there are also CIMSS Blog entries on NUCAPS vertical profiles at this link, and at this link from the Hazardous Weather Testbed).

Polar2Grid is a Python-based data reader/converter designed as part of the Community Satellite Processing Package (CSPP) for Direct Broadcast data (such as found at this site);  it also works with data downloaded from NOAA CLASS.

NUCAPS vertical profiles can be used to create horizontal fields using data from pressure levels at each sounding location — each sounding generates values at the same levels that are present in the radiative transfer model used in retrieval that creates data (including levels at 852.78, 706.57, 496.6, 300 mb).  Polar2Grid can read these levels, but will not interpolate in the vertical (separate processing could be created for that).

The data that is downloaded (you might have to untar the data) from NOAA CLASS (choose “JPSS Sounder Products (JPSS_SND)” in the drop-down menu) will include file names that look something like this:

The file above refers to an Environmental Data Record (EDR) from Suomi NPP (npp is in the filename;  if these data were from NOAA-20, ‘j01’ would be there instead);  the files contains data from 20 September 2019, starting at 0622 and ending at 0623 UTC.  You might also see files with v1r0 — this flag distinguishes between NUCAPS 3 (v1r0) and NUCAPS 4.3 (v2r0).  Polar2Grid will read both.

After ordering and downloading the data from NOAA CLASS, and downloading and installing the Polar2Grid data, use polar2grid to create a field (in this case, using multiple EDRs between 0620 and 0650 UTC that have been downloaded into the /data-hdd/NUCAPSFromCLASS/ directory:

$POLAR2GRID_home/bin/ nucaps gtiff -p Temperature_707mb –grid-coverage 0 -vvv -f /data-hdd/NUCAPSFromCLASS/NUCAPS-EDR_v2r0_npp_s2019092006*.nc –rescale-configs Temperature.ini –distance-upper-bound 200

$POLAR2GRID_home has been defined using the unix export function, and it tells the package into which directory Polar2Grid was installed.  ‘nucaps gtiff’ tells the software that it will be reading nucaps data and outputting a geotiff file.  The ‘-p’ flag controls which product is being created, in this case Temperature at 707 mb — the integer value closest to the 706.57 mb level in the Radiative Transfer Model (the valid pressure values can be determined by inspecting the netCDF file and finding “Pressure” values).  (Other variables that can be displayed are listed at this website). The ‘-f’ flag directs the software to the directory holding the downloaded data; –distance-upper-bound 200 controls how far a data point extends its influence.  By default Polar2Grid will automatically rescale fields based on the data’s maximum/minimum.  To control this, create a file such as Temperature.ini, and include –rescale-configs flag.  The Temperature.ini file used  is below:


The output of the polar2grid invocation above will be a geotiff file: npp_nucaps_Temperature_707mb_20190920_062135_wgs84_fit.tif ;  note that the time/day are contained within the filename, as well as the satellite, parameter and level.

Colormaps can be applied to the geotiffs with the script:

$POLAR2GRID_home/bin/ $POLAR2GRID_home/colormaps/T200_320.cmap npp_nucaps_Temperature_707mb_20190920_062135_wgs84_fit.tif

This will overwrite the greyscale tif file with a color-enhanced image controlled by the specified color map.  In this case, I created a colormap that spans from 200 to 320 K, the wide range of data allowed in the Temperature.ini file.  That cmap is shown below.

# This is a cmap for temperatures from 200 to 320 K
# 75,0,130 is deep indigo — at the cold end
# 85 is at about 240 K — 1/3rd of the way from 200-320, 1/3rd of the way from 0-255
# 0,5,75 is a deep blue
# 129 is half-ish way from 1-255, so 260 K
# 0,200,200 is darkish cyan
# 140 is at about 265, 0, 150, 0 is a darkish green
# 155 is about 273, 255, 255, 0 is yellow
# 166 is about 278, 5K, 255,15,15 is red
# 176 is about 283 K, 255,182,193 is pink
# 186 is about 288 K, white
# 255 is at 320 K — slide from white at 288 K to grey at 320 K

Finally, apply a map to the tif file using the ‘’ script.  I usually move the color-enhanced tif file into the $POLAR2GRID_home/bin directory to do this, and for this case executed this command:

$POLAR2GRID_home/bin/ npp_nucaps_Temperature_707mb_20190920_062135_wgs84_fit.tif –coastlines-resolution=f –coastlines-level=6 –coastlines-outline=’magenta’ –add-coastlines –add-grid –add-borders –borders-level 1 –borders-resolution h

This will create a .png file.  I’ve done this with two 707-mb temperature fields, with different –distance-upper-bound values:  200, and 100, as indicated.  They are toggling together at the top of this blog post.

Polar2Grid v 2.3 (coming soon!) will allow the inclusion of a colorbar in the imagery.  Polar2Grid documentation can be found here.