Re: [ldm-users] Problem calculating GOES-16 brightness temperature from radiance

  • To: Pete Pokrandt <poker@xxxxxxxxxxxx>
  • Subject: Re: [ldm-users] Problem calculating GOES-16 brightness temperature from radiance
  • From: Arthur A Person <aap1@xxxxxxx>
  • Date: Fri, 26 Jan 2018 12:12:20 -0500 (EST)
Pete, 

Here's what I see in the imagery you provided: 

Examining the cloud feature in the Bay of Campeche for channel 13, the AOS 
image shows bright greens to a peak near orange which I would value in a range 
from 215 to 230 K (-58 to -43 C) using the AOS scale. For the NESDIS image, the 
colors 
range from navy blue to moderately bright green. Using the NESDIS scale you 
attached, 
I would value that range from -55 to -40 C. The difference between these two 
images is 
about 3 C which I would attribute to the limits of the subjective evaluation of 
the color ranges. 

Doing the same for channel 7, the AOS image shows light blues to navy blue 
which I would 
value in a range from 242 to 252 K (-31 to -21 C) using the AOS scale. For the 
NESDIS image, 
the colors range from light blue (or even starts in the gray) to navy blue or a 
range of about 
-40 to -25 C. The warmer end of this range is within the limitations of 
guessing at the color values, 
but the colder end is about 10 C different. Put another way, both the AOS and 
NESDIS images 
show about the same color for the coldest clouds (navy blue), but navy blue on 
the AOS curve 
is about 243 K (-30 C) versus -40 C for the NESDIS curve. 

The difference is more apparent when you replicate the NESDIS curve and plot 
the images comparing 
them side by side. I've attached channel 7 imagery from NESDIS and also what I 
created from the GRB 
data for 14:27Z this morning to show what I mean (although there's not a lot of 
high cloud out there today). 
The ColorBar image applies to the NESDIS image and I've tried to replicate that 
in my image. I'm convinced 
there's a difference in what's being shown on the NESDIS site versus what we're 
calculating from the GRB 
data... but why? It only appears to be channel 7 related, although I haven't 
looked at other channels besides 
13 (which you provided here) and 14. 

Art 

> From: "Pete Pokrandt" <poker@xxxxxxxxxxxx>
> To: "ARTHUR AUGUST PERSON" <aap1@xxxxxxx>
> Cc: "ldm-users" <ldm-users@xxxxxxxxxxxxxxxx>
> Sent: Thursday, January 25, 2018 5:20:24 PM
> Subject: Re: [ldm-users] Problem calculating GOES-16 brightness temperature 
> from
> radiance

> Art,

> It's a little hard, since we are using slightly different color tables.

> The NESDIS color table (attached) first uses color - cyan- at -30C (243K) and
> then goes through a rainbow color table up to about -70C (203K) and then black
> to white.

> My color table, based on what I had seen CIMSS using, first uses cyan at 253K
> (-20C) and cycles through colors up to about 203K (also -70C).

> These same color tables are used for all of the IR images except the WV (so 
> ABI
> 7 and 11-13)

> I've attached copies of the NESDIS and UW-AOS versions of both channels 7 and
> 13, all valid at 1930 UTC today, and the color table used by NESDIS since
> theirs are not on the image like mine are - and also an image from last April
> showing the IR color table that CIMSS used that I was trying to re[produce -
> although now that I look, I think my purple should go to 183K, not 180. That
> might be a bug for me, but only on the most cold temps.

> A visual comparison of both of these - their ABI7 to mine, and their ABI13 to
> mine - looks like we're the same, just using a different color scale..

> I also attempted to overlay their color scale with mine so the temps lined up
> (AOS_Color_Table_vs_NESDIS.png). The differences in our color scales would be
> most evident at warmer temps - so maybe they are more prominent at ABI 7 which
> is warmer than ABI 13 or 14, which are colder?

> Thoughts?

> Pete

> [
> http://www.weather.com/tv/shows/wx-geeks/video/the-incredible-shrinking-cold-pool
> ] --
> Pete Pokrandt - Systems Programmer
> UW-Madison Dept of Atmospheric and Oceanic Sciences
> 608-262-3086 - poker@xxxxxxxxxxxx

> From: Arthur A Person <aap1@xxxxxxx>
> Sent: Thursday, January 25, 2018 8:04 AM
> To: Pete Pokrandt
> Cc: ldm-users
> Subject: Re: [ldm-users] Problem calculating GOES-16 brightness temperature 
> from
> radiance
> Pete,

> No, I didn't. With your plots, I just did some more checking... Approximating
> your curve, I got similar results
> using GRB data from amazon. However, when I switch back to approximating the
> curve on
> https://www.star.nesdis.noaa.gov/GOES/GOES16_FullDisk_Band.php?band=07&length=24
> and plotting, my image again appears warmer. How do your plots compare to 
> what's
> on the star site?

> Thanks... Art

>> From: "Pete Pokrandt" <poker@xxxxxxxxxxxx>
>> To: "ARTHUR AUGUST PERSON" <aap1@xxxxxxx>
>> Cc: "ldm-users" <ldm-users@xxxxxxxxxxxxxxxx>
>> Sent: Wednesday, January 24, 2018 10:48:46 PM
>> Subject: Re: [ldm-users] Problem calculating GOES-16 brightness temperature 
>> from
>> radiance

>> Art,

>> Did you ever get this figured out? I plotted up an ABI full disk image from 
>> the
>> GRB Radiance data coming in from both the Unidata DIFAX feed and from the 
>> tiled
>> NOAAPORT CMI data. They seem pretty much the same to me, considering 
>> resolution
>> differences - 2km for GRB vs 6km for the NOAAPORT data.

>> GRB image - [
>> http://whirlwind.aos.wisc.edu/~wxp/goes16/test/201801210430_fulldisk_grb.jpg 
>> |
>> http://whirlwind.aos.wisc.edu/~wxp/goes16/test/201801210430_fulldisk_grb.jpg 
>> ]

>> NOAAPORT image - [
>> http://whirlwind.aos.wisc.edu/~wxp/goes16/test/201801210430_fulldisk.jpg |
>> http://whirlwind.aos.wisc.edu/~wxp/goes16/test/201801210430_fulldisk.jpg ]

>> Pete

>> [
>> http://www.weather.com/tv/shows/wx-geeks/video/the-incredible-shrinking-cold-pool
>> ] --
>> Pete Pokrandt - Systems Programmer
>> UW-Madison Dept of Atmospheric and Oceanic Sciences
>> 608-262-3086 - poker@xxxxxxxxxxxx

>> From: ldm-users-bounces@xxxxxxxxxxxxxxxx 
>> <ldm-users-bounces@xxxxxxxxxxxxxxxx> on
>> behalf of Arthur A Person <aap1@xxxxxxx>
>> Sent: Monday, January 15, 2018 4:45 PM
>> To: ldm-users
>> Subject: Re: [ldm-users] Problem calculating GOES-16 brightness temperature 
>> from
>> radiance
>> All --

>> I'm starting to think there may be a problem with the GOES-16 channel 7 GRB
>> NetCDF data. I wrote a short test code
>> (included below) that calculates brightness temperature and produces a png 
>> file
>> with an abbreviated color table for comparison
>> with the NESDIS https://www.star.nesdis.noaa.gov/GOES/GOES16_CONUS.php 
>> imagery.
>> When using the channel 7 data,
>> the calculated imagery appears noticeably warmer, but when using channel 14 
>> data
>> (for example), the images appear
>> very close in value.

>> Would someone else mind taking a look at this and confirm whether this might 
>> be
>> the case, or whether I'm just losing my mind?

>> Thanks!
>> Art

>> _________________________________________________________________________________________________________

>> from netCDF4 import Dataset
>> import numpy as np
>> import matplotlib.pyplot as plt
>> from matplotlib.colors import LinearSegmentedColormap

>> filename =
>> "amazon/OR_ABI-L1b-RadC-M3C07_G16_s20180151547235_e20180151550019_c20180151550058.nc"
>> #filename =
>> "amazon/OR_ABI-L1b-RadC-M3C14_G16_s20180151547235_e20180151550008_c20180151550050.nc"

>> dataset = Dataset(filename,'r')

>> # Get coefficients for calculation of brightness temperature
>> planck_fk1 = dataset.variables['planck_fk1'][:]
>> planck_fk2 = dataset.variables['planck_fk2'][:]
>> planck_bc1 = dataset.variables['planck_bc1'][:]
>> planck_bc2 = dataset.variables['planck_bc2'][:]
>> print("planck_fk1: ",planck_fk1)
>> print("planck_fk2: ",planck_fk2)
>> print("planck_bc1: ",planck_bc1)
>> print("planck_bc2: ",planck_bc2)

>> # Read the radiance data
>> rad = dataset.variables['Rad'][:]

>> dataset.close()

>> # Calculate brightness temperature
>> bt = ( (planck_fk2 / (np.log( (planck_fk1/rad)+1 ))) - planck_bc1 ) / 
>> planck_bc2
>> bt = bt - 273.15

>> # Create a color table to compare against
>> https://www.star.nesdis.noaa.gov/GOES/GOES16_CONUS.php imagery
>> red = []
>> green = []
>> blue = []
>> valmin=-110.
>> valmax=55.
>> red.append( [0.0, 0.0, 0.0] )
>> green.append( [0.0, 0.0, 0.0] )
>> blue.append( [0.0, 0.0, 0.0] )
>> red.append( [ (-50.0-valmin)/(valmax-valmin), 0.0, 0.0 ] )
>> green.append( [ (-50.0-valmin)/(valmax-valmin), 1.0, 1.0 ] )
>> blue.append( [ (-50.0-valmin)/(valmax-valmin), 0.0, 0.0 ] )
>> red.append( [ (-40.0-valmin)/(valmax-valmin), 0.0, 0.0 ] )
>> green.append( [ (-40.0-valmin)/(valmax-valmin), 0.0, 0.0 ] )
>> blue.append( [ (-40.0-valmin)/(valmax-valmin), 0.4, 0.4 ] )
>> red.append( [ (-30.0-valmin)/(valmax-valmin), 0.0, 0.8 ] )
>> green.append( [ (-30.0-valmin)/(valmax-valmin), 1.0, 0.8 ] )
>> blue.append( [ (-30.0-valmin)/(valmax-valmin), 1.0, 0.8 ] )
>> red.append( [ 1.0, 0.0, 0.0 ] )
>> green.append( [ 1.0, 0.0, 0.0 ] )
>> blue.append( [ 1.0, 0.0, 0.0 ] )
>> cdict = {'red': red, 'green': green, 'blue': blue}
>> ctbl = LinearSegmentedColormap('custom', cdict)

>> # Set the figure size
>> fig = plt.figure(1, figsize=(23, 15))

>> # Display the image
>> im = plt.imshow(bt, cmap=ctbl, vmin=valmin, vmax=valmax )

>> # Display a color bar
>> cb = plt.colorbar( orientation='vertical', shrink=0.7, pad=0.01, aspect=30 )
>> cb.set_label("Brightness Temperature (C)")

>> # Save the image to a png file
>> plt.savefig('plot.png', dpi=100)

>>> From: "Pete Pokrandt" <poker@xxxxxxxxxxxx>
>>> To: "ARTHUR AUGUST PERSON" <aap1@xxxxxxx>
>>> Cc: "ldm-users" <ldm-users@xxxxxxxxxxxxxxxx>
>>> Sent: Saturday, January 13, 2018 9:03:11 PM
>>> Subject: Re: [ldm-users] Problem calculating GOES-16 brightness temperature 
>>> from
>>> radiance

>>> Forgot to cc to the list.

>>> Here's a commented version of the script that I'm currently using to plot 
>>> ABI
>>> channel 13 (clear channel IR window) but the calculation for BT should work 
>>> for
>>> any of the channels 7-16.

>>> I am using just the radiance values read in from the netcdf files, without
>>> applying any scale/offset to them. Perhaps the netcdf4 read does that for 
>>> us? I
>>> am reading the scale and offset info in for reference, and printing them 
>>> out,
>>> but I am not using them in my calculations at all.

>>> If for some reason, the attachment doesn't come through, you can get the 
>>> file at

>>> [ http://sysadm.aos.wisc.edu/~poker/goes16_GRB_fulldisk_IR13_ircm.py |
>>> http://sysadm.aos.wisc.edu/~poker/goes16_GRB_fulldisk_IR13_ircm.py ]

>>> Hope this helps,
>>> Pete

>>> [
>>> http://www.weather.com/tv/shows/wx-geeks/video/the-incredible-shrinking-cold-pool
>>> ] --
>>> Pete Pokrandt - Systems Programmer
>>> UW-Madison Dept of Atmospheric and Oceanic Sciences
>>> 608-262-3086 - poker@xxxxxxxxxxxx

>>> From: Arthur A Person <aap1@xxxxxxx>
>>> Sent: Saturday, January 13, 2018 9:04 AM
>>> To: Pete Pokrandt
>>> Cc: ldm-users
>>> Subject: Re: [ldm-users] Problem calculating GOES-16 brightness temperature 
>>> from
>>> radiance
>>> Pete,

>>> Thanks for the help. Actually, I already tried adding parens to the 
>>> equation,
>>> including the variation you
>>> suggested, but the results are the same. Do you have a few lines of code 
>>> that
>>> worked for you that you'd
>>> be willing to share? Or, do you recall whether there's any issue with netCDF
>>> auto-scaling the input data,
>>> or any units conversion that has to be included that's not in the 
>>> documentation?

>>> Thanks... Art

>>>> From: "Pete Pokrandt" <poker@xxxxxxxxxxxx>
>>>> To: "ARTHUR AUGUST PERSON" <aap1@xxxxxxx>, "ldm-users"
>>>> <ldm-users@xxxxxxxxxxxxxxxx>
>>>> Sent: Friday, January 12, 2018 11:47:08 AM
>>>> Subject: Re: [ldm-users] Problem calculating GOES-16 brightness 
>>>> temperature from
>>>> radiance

>>>> Art,

>>>> I think it may be a parenthesis/order of operations issue. I seem to recall
>>>> having this same issue when I first started working with the GRB data.

>>>> Try this:

>>>> bt = ( planck_fk2 / ( np.log((planck_fk1 / rad) + 1 )) - planck_bc1) /
>>>> planck_bc2

>>>> Pete

>>>> From: ldm-users-bounces@xxxxxxxxxxxxxxxx 
>>>> <ldm-users-bounces@xxxxxxxxxxxxxxxx> on
>>>> behalf of Arthur A Person <aap1@xxxxxxx>
>>>> Sent: Friday, January 12, 2018 7:43 AM
>>>> To: ldm-users@xxxxxxxxxxxxxxxx
>>>> Subject: [ldm-users] Problem calculating GOES-16 brightness temperature 
>>>> from
>>>> radiance
>>>> Hi...

>>>> I'm trying to calculate brightness temperature from radiance for GOES-16 IR
>>>> channel 7 using rebroadcast data
>>>> but my values compared to McIDAS imagery are coming out 15 to 20 degrees C 
>>>> too
>>>> warm. I'm using the following
>>>> values and code:

>>>> Test imagery:
>>>> OR_ABI-L1b-RadC-M3C07_G16_s20180112232223_e20180112235008_c20180112235045.nc

>>>> rad (radiance) is read in from and auto-scaled by netCDF,
>>>> planck_fk1: 202263.0
>>>> planck_fk2: 3698.18994140625
>>>> planck_bc1: 0.4336099922657013
>>>> planck_bc2: 0.9993900060653687

>>>> bt = ( planck_fk2 / np.log( (planck_fk1/rad)+1 ) - planck_bc1 ) / 
>>>> planck_bc2
>>>> bt = bt - 273.15

>>>> Can anyone tell me if I'm missing a step or spot a dumb mistake?

>>>> Thanks... Art

>>>> --
>>>> Arthur A. Person
>>>> Assistant Research Professor, System Administrator
>>>> Penn State Department of Meteorology and Atmospheric Science
>>>> email: aap1@xxxxxxx, phone: 814-863-1563

>>> --
>>> Arthur A. Person
>>> Assistant Research Professor, System Administrator
>>> Penn State Department of Meteorology and Atmospheric Science
>>> email: aap1@xxxxxxx, phone: 814-863-1563

>> --
>> Arthur A. Person
>> Assistant Research Professor, System Administrator
>> Penn State Department of Meteorology and Atmospheric Science
>> email: aap1@xxxxxxx, phone: 814-863-1563

> --
> Arthur A. Person
> Assistant Research Professor, System Administrator
> Penn State Department of Meteorology and Atmospheric Science
> email: aap1@xxxxxxx, phone: 814-863-1563

-- 
Arthur A. Person 
Assistant Research Professor, System Administrator 
Penn State Department of Meteorology and Atmospheric Science 
email: aap1@xxxxxxx, phone: 814-863-1563 

Attachment: 20180261427_GOES16-ABI-CONUS-07-625x375.jpg
Description: JPEG image

Attachment: C07_20180261427.png
Description: PNG image

Attachment: ColorBar450Bands7_13_horz.png
Description: PNG image

  • 2018 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the ldm-users archives: