The following example shows how to display GOES-16 data on a map.

The example data is available in the examples/data directory of your IDL installation. The data shows the level 1b radiance data on 21 August 2017. The dark circle over Wyoming is the shadow of the solar eclipse, while the yellow star marks the center of the eclipse at 11:48 MST.

The code below creates the graphic above. You can copy the entire block and paste it into the IDL command line to run it.

; Data courtesy NOAA GOES-16 Amazon S3 Bucket
; Original filename:
; OR_ABI-L1b-RadC-M3C01_G16_s20172331747188_e20172331749561_c20172331750006.nc
file = FILEPATH('GOES16_L1b-RadC_2017-8-21.nc', $
  SUBDIR=['examples', 'data'])
data = NCDF_Parse(file, /READ_DATA)
print, 'Time start = ', data['time_coverage_start', '_DATA']
 
; Extract the center longitude and radiance data
center_lon = data['geospatial_lat_lon_extent', $
  'geospatial_lon_nadir', '_DATA']
radiance = data['Rad','_DATA']
 
; Compute the X/Y pixel locations in radians
xscale = data['x', 'scale_factor', '_DATA']
xoffset = data['x', 'add_offset', '_DATA']
x_radians = data['x', '_DATA']*DOUBLE(xscale) + xoffset
yscale = data['y', 'scale_factor', '_DATA']
yoffset = data['y', 'add_offset', '_DATA']
y_radians = data['y', '_DATA']*DOUBLE(yscale) + yoffset
 
; Use the GOES-R (GOES-16) map projection
i = IMAGE(HIST_EQUAL(radiance), x_radians, y_radians, $
  RGB_TABLE=15, $
  LIMIT=[15,-120, 50, -60], MARGIN=[0.1,0.02,0.08,0.02], $
  MAP_PROJECTION='GOES-R', GRID_UNITS='meters', $
  CENTER_LONGITUDE=center_lon, $
  DIMENSIONS=[1000,600], $
  TITLE='GOES-16 Level 1b Radiance 2017-8-21')
   
mg = i.MapGrid
mg.label_position = 0
mg.clip = 0
 
mc = MAPCONTINENTS(/COUNTRIES)
mc = MAPCONTINENTS(/US)
 
; Solar eclipse center at 11:48 MST, 21 Aug 2017
s = SYMBOL(-104.14, 42.355, 'Star', /DATA, $
  /SYM_FILLED, SYM_COLOR='yellow', SYM_SIZE = 2)

Because the image is already in the GOES-16 projection, we need to specify the projection name (GOES-R), the grid units (meters), and the center longitude.

The NCDF_PARSE function is used to read all of the data into an OrderedHash. Then, the "bracket" notation is used to extract the data from the nested hashes.

Note: The x and y coordinates are actually in GOES-16 "radians", although we still specify "meters" for the units.

Resources