netcdf example.L1A_OCI {
dimensions:
number_of_scans = 1722 ; // for a 5-minute granule, or set to UNLIMITED
SC_records = 321 ; // for a 5-minute granule at 1 Hz with 10 seconds of pad
tlm_packets = 300 ; // OCI telemetry at 1 Hz for 5 minutes
CCD_pixels = 1271 ; // this will depend on the spatial aggregation mode
SWIR_pixels = 1271 ;
blue_bands = 120 ; // this will depend on the spectral aggregation for each tap
red_bands = 120 ; // this will depend on the spectral aggregation for each tap
SWIR_bands = 9 ; // is this right?
DC_pixels = 114 ; // placeholder for dark calibration samples
number_of_taps = 16 ; // number of readout taps per CCD array
spatial_zones = 10; // number of spatial zones in table
number_of_temps = 8; // a WAG for now
quaternion_elements = 4 ;
vector_elements = 3 ;
encoder_samples = 200 ;
tilt_samples = 3600 ; // based on 10 Hz sample rate
MCE_block = 9 ;
sidecar_tlm = 76 ;
DAU_tlm = 664 ;
SC_hkt_block = 4096 ; // placeholder for raw S/C telemetry

// global attributes:
:title = "PACE OCI Level-1A Data" ;
:instrument = "OCI" ;
:product_name = "POyyyydddhhmmss.L1A_PACE.nc" ;
:processing_version = "V1.0" ;
:Conventions = "CF-1.6" ;
:institution = "NASA Goddard Space Flight Center, Ocean Biology Processing Group" ;
:license = "http://science.nasa.gov/earth-science/earth-science-data/data-information-policy/" ;
:naming_authority = "gov.nasa.gsfc.sci.oceancolor" ;
:keywords_vocabulary = "NASA Global Change Master Directory (GCMD) Science Keywords" ;
:stdname_vocabulary = "NetCDF Climate and Forecast (CF) Metadata Convention" ;
:creator_name = "NASA/GSFC" ;
:creator_email = "data@oceancolor.gsfc.nasa.gov" ;
:creator_url = "http://oceancolor.gsfc.nasa.gov" ;
:project = "PACE Project" ;
:publisher_name = "NASA/GSFC" ;
:publisher_email = "data@oceancolor.gsfc.nasa.gov" ;
:publisher_url = "http://oceancolor.gsfc.nasa.gov" ;
:processing_lsciel = "L1A" ;
:cdm_data_type = "swath" ;
:orbit_number = 12345 ;
:history = "" ;
:time_coverage_start = "yyyy-mm-ddThh:mm:ss.sssZ" ;
:time_coverage_end = "yyyy-mm-ddThh:mm:ss.sssZ" ;
:date_created = "yyyy-mm-ddThh:mm:ss.sssZ" ;
:startDirection = "Ascending" ;
:endDirection = "Ascending" ;
:data_collect_mode = "Earth Collect" ;
:pixel_offset = 0 ; // for extracted files
:CDL_version_date = "2018-08-29" ;

group: scan_line_attributes {
variables:
double scan_start_time(number_of_scans) ;
scan_start_time:_FillValue = -999.0 ;
scan_start_time:long_name = "Scan start time (seconds of day)" ;
scan_start_time:valid_min = 0.0 ;
scan_start_time:valid_max = 86400.999999 ;
scan_start_time:units = "seconds" ;
ulong scan_start_CCSDS_sec(number_of_scans) ;
scan_start_CCSDS_sec:_FillValue = 0s ;
scan_start_CCSDS_sec:long_name = "Scan start CCSDS time (seconds since 1958)" ;
scan_start_CCSDS_sec:valid_min = 1900000000 ;
scan_start_CCSDS_sec:valid_max = 2400000000 ;
scan_start_CCSDS_sec:units = "seconds" ;
long scan_start_CCSDS_usec(number_of_scans) ;
scan_start_CCSDS_usec:_FillValue = -999 ;
scan_start_CCSDS_usec:long_name = "Scan start CCSDS time (microseconds)" ;
scan_start_CCSDS_usec:valid_min = 0 ;
scan_start_CCSDS_usec:valid_max = 999999 ;
scan_start_CCSDS_usec:units = "microseconds" ;
long spin_ID(number_of_scans) ;
spin_ID:_FillValue = -999 ;
spin_ID:long_name = "Telescope spin counter from power-up" ;
spin_ID:valid_min = 0 ;
spin_ID:valid_max = 2147483647 ;
ubyte HAM_side(number_of_scans) ;
HAM_side:_FillValue = 255UB ;
HAM_side:long_name = "Half-angle mirror side" ;
HAM_side:valid_min = 0UB ;
HAM_side:valid_max = 1UB ;
} // group scan_line_attributes

group: spatial_spectral_modes { // these values will be the same for all scans in a granule
variables:
ubyte spatial_zone_data_type(spatial_zones) ;
spatial_zone_data_type:_FillValue = 255UB ;
spatial_zone_data_type:long_name = "CCD spatial aggregation zone ID" ;
spatial_zone_data_type:flag_values = 0b, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b, 9b, 10b, 11b ;
spatial_zone_data_type:flag_meanings = "no_data earth dark_cal solar_daily solar_monthly response_curve lunar diagnostic snapshop_trigger snapshop_duration static earth_spectrum" ;
ubyte spatial_aggregation(spatial_zones) ;
spatial_aggregation:_FillValue = 255UB ;
spatial_aggregation:long_name = "CCD spatial aggregation per zone" ;
spatial_aggregation:flag_values = 0b, 1b, 2b, 4b, 8b ;
spatial_aggregation:flag_meanings = "no_data 1:1 2:1 4:1 8:1" ;
short spatial_zone_lines(spatial_zones) ;
spatial_zone_lines:_FillValue = -999s ;
spatial_zone_lines:long_name = "CCD lines per aggregation zone" ;
spatial_zone_lines:valid_min = 0 ;
spatial_zone_lines:valid_max = 16384 ;
int blue_spectral_mode(number_of_taps) ;
blue_spectral_mode:_FillValue = 255UB ;
blue_spectral_mode:long_name = "Blue CCD spectral aggregation mode" ;
blue_spectral_mode:flag_values = 0b, 1b, 2b, 4b, 8b ;
blue_spectral_mode:flag_meanings = "disabled 1:1 2:1 4:1 8:1" ;
int red_spectral_mode(number_of_taps) ;
red_spectral_mode:_FillValue = 255UB ;
red_spectral_mode:long_name = "Red CCD spectral aggregation mode" ;
red_spectral_mode:flag_values = 0, 1, 2, 4, 8 ;
red_spectral_mode:flag_meanings = "disabled 1:1 2:1 4:1 8:1" ;
} // group spatial_spectral_modes

group: engineering_data {
variables:
ubyte sidecar_telemetry(tlm_packets, sidecar_tlm) ;
sidecar_telemetry:long_name = "OCI SIDECAR raw telemetry" ;
double sidecar_tlm_time(tlm_packets) ;
sidecar_tlm_time:_FillValue = -999.0 ;
sidecar_tlm_time:long_name = "SIDECAR telemetry packet time (seconds of day)" ;
sidecar_tlm_time:valid_min = 0. ;
sidecar_tlm_time:valid_max = 86400.999999 ;
sidecar_tlm_time:units = "seconds" ;
long sidecar_spin_ID(tlm_packets) ;
sidecar_spin_ID:_FillValue = -999 ;
sidecar_spin_ID:long_name = "Telescope spin ID from SIDECAR telemetry packets" ;
sidecar_spin_ID:valid_min = 0 ;
sidecar_spin_ID:valid_max = 2147483647 ;
ubyte DAU_telemetry(tlm_packets, DAU_tlm) ;
DAU_telemetry:long_name = "OCI DAU raw telemetry" ;
double DAU_tlm_time(tlm_packets) ;
DAU_tlm_time:_FillValue = -999. ;
DAU_tlm_time:long_name = "DAU telemetry packet time (seconds of day)" ;
DAU_tlm_time:valid_min = 0. ;
DAU_tlm_time:valid_max = 86400.999999 ;
DAU_tlm_time:units = "seconds" ;
long DAU_spin_ID(tlm_packets) ;
DAU_spin_ID:_FillValue = -999 ;
DAU_spin_ID:long_name = "Telescope spin ID from DAU telemetry packets" ;
DAU_spin_ID:valid_min = 0 ;
DAU_spin_ID:valid_max = 2147483647 ;
ulong MCE_tlm(number_of_scans, MCE_block) ;
MCE_tlm:long_name ="Mirror control electronics telemetry" ;
ushort RTA_phase_err(number_of_scans, encoder_samples) ;
RTA_phase_err:_FillValue = 65536 ;
RTA_phase_err:long_name = "RTA encoder samples" ;
ushort HAM_phase_err(number_of_scans, encoder_samples) ;
HAM_phase_err:_FillValue = 65536 ;
HAM_phase_err:long_name = "HAM encoder samples" ;
long agg_control(number_of_scans) ;
agg_control:_FillValue = -999 ;
agg_control:long_name = "Aggregation control fields" ;
agg_control:valid_min = 0 ;
agg_control:valid_max = 2047 ;
ushort blue_agg_error(number_of_scans) ;
blue_agg_error:long_name = "UVVIS aggregation error" ;
ushort red_agg_error(number_of_scans) ;
red_agg_error:long_name = "VISNIR aggregation error" ;
long dig_card_error(number_of_scans) ;
dig_card_error:_FillValue = -999 ;
dig_card_error:long_name = "Digital card error status" ;
dig_card_error:valid_min = 0 ;
dig_card_error:valid_max = 1048575 ;
uint temperatures(tlm_packets, number_of_temps) ;
temperatures:long_name = "Instrument temperatures" ;
ubyte SC_HKT_data(SC_records, SC_hkt_block) ;
SC_HKT_data:_FillValue = 255UB ;
SC_HKT_data:long_name = "S/C raw telemetry" ;
SC_HKT_data:valid_min = 0UB ;
SC_HKT_data:valid_max = 255UB ;
float tilt(tilt_samples) ;
tilt:_FillValue = -999.9 ;
tilt:long_name = "Tilt angle" ;
tilt:valid_min = -20.1 ;
tilt:valid_max = 20.1 ;
tilt:units = "degrees" ;
// Add converted telemetry objects as needed
} // group engineering_data

group: navigation_data {
variables:
double att_time(SC_records) ;
att_time:_FillValue = -999.9 ;
att_time:long_name = "Attitude sample time (TAI93)" ;
att_time:valid_min = 0. ;
att_time:valid_max = 2000000000. ;
att_time:units = "seconds" ;
float att_quat(SC_records, quaternion_elements) ;
att_quat:_FillValue = -999.9f ;
att_quat:long_name = "Attitude quaternions (J2000 to spacecraft)" ;
att_quat:valid_min = -1.f ;
att_quat:valid_max = 1.f ;
att_quat:units = "seconds" ;
double orb_time(SC_records) ;
orb_time:_FillValue = -999.9 ;
orb_time:long_name = "Orbit vector time (TAI93)" ;
orb_time:valid_min = 0. ;
orb_time:valid_max = 2000000000. ;
orb_time:units = "seconds" ;
float orb_pos(SC_records, vector_elements) ;
orb_pos:_FillValue = -9999999.f ;
orb_pos:long_name = "Orbit position vectors (ECR)" ;
orb_pos:valid_min = -7200000.f ;
orb_pos:valid_max = 7200000.f ;
orb_pos:units = "meters" ;
float orb_vel(SC_records, vector_elements) ;
orb_vel:_FillValue = -9999999.f ;
orb_vel:long_name = "Orbit velocity vectors (ECR)" ;
orb_vel:valid_min = -7600.f ;
orb_vel:valid_max = 7600.f ;
orb_vel:units = "meters/second" ;
ubyte adstate(SC_records) ; // May or not have something like this
adstate:_FillValue = 255UB ;
adstate:long_name = "Current ADCS State" ;
adstate:flag_values = 0b, 1b, 2b, 3b, 4b, 5b ;
adstate:flag_meanings = "Wait Detumble AcqSun Point DeltaV Earth" ; // or whatscier
} // group navigation_data

group: onboard_calibration_data {
variables:
ushort DC_blue(number_of_scans, blue_bands, DC_pixels) ;
DC_blue:_FillValue = 0s ;
DC_blue:long_name = "Dark calibration data for blue focal plane" ;
DC_blue:valid_min = 10s ;
DC_blue:valid_max = 32767s ;
DC_blue:units = "counts" ;
ushort DC_red(number_of_scans, red_bands, DC_pixels) ;
DC_red:_FillValue = 0s ;
DC_red:long_name = "Dark calibration data for red focal plane" ;
DC_red:valid_min = 10s ;
DC_red:valid_max = 32767s ;
DC_red:units = "counts" ;
long DC_SWIR(number_of_scans, SWIR_bands, DC_pixels) ;
DC_SWIR:_FillValue = 0 ;
DC_SWIR:long_name = "Dark calibration data for SWIR bands" ;
DC_SWIR:valid_min = 10s ;
DC_SWIR:valid_max = 32767s ;
DC_SWIR:units = "counts" ;
} // group onboard_calibration_data

group: science_data {
variables:
ushort sci_blue(number_of_scans, blue_bands, CCD_pixels) ;
sci_blue:_FillValue = 0s ;
sci_blue:long_name = "Science data for blue focal plane" ;
sci_blue:valid_min = 10s ;
sci_blue:valid_max = 65535s ;
sci_blue:units = "counts" ;
ushort sci_red(number_of_scans, red_bands, CCD_pixels) ;
sci_red:_FillValue = 0s ;
sci_red:long_name = "Science data for red focal plane" ;
sci_red:valid_min = 10s ;
sci_red:valid_max = 65535s ;
sci_red:units = "counts" ;
long sci_SWIR(number_of_scans, SWIR_bands, SWIR_pixels) ;
sci_SWIR:_FillValue = 0 ;
sci_SWIR:long_name = "Science data for SWIR bands" ;
sci_SWIR:valid_min = 10 ;
sci_SWIR:valid_max = 65535s ;
sci_SWIR:units = "counts" ;
} // group science_data
}

File found on: OCI_Level-1A_Data_Structure.cdl

  • No labels