Adventures with geo2grid: Creating Stereoscopic Imagery in True Color

March 14th, 2019 |

GOES-17 True Color (left) and Himawari-8 True Color (right) at 0330 UTC on 13 March 2019 (Click to enlarge).

Geo2grid is a python-based software package that creates GeoTIFF imagery from native Himawari or GOES-16/GOES-17 imagery, as noted here. This blog post documents how to use the geo2grid software to create stereoscopic imagery, using either a Himawari-8/GOES-17 pairing, or a GOES-16/GOES-17 pairing. This requires first a remapping of the imagery to a fixed domain; when Geostationary Satellites aren’t separated by a great distance — for example when GOES-17 was in the test position and GOES-16 was at 75.2 — native projections can be used. That’s not the case with Satellites separated by 60 degrees of longitude.

Fortunately, geo2grid allows for a way to define a grid onto which the extracted data will be placed. The shell script command to create the map parameters is shown below:

$GEO2GRID_HOME/bin/p2g_grid_helper.sh G17H8Stereo -175.0 0.0 2000 -2000 1000 1000 > $GEO2GRID_HOME/mygrids.conf

I’m creating a map called ‘G17H8Stereo’ that is centered at 175 W and the Equator (Note: if you include a decimal point, you must include a digit afterwards. Some scripting languages fail to interpret ‘-175.’ correctly). The x-direction spacing is 2000 m (i.e., 2 km) and the y-direction spacing is also 2 km (that value is negative because point 1,1 is in the northwest corner). The grid size being created here is 1000×1000. If you were to look in the file created, mygrids.conf, you’d see a line looking like this:

G17H8Stereo, proj4, +proj=eqc +datum=WGS84 +ellps=WGS84 +lat_ts=0.00000 +lon_0=-175.00000 +units=m +no_defs, 1000, 1000, 2000.00000, -2000.00000, 176.01685deg, 8.98315deg

Note that the file name must have that “.conf” extension! The reading software expects it.

Data for both times (Full Disk imagery) has been downloaded and placed in directories.  This is HSD *.DAT files for Himawari-8 and netCDF Radiance files from CLASS for GOES-17.  This is a lot of data to move around.  The geo2grid invocation to create the True Color Imagery will look something like this for Himawari-8:

$GEO2GRID_HOME/bin/geo2grid.sh -r ahi_hsd -w geotiff –grid-configs $GEO2GRID_HOME/mygrids.conf -g G17H8Stereo –method nearest -f /data-ssd/CLASS/CSPPCheck/Stereo/H8/

The GOES-17 call will look like this:

$GEO2GRID_HOME/bin/geo2grid.sh -r abi_l1b -w geotiff –grid-configs $GEO2GRID_HOME/mygrids.conf -g G17H8Stereo –method nearest -f /data-ssd/CLASS/CSPPCheck/Stereo/

In both cases, –grid-configs is used to specify the grid to be used, with the -g tag naming the grid (the same name as used in the p2g_grid_helper.sh call above. The method of interpolation (the –method flag) is nearest neighbor, so a simple interpolation is used. Again, remember that those long dashes are really two short dashes.

Geo2grid does have built-in maps that you can use, and these are listed in the on-line documentation; you would include something like “-g lcc-aus” and that would put the data on a lambert conformal grid centered over Australia (not a useful grid for GOES-17, but very nice for Himawari-8 and for the coming GEOKOMPSAT-2!)

True Color imagery is created by these geo2grid.sh calls — and imagery for all 16 bands is created as well. (You can use the -c flag in geo2grid.sh to limit what is created if you wish). That imagery is shown above. If you cross your eyes and focus on the image that appears in the middle, it will be in three dimensions. Because this region is in the middle of the ocean, geo-location might be important, and the geo2grid script add_coastlines.sh is useful to add latitude/longitude lines.


How will True Color appear in regions with land features as might occur with GOES-16 and GOES-17?  Halfway between GOES-16 (75.2) and GOES-17 (137.2) is 106 degrees W Longitude.  I’ll create a map centered at 35 N, 106 W (near Albuquerque) that is 1200×1200 (also 2 km resolution):

$GEO2GRID_HOME/bin/p2g_grid_helper.sh G16G17Stereo -106.0 35.0 2000 -2000 1200 1200

The output is placed in the same Mygrids.conf file (More than one map definition can appear in that csv file). AFter downloading the GOES16/GOES17 data, I invoked to geo2grid commands:

$GEO2GRID_HOME/bin/geo2grid.sh -r abi_l1b -w geotiff –grid-configs $GEO2GRID_HOME/mygrids.conf -g G16G17Stereo –method nearest -f /data-ssd/CLASS/CSPPCheck/Stereo/G16G17/G17/

$GEO2GRID_HOME/bin/geo2grid.sh -r abi_l1b -w geotiff –grid-configs $GEO2GRID_HOME/mygrids.conf -g G16G17Stereo –method nearest -f /data-ssd/CLASS/CSPPCheck/Stereo/G16G17/G16/

Use ImageMagick to put the images side-by-side

montage GOES-16_ABI_RadF_true_color_20190313_210036_G16G17Stereo.tif GOES-17_ABI_RadF_true_color_20190313_210038_G16G17Stereo.tif -tile 2×1 -geometry +0+0 GOES-16_GOES-17_ABI_RadF_true_color_20190313_210036_G16G17Stereo.png

The beautiful stereoscopic image below is created.

True-Color imagery from GOES-16 (Left) and GOES-17 (Right) over the western United States at 2100 UTC on 13 March 2019 (Click to enlarge)

The mp4 animation below (click here for an animated gif) shows GOES-16 True Color imagery every 15 minutes (GOES-16 was in Mode 3 operations with 15-minute full-disks) from 1500 UTC to 2245 UTC. Imagery was created using geo2grid. The true-color imagery captures the dust that was kicked up by strong winds over Texas and New Mexico.

GOES-16 True Color animation, 1500-2245 UTC on 13 March 2019 (Click to play mp4 animation)

A similar animation made from GOES-17 from geo2grid is below. (Click here for an animated gif).

GOES-17 True Color animation, 1500-2245 UTC on 13 March 2019 (Click to play mp4 animation)

The GOES-16 and GOES-17 animations are combined into a true-color stereoscopic view of the strong cyclone below. The mp4 is below; click here for an animated gif.

True-Color imagery from GOES-16 (Left) and GOES-17 (Right) over the western United States from 1500-2245 UTC on 13 March 2019 (Click to play mp4 animation)

Geo2Grid software package released

March 12th, 2019 |

All sixteen GOES-16 ABI Bands, and a True-Color image, at 1807 UTC on 11 March 2019, created with Geo2Grid (Click to animate)

SSEC and CIMSS have released a processing package that converts GOES-R Level-1b Radiance files to full-resolution imagery. Geo2Grid is part of the CSPP-Geo package and offers a flexible scriptable method to convert data into imagery. It can be downloaded at this site (Free registration may be required). Documentation is available at that site as well.

System requirements include CentOS 6. The software generates GeoTIFF images at full spatial resolution for the given sector; Full-disk Band 2 (0.64 µm) imagery, and generation of True Color imagery is the biggest test of the system. The self-contained software package is downloaded as a gzipped tarball. After uncompressing and untarring the file, it is ready to go. You can order GOES-R Radiance Files from CLASS and then ftp those data into a directory. Converting the Radiance files into imagery is straightforward:

$GEO2GRID_HOME/bin/geo2grid.sh -r abi_l1b -w geotiff -f /data-ssd/CLASS/CSPPCheck

The ‘r’ flag tells the program what data are being read (you can also read AHI data), the ‘w’ flag describes the output (GeoTIFF is the only option at present) and the ‘f’ flag describes where the downloaded data sits. This command will generate imagery at full resolution for all the files, and that means the Band 2 (the 0.5-km “Red” Band”) file will have different dimensions than teh 1-km Bands 1, 3 and 5, and from the other Bands. A flag is available to force all imagery to the same resolution:

-g MIN –match-resolution

Those two flags will generate a series of files with 2-km resolution. (Note that the long dash in front of ‘match-resolution’ is actually two short dashes; -g MAX would force files with 0.5-km resolution).

It’s also possible to subsect imagery by adding something like

–ll-bbox -105 30 -80 50.

Results from that subsecting is shown below. Note that the first image also includes map information that is added with other flags:

–add-coastlines –coastlines-resolution=h –coastlines-outline=red –add-borders –borders-resolution=h –borders-outline=red

See the documentation for more information.

All sixteen GOES-16 ABI Bands, and a True-Color image, at 1807 UTC on 11 March 2019, zoomed in over the midwestern United States, created with Geo2Grid (Click to animate)

At present, the Geo2Grid software does not annotate the image, although the GeoTIFF files typically have Band and Day/Time information within the filename. Imagery in the animations in this blog has been annotated using ImageMagick, a command like this one:

convert -font helvetica -fill yellow -pointsize 32 -draw “text 20,700 ‘GOES-16 ABI Band 05 1807 UTC 11 March 2019′” GOES-16_ABI_RadC_C05_20190311_180712_GOES-East.gif GOES-16_ABI_RadC_C05_20190311_180712_GOES-Eastannotated.gif

Other software packages can do similar annotation, of course.

Smoke and Fog in the VIIRS Day/Night Band

July 2nd, 2015 |
Suomi NPP VIIRS 0.70 µm visible Day/Night Band and 11.45 µm - 3.74 µm Brightness Temperature Difference images, and Ceilings and Visibilities, ~0800 UTC (click to enlarge)

Suomi NPP VIIRS 0.70 µm visible Day/Night Band and 11.45 µm – 3.74 µm IR Brightness Temperature Difference images, and Ceilings and Visibilities, ~0800 UTC (click to enlarge)

July’s first Full Moon occurred at 0219 UTC on 2 July (a second full moon occurs later this month on 31 July). Strong illumination from the moon showed river valley fog in several tributaries of the Mississippi River (for example, the Wisconsin River in southwest Wisconsin; the Upper Iowa River in Iowa) across the Upper Midwest. The Suomi NPP VIIRS Day/Night Band also shows a plume of Canadian wildfire smoke aloft, stretching from central Iowa northwestward to western Minnesota. This smoke (visible on 1 July in Aqua true-color imagery from the MODIS Today site) is not apparent in the IR Brightness Temperature Difference field, although the river valley fog certainly is. Smoke is transparent to most infrared channels and detection at night is very difficult if visible information such as that provided by the Day/Night Band is not present.

The VIIRS Day/Night Band also enabled detection of the dense plume of Canadian wildfire smoke as it moved off the US East Coast and over the adjacent offshore waters of the western Atlantic Ocean at 0614 UTC  (below). Again, note that the smoke aloft does not exhibit a signature on the corresponding VIIRS Infrared imagery.

Suomi NPP VIIRS 0.7 µm Day/Night Band and 11.45 µm Infrared images (click to enlarge)

Suomi NPP VIIRS 0.7 µm Day/Night Band and 11.45 µm Infrared images (click to enlarge)

Why 1-minute data matters: Beavertails

June 4th, 2015 |
GOES-14 Visible (0.6263 µm) Imagery, 04 June 2015.  1-minute imagery on the left, 5-minute imagery on the right (click to play animation)

GOES-14 Visible (0.6263 µm) Imagery, 04 June 2015. 1-minute imagery on the left, 5-minute imagery on the right (click to play animation)

Beavertails are ephemeral cloud features that form in the inflow of supercell thunderstorms. They are horizontally long and roughly parallel to the inflow warm front. Its appearance (and presence) is affected by and influences inflow into the storm, and by inference, it affects radar returns. That is — a change in the Beavertail cloud can precede a change in radar. Accurate detection of this cloud type, then, aids the understanding of evolving storm morphology. The animation above shows a severe convective system over southeastern Wyoming, viewed at 1-minute intervals (Left) and at 5-minute intervals. Beavertails that form persist for about 30 minutes, so 5-minute imagery will resolve them; however, the resolution of the 1-minute data is far better to monitor the small changes in size and shape that are related to storm inflow.

Do beavertail changes affect the radar? The animation below shows the ProbSevere product readout from 2000-2220 UTC (Courtesy John Cintineo, CIMSS) (Click here for a slow animation). (Click here for an animation (from 1918-2058 UTC) that includes warning polygons). The increases and decreases in the MRMS MESH appear unrelated to the formation/decay of the various beavertails.

NOAA/CIMSS ProbSevere Product, 2000-2020 UTC on 4 June 2015 (click to animate)

NOAA/CIMSS ProbSevere Product, 2000-2020 UTC on 4 June 2015 (click to play animation)

This storm was captured by different chasers. This YouTube video from Scott Longmore shows the evolution of the convective system from the ground. Hat/tip to Jennifer Laflin, NWS EAX and Chad Gravelle, OPG, for alerting us to this case.