From: "Andrew Sundelin" Date: Wed, 30 Aug 1995 10:04:30 -0600 X-Mailer: Z-Mail (3.1.0 22feb94 MediaMail) To: nuwg@comet.ucar.edu Subject: Remapped Satellite CDL Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 Hi Folks, Once again here is the CDL we at FSL have worked up for AWIPS/ISPAN remapped satellite data. There are a couple of issues that probably need to be considered when examining this CDL: 1) The full GRIB parameterization of the navigation is included, but things like grid number, center id, etc. which would be included for grids are not included as (a) they are not part of the receipt data and (b) they don't don't seem particularly relevant to navigation in and of itself. 2) This CDL can handle the GRIB parameterization of Polar Stereographic, Lambert Conformal and Mercator. However, this means that in some cases certain variables are not used. For example, La2 and Lo2 are only relevant for Mercator grids so for PSG and Lambert data they contain the FillValue. Also, but less importantly, while the GRIB parameterization for Lambert uses the names Nx and Ny the parameterization for Mercator uses the names Ni and Nj for basically the same thing thus I've simply chosen one name. 3) I do not have any mention of a nav_model in the CDL at this time as the concept did not exist when this work was initially done. I will add it when we reach a concensus as to the proper method of implementing it. Other than that I think that the CDL is pretty straight forward. It is extremely analogous to what has been done for grids. I'll see you this afternoon. Andrew Sundelin sundelin@fsl.noaa.gov ------------------------------------------------------------------------ //------------------------------------------------------------------------------ // NOAA/ERL // Forecast Systems Laboratory // Facility Division // Remote Sensor Systems Branch // // sample_nh.cdl // // This is version 2.0 of the netCDF CDL definition of ISPAN/AWIPS remapped // satellite data. // // ** NOT A GENERIC ISPAN/AWIPS CDL -- JUST A REPRESENTATION OF A SAMPLE CASE ** // //------------------------------------------------------------------------------ netcdf ispan { // netCDF definition for ISPAN/AWIPS Mercator satellite data // using Northern Hemisphere Polar Stereographic as an example dimensions: y = 891; // note: the actual value will change x = 1352; // depending on the sector & resolution // and may not be consistant between // instances of the same sector nav = 1; // For georeferencing -- variables that use // this dimension define a mapping between // (x, y) indices and (latitude, longitude) channelsIR = 8; // # of IR channels w/ cal info name_length = 50; // Length of name strings centerLength = 5; // Length of center string scanModeLength = 30; // Length of scan mode string pixelValues = 256; // The number of possible pixel values variables: // Image Information // Note: values from 6 bit imagers are multiplied by 4 byte image(x, y); image:units = "counts"; image:long_name = "Image Pixel Values"; image:navigation_dim = "nav"; image:missing_value = 255; // Time Information double valtime; // FSL conventionalized name a la NUWG "reftime" valtime:units = "seconds since 1970-1-1 00:00:00.00"; valtime:long_name = "Valid Time"; // Calibrated Data LUTs double countValue(pixelValues); countValue:units = "counts"; countValue:missing_value = -9999.99; countValue:_FillValue = -9999.99; countValue:long_name = "Approximate 10-bit Count LUT"; // Note: ISPAN data has reduced numerical resolution from // the actual satellite and countValue helps to convert things // to approximate "satellite counts" double radiance(pixelValues); radiance:units = "(mW cm)/(m^2 steradian)"; radiance:missing_value = -9999.99; radiance:_FillValue = -9999.99; radiance:long_name = "Radiance LUT"; double brightTemp(pixelValues); brightTemp:units = "Kelvin"; brightTemp:missing_value = -9999.99; brightTemp:_FillValue = -9999.99; brightTemp:long_name = "Brightness Temperature LUT"; double calLutTime; calLutTime:units = "seconds since 1970-1-1 00:00:00.00"; calLutTime:long_name = "Time Calibration LUT Values Implemented"; // Channel Description Information byte detectorFilterId; detectorFilterId:long_name = "Filter/Detector Combination Identifier"; detectorFilterId:units = "FSL Local BUFR Table (0 02 192)"; // Other Scalar Descriptive Variables byte imageRes; imageRes:long_name = "Image Resolution"; imageRes:units = "km"; short satid; // NUWG conventionalized name satid:long_name = "Satellite Identifier"; satid:units = "WMO Table (0 01 007 - BUFR Supl #3 (VIII,1991))"; byte sectorId; sectorId:long_name = "ISPAN Sector Identifier"; sectorId:units = "NWS/ISPAN Standard Table (Table D.3)"; // Navigation Variables (basically uses GRIB names which are also NUWG names) char grid_type(nav, name_length); grid_type:long_name = "NWS/ISPAN Grid Type"; char grid_name(nav, name_length); grid_name:long_name = "Grid Name"; char y_dim(nav, name_length); y_dim:long_name = "Latitude Dimension"; char x_dim(nav, name_length); x_dim:long_name = "Longitude Dimension"; short Nx(nav); Nx:long_name = "Number of x Points"; short Ny(nav); Ny:long_name = "Number of y Points"; float La1(nav); La1:float_name = "Latitude of First Point"; La1:units = "degrees_north"; La1:missing_value = -9999.99; La1:valid_min = -90.0; La1:valid_max = +90.0; float Lo1(nav); Lo1:float_name = "Longitude of First Point"; Lo1:units = "degrees_east"; Lo1:missing_value = -9999.99; Lo1:valid_min = -180.0; Lo1:valid_max = +180.0; float La2(nav); La2:float_name = "Latitude of Last Point"; La2:units = "degrees_north"; La2:missing_value = -9999.99; La2:valid_min = -90.0; La2:valid_max = +90.0; float Lo2(nav); Lo2:float_name = "Longitude of Last Point"; Lo2:units = "degrees_east"; Lo2:missing_value = -9999.99; Lo2:valid_min = -180.0; Lo2:valid_max = +180.0; float Dx(nav); Dx:float_name = "x Grid Increment"; Dx:units = "meters"; Dx:missing_value = -9999.99; float Dy(nav); Dy:float_name = "y Grid Increment"; Dy:units = "meters"; Dy:missing_value = -9999.99; float Latin(nav); Latin:float_name = "Latitude of Tangent"; Latin:units = "degrees_north"; Latin:missing_value = -9999.99; Latin:valid_min = -90.0; Latin:valid_max = +90.0; float LoV(nav); LoV:float_name = "Longitude of Vertical"; LoV:units = "degrees_east"; LoV:missing_value = -9999.99; LoV:valid_min = -180.0; LoV:valid_max = +180.0; // The next four items do not conform to any current convention and are // subject to change. byte center(nav); center:units = "NWS/ISPAN Standard Table (Table D.1A Notes)"; center:long_name = "ISPAN Code for Image Projection Center"; char centerStr(nav, centerLength); center:units = "Name of pole on projection plane"; center:long_name = "Image Projection Center String"; byte scanMode(nav); scanMode:units = "NWS/ISPAN Standard Table (Table D.1B Notes)"; scanMode:long_name = "Satellite Scanning Mode"; char scanModeStr(nav, scanModeLength); scanMode:units = "Description of image scanning method"; scanMode:long_name = "Satellite Scanning Mode String"; // Standard Supplementary Information :history = "Encoded into netCDF by NOAA/FSL from NWS/ISPAN feed"; :title = "ISPAN Satellite Data"; :Conventions = "NUWG"; :origin = "NOAA/ERL Forecast Systems Laboratory, Boulder, CO"; :version = 2.0; // 3rd operational ed data: grid_type = "Polar Stereographic Projection Grid"; grid_name = "Northern Hemisphere Composite PSG"; x_dim = "x"; y_dim = "y"; Nx = 1352; Ny = 891; La1 = 7.838; Lo1 = -141.0279; La2 = -9999.99; // not used by ISPAN polar stereographic Lo2 = -9999.99; // not used by ISPAN polar stereographic Dx = 9087.1; Dy = 9087.1; Latin = 0; LoV = -105; }