LightningCast output is produced for several satellites (e.g., GOES-16, GOES-18) over several sectors (e.g., CONUS, Mesoscale1, Mesoscale2), in several formats (e.g., netCDF4, json). This page briefly describes these formats.
netCDF4
LightningCast data are re-projected from the native geostationary projection to a Plate carrée projection in order to conform to a requirement in the AWIPS resource that LightningCast utilizes for NOAA's NWS.
Here is an example file:
LightningCast_GOES-16_RadC_20230901-174617.nc
-
GOES-16
is the satellite -
RadC
is the sector (RadC
is for the CONUS sector;RadM1
andRadM2
are Mesoscale sectors) -
20230901-174617
is the start time of the GOES-R satellite scan.
Files from the University of Wisconsin may have the prefix UWSSEC_AWIPS_
.
This is what the header looks like in an example netCDF4:
netcdf LightningCast_GOES-16_RadC_20230901-174617 {
dimensions:
x = 1050 ;
y = 610 ;
variables:
float PLTG_60min(y, x) ;
PLTG_60min:units = "%" ;
PLTG_60min:long_name = "Probability of lightning in the next 60 min" ;
PLTG_60min:missing_value = -100.f ;
float PLTG_60min_plax(y, x) ;
PLTG_60min_plax:units = "%" ;
PLTG_60min_plax:long_name = "Probability of lightning in the next 60 min" ;
PLTG_60min_plax:missing_value = -100.f ;
PLTG_60min_plax:parallax_cloud_height_in_m = 9000LL ;
// global attributes:
:title = "NOAA/CIMSS LightningCast" ;
:satellite = "GOES-16" ;
:sector = "RadC" ;
:orbital_slot = "GOES-East" ;
:sector_id = "ECONUS" ;
:time_coverage_start = "20230901-174617 UTC" ;
:file_created_time = "20230901-174941 UTC" ;
:model = "/home/jcintineo/lightningcast/src//static//fit_conv_model.h5" ;
:NWlat = 55LL ;
:NWlon = -135LL ;
:dx = 0.1 ;
:dy = 0.1 ;
}
The extent of the covered domain is defined by the dimensions x
(number of lons) and y
(number of lats), the global attributes for the northwest corner point NWlat
and NWlon
, and the global attributes for spacing between points dx
and dy
.
The two variables are very similar. The only difference is that PLTG_60min_plax
is parallax-corrected using a constant cloud-height assumption based on the attribute variable parallax_cloud_height_in_m
.
geoJSON
The geoJSON format for LightningCast is quite simple. Here is an example filename:
PLTGGOESEastRadC_20230901_180117.force.json
-
PLTG
stands for "probability of lightning". -
GOESEast
(orGOESWest
) is the slot of the observing satellite -
RadC
(orRadM1
,RadM2
,RadF
) is the sector name -
20230901_180117
is the timestamp
Each file has a few global attributes:
"source": "NOAA ProbSevere"
"product": "LightningCast - P(LTG) in 60 min"
"validTime": "20230901_180117 UTC"
"productionTime": "20230901_180428 UTC"
"type": "FeatureCollection"
Each feature in the geoJSON is for a discrete probability level (e.g., 10%, 25%, 50%, 75%) and has a geometry of type "LineString"
or "Polygon"
, with "coordinates"
in lon-lat space.
For a "Polygon"
for example:
"type": "Polygon", "coordinates": [[[-87.776, 49.188], [-87.799, 49.088], [-87.715, 48.946] ... [-87.776, 49.188]]]
Finally, there are several "properties"
for each features:
-
"OPACITY": "0"
#opacity to fill the contour level -
"BOPACITY": "100"
#opacity of the boundary of the LineString or Polygon -
"COLOR": "0 0 255"
#R-G-B triplet for the fill color of the contour -
"BCOLOR": "0 0 255"
#R-G-B triplet for the boundary color of the contour -
"WIDTH": "1"
#width of the contour -
"INFO": "PLTG: 10%"
#extra information."PLTG: 10%"
means this is a 10% probability of lightning contour