Saturday, July 14, 2018

GOES-R Infrared enhancement prototypes

I've recently started working on adding support for parametric enhancement curves to goestools.  These curves allow you to define an arbitrary multi-point RGB gradient based on the temperatures measured by the satellite imager.

Each HRIT/LRIT image includes an Image Data Function record that maps pixel values onto engineering units (e.g. degrees Kelvin).

In order to generate my own gradients, I looked at the NOAA / NESDIS / STAR site for GOES-East imagery.  The various bands shown on that site include gradient legends that are labeled with temperatures.
NOAA / NESDIS Water Vapor (Bands 8 & 9) Enhancement

By sampling the colors and estimating the temperatures, I could create parametric enhancement curves for each band, with units in degrees Kelvin:

  1. points = [ { units = 276, color = "#000000" }, 
  2.            { units = 275.9, color = "#ff0000" }, 
  3.            { units = 258, color = "#ffff00" }, 
  4.            { units = 250, color = "#000070" }, 
  5.            { units = 233, color = "#ffffff" }, 
  6.            { units = 195, color = "#408020" }, 
  7.            { units = 178, color = "#00ffff" } ]

In total, a GOES-R HRIT station requires at least four distinct enhancement profiles.  The first is a rainbow gradient, scaled appropriately for the warm temperatures in shortwave IR (band 7) images.

Shortwave IR (Band 7)

A second enhancement uses a mix of cool and warm colors to show temperature and moisture in the upper and mid-level water vapor images (bands 8 and 9).

Upper-Level Water Vapor (Band 8)
Mid-Level Water Vapor (Band 9)

The three longwave (clean, regular, and 'dirty') windows (bands 13, 14, and 15) all share the same rainbow enhancement, showing cold, high cloud tops as intense red areas.  This is the same color scheme as the shortwave IR, but scaled to better highlight the colder temperatures at this wavelength.

Longwave IR (Band 14)

GOES-17 first light on GOES-16 HRIT?

Going back and looking recent decoded imagery from my GOES-16 HRIT downlink, I noticed a number of mesoscale (M1) image files with "G17" in the filename.  Upon investigation, these turned out to be infrared images of Baja California from the GOES-17 satellite, currently parked in a checkout position at 89.5°W longitude.

GOES-17 Shortwave IR (Band 7) M1
2018-07-10 1500 UTC

The shortwave IR (band 7) images above from clearly show the northwestern Mexican coastline at around 1500 UTC on July 10.  The longwave IR (band 13) images shown below, however, show some severe banding artifacts that could be related to the ongoing ABI cooling problem.

GOES-17 Longwave IR (Band 13) M1
2018-07-10 1500UTC

Due to reliability issues and disk capacity in my current environment, it's impossible to determine if these were the first GOES-17 images to be sent on the GOES-16 HRIT, or just the first ones I noticed.

The data seems to have continued arriving over the past few days without stopping.  The latest longwave IR imagery shows much less severe banding despite the same time of day.  This is pure speculation, but perhaps NOAA has a partial solution to the cooling issue at hand?

GOES-17 Longwave IR (Band 13) M1
2018-07-14 1500UTC

Tuesday, July 10, 2018

Not-quite-a-hurricane-yet Chris

Tropical Storm Chris continues to churn away just off the Carolina coast at just below hurricane intensity.  The eye has developed quite a bit over the past couple of days, but still has quite a few clouds scattered within.

GOES-16 Mesoscale (M1) False Color, 2018-07-10 1933UTC

Monday, July 9, 2018

Maria and Himawari on HRIT

The High Rate Information Transmission (HRIT) broadcast stream from GOES-16 carries a number of Virtual Channels, each identified with a Virtual Channel ID (VCID).  These channels include all imagery data, EMWIN graphics, text products, and other data products.  As of July 2018, the imagery includes periodic, reduced-resolution copies of GOES-15 Imager and Himawari 8 AHI (Advanced Himawari Imager) spectral bands to provide coverage of the Pacific Ocean. 

NOAA published a very useful list of HRIT VCIDs (and lots of other interesting information) in a presentation to the HRIT/EMWIN User's Group in April 2018.

The Himawari data is of particular interest, since the AHI is almost identical to the GOES-16 ABI, and arrives at 2200x2200 pixels, on three spectral bands, once per hour.  While this is downscaled 4x (1/16 of the pixels) from its native resolution, it is still much sharper than the 859x811 of the older GOES-15 (West) imager.  All three channels can be seen below, highlighted by Super Typhoon Maria as it approaches Japan and Taiwan.

HRIT broadcasts of Himawari 8 AHI IR and Visible bands showing
Super Typhoon Maria approaching Asia, 2018-07-09 0051UTC
The bands are shown here individually, but there's some interesting possible future work in generating false color images that resemble the false-color and GeoColor products that are generated by RAMMB/CIRA.

100% Crop of Himawari 8 IR1 HRIT channel showing
Super Typhoon Maria, 2018-07-09 1551UTC

Sunday, July 8, 2018

Yet another homebrew GOES HRIT/EMWIN receiver

Following the well-documented footsteps of Lucas (@lucasteske/@OpenSatProject) and Pieter (@pnoordhuis), I've set up my own GOES-R HRIT/EMWIN receiver to acquire and decode NOAA weather data and satellite images from the new generation of GOES-R geostationary satellites.

Tripod mounted ZDAGP1900-20-15
To get enough signal from the noise, a medium-gain (20+ dB) linearly polarized antenna is required.  I'm using a ZDAGP1900-20-15 parabolic grid dish, nominally tuned for the 1.9GHz PCS cellular band.  ZDA also makes 1.8GHz and 1.7/2.1GHz dishes that might work better... I will likely order another one or two for Inmarsat and other L-band geo work.

Since geostationary satellites don't exhibit any apparent motion across the sky, a fixed mount for the antenna is sufficient.  For portable or semi-permanent use, Amazon vendors sell a number of inexpensive galvanized folding tripods for compact Ka-band dishes that are ideal.  My position in the northeast US puts GOES-16 nearly due south, about 40 degrees above the horizon.

To amplify and filter the weak satellite signal prior to demodulation and decoding, it's optimal to have an LNA (low-noise amplifier) placed as close to the antenna feed as practicable.  Also, some filtering should be applied to suppress interference from terrestrial PCS endpoints.  Power for the frontend amplifier(s) can be easily provided with DC bias over the coax feedline.

My first experiments were moderately successful, though the results left plenty of room for improvement.  While on the waiting list for a NooElec SawBird+, I tried a few different combinations of amplifiers and filters in the frontend with varying degrees of success.  Amplifiers included one or more of each Mini-Circuits ZX60-P103LN+ and China-sourced SPF5189Z boards.  I also tried including a VBFZ-1690-S+ bandpass filter at various positions in the chain, but there was no major impact.  Power was delivered at a nominal +4.5VDC from the built-in bias tee of either an Airspy Mini or an RTL-SDR Blog v3 USB SDR dongle and extracted with a cheap bias tee at the terminus of the frontend.  Experiments with a more expensive Pasternack PE1615 bias tee showed no improvement over the cheap tee at these frequencies and loads.

One of many experimental frontend configurations.  This one uses a single ZX60-P103LN+ amp
followed by VBFZ-1680-S+ bandpass, two more SPF5189Z amps, and the bias tee for power.
A bit confounded by the lack of change in performance by adding/removing amplifiers, I decided to look at the power supply path.  The nominal supply requirements for the various amplifiers is +5VDC, and the USB dongle bias tees deliver only +4.5VDC before loading and voltage drop over coax.  I tested the voltage at the distribution blocks with a multimeter and found only +3.75VDC.  Clearly I needed a better power supply option.

I went digging in the parts bin for a 7805 voltage regulator, some bypass capacitors, an LED, and current-limiting resistor and soldered it all onto a chunk of perfboard.  This regulator circuit takes a higher DC bias voltage off the coax (in this case, +9VDC provided by a bias tee near the computer) and gives the amplifiers a clean +5VDC signal.  By now, the SawBird+ sample had arrived from NooElec, so that went into the new design.

Latest frontend revision, with ZX60-P103LN+ at the front feeding a NooElec SawBird+
engineering sample, powered with regulated +5VDC from a coax bias of +9VDC.
For software, I've been using Pieter's excellent pietern/goestools package.  It runs very smoothly on a passively cooled ODroid XU4 ARM single-board computer with loads of headroom for other tasks.

Demodulating and decoding HRIT with less than 7% utilization on Exynos 5422-powered ODroid XU4
Once configured correctly, goesproc begins to output a complete tree of data products, including full-disk and mesoscale images from seven of the sixteen spectral bands of the GOES ABI (Advanced Baseline Imager).

Seven GOES ABI bands available over HRIT, plus remapped images generated by goesproc
Two of these, Band 2 (red visible light) and Band 13 ("clean" longwave infrared) are combined by goesproc and a set of lookup-based algorithms to construct false-color images that resemble what a human eye might see from space.  While not perfect, these images are gorgeous, especially when looking at high-resolution mesoscale imagery.

While the stunning, high-resolution images coming from the ABI on GOES-16 steal the show (and also take up the lion's share of the HRIT channel bandwidth), there's lots of very useful forecast, discussion, and watch/warning/advisory content transmitted over the embedded EMWIN channel.

FXUS61 KBTV 081945

Area Forecast Discussion
National Weather Service Burlington VT
345 PM EDT Sun Jul 8 2018

High pressure both at the surface and aloft will continue to provide
the North Country with clear skies and warm temperatures through
early this upcoming week. A weak cold front will produce scattered
showers and thunderstorms on Tuesday, before cooler air returns for
midweek. Temperatures will be in the mid 80s to lower 90s on
Monday with lows mainly in the upper 50s to mid 60s.


As of 343 PM EDT Sunday...Water vapor showing an expanding mid/upper
level ridge across the Great Lakes/Ohio Valley with some
building heights into the ne conus. This combined with 1028mb
surface high pres shifting off the northeast coast, will provide
the fa with mainly clear skies and mild temperatures thru
Monday Night. The combination of increasing low level moisture

Saturday, July 7, 2018