Processing GOES-R NetCDF files with WXP
LDM Data Flow
The GOES-R satellite files are sents as a set of tiles. Even though WXP can display the tiles individually, the ideal way to view the image is to composite the tiles into a single image. The data comes across as netCDF files with a WMO head attached. To view the netCDFs, the WMO header must be stripped from the beginning of the product. The tiles come in under a specific WMO header with a PXX extension. This extension specifies each tile starting with PAA through PAZ and then starts with PBA and continues. At the beginning the images were up to 48 small tiles but now come in 4 (full disk) or 15 (hi-res) tiles.
Compositing GOES-R Tiles
It starts with compositing the tiles. I have written a simple Python script using the netCDF module that creates a single netCDF image file from the tiles. Here are the LDM entries:
NOTHER TI([RSTU]...) KNES ([0-3][0-9])([0-2][0-9])([0-5][0-9]) (...) PIPE -close /home/ldm/scripts/strip_header /data/noaaport/satraw/(\2:yyyy)(\2:mm)\2_\3\4_g16_\1_\5.nc # Composite vis-blue NOTHER TI(R[CERSTUW]01) KNES ([0-3][0-9])([0-2][0-9])([0-5][0-9]) (PAA) EXEC /home/ldm/scripts/composite_goes16 /data/noaaport/satraw/(\2:yyyy)(\2:mm)\2_\3\4_g16_\1_\5.nc # Composite vis-red NOTHER TI(R[CERSTUW]02) KNES ([0-3][0-9])([0-2][0-9])([0-5][0-9]) (PAA) EXEC /home/ldm/scripts/composite_goes16 /data/noaaport/satraw/(\2:yyyy)(\2:mm)\2_\3\4_g16_\1_\5.nc # Composite wv NOTHER TI(R[CERSTUW]09) KNES ([0-3][0-9])([0-2][0-9])([0-5][0-9]) (PAA) EXEC /home/ldm/scripts/composite_goes16 /data/noaaport/satraw/(\2:yyyy)(\2:mm)\2_\3\4_g16_\1_\5.nc # Composite ir NOTHER TI(R[CERSTUW]14) KNES ([0-3][0-9])([0-2][0-9])([0-5][0-9]) (PAA) EXEC /home/ldm/scripts/composite_goes16 /data/noaaport/satraw/(\2:yyyy)(\2:mm)\2_\3\4_g16_\1_\5.nc
The strip header script removes the WMO header from the files so they are true netCDF files. The netCDF library can't handle a netCDF that's embedded inside other data.
Once it's written to disk, you can start the composite process. This Python script determines the number of tiles from the PAA (first tile) and then slowly adds tiles into the composite file as they come in. When all the tiles are received, it writes the full file. It will also time out after about 5 minutes and write what it has seen so far.
Displaying with WXP
The satplot program reads the netCDF file and converts it into a 8 bit WXP image for processing. WXP has the concept of a valued image which means there is, for IR images, a temperature value attached to each pixel value 0-255. You can then pass a color_fill file to satplot to enhance the image. There are sample color fill files in the See Also section below.
satplot -if=sat_ir_g16 -cof=sat_mb.cfl
The file type can be specified in the name convention file:
sat_vib_g16f %S/g16/%Y%m%d/%Y%m%d_%h%n_g16_full_vib.nc - 850000,cdf min=45 sat_vis_g16f %S/g16/%Y%m%d/%Y%m%d_%h%n_g16_full_vir.nc - 850000,cdf min=45 sat_ir_g16f %S/g16/%Y%m%d/%Y%m%d_%h%n_g16_full_ir.nc - 850000,cdf min=45 sat_wv_g16f %S/g16/%Y%m%d/%Y%m%d_%h%n_g16_full_wv.nc - 850000,cdf min=45 sat_vib_g16 %S/g16/%Y%m%d/%Y%m%d_%h%n_g16_us_vib.nc - 850000,cdf min=45 sat_vis_g16 %S/g16/%Y%m%d/%Y%m%d_%h%n_g16_us_vir.nc - 850000,cdf min=45 sat_ir_g16 %S/g16/%Y%m%d/%Y%m%d_%h%n_g16_us_ir.nc - 850000,cdf min=45 sat_wv_g16 %S/g16/%Y%m%d/%Y%m%d_%h%n_g16_us_wv.nc - 850000,cdf min=45
Otherwise, you'll have to add a -in=cdf to the command line. Here are a few samples:
- http://vietorweather.net/cgi-bin/wxp/satplot?if=sat_ir_g16&pd=at&cof=sat_mb.cfl&pa=bar&ge=1000x700
- http://vietorweather.net/cgi-bin/wxp/satplot?if=sat_vis_g16&pd=at&cof=sat_vis16.cfl&ge=1000x700
- http://vietorweather.net/cgi-bin/wxp/satplot?if=sat_wv_g16f&cof=sat_wv16.cfl&ge=800x800
See Also
Last updated May 1, 2020