netcdf PACE_OCI.YYYYMMDDTHHMMSS.L1A { dimensions: number_of_scans = UNLIMITED ; // (1710 currently) number_of_mce_scans = UNLIMITED ; // (1711 currently) number_of_sca_scans = UNLIMITED ; // (1501 currently) att_records = UNLIMITED ; // (320 currently) orb_records = UNLIMITED ; // (80 currently) tlm_packets = UNLIMITED ; // (301 currently) ccd_pixels = 1329 ; SWIR_pixels = 1336 ; blue_bands = 120 ; red_bands = 168 ; SWIR_bands = 9 ; DC_pixels = 57 ; number_of_taps = 16 ; spatial_zones = 10 ; quaternion_elements = 4 ; vector_elements = 3 ; encoder_samples = 200 ; encoder_channels = 4 ; tilt_samples = UNLIMITED ; // (320 currently) MCE_block = 480 ; sidecar_tlm = 76 ; ancil_tlm = 6 ; DAU_tlm = 620 ; DDC_tlm = 524 ; TC_tlm = 1216 ; ICDU_MCE_temp_tlm = 76 ; ADC_lat = 4 ; ICDU_therm = 74 ; DAUC_temps = 69 ; ICDU_MCE_temps = 16 ; lin_skips = 33 ; // global attributes: :title = "PACE OCI Level-1A Data" ; :instrument = "OCI" ; :product_name = "PACE_OCI.YYYYMMDDTHHMMSS.L1A.nc" ; :processing_level = "L1A" ; :cdm_data_type = "swath" ; :data_collect_mode = "Earth Collect" ; :SWIR_data_mode = "Science" ; :CDS_mode = "CDS" ; :CDL_version_date = "YYYY-MM-DD" ; :time_coverage_start = "YYYY-MM-DDTHH:MM:SS.SSSZ" ; :time_coverage_end = "YYYY-MM-DDTHH:MM:SS.SSSZ" ; :startDirection = "Ascending" ; :endDirection = "Ascending" ; :creator_name = "NASA/GSFC/OBPG" ; :creator_email = "data@oceancolor.gsfc.nasa.gov" ; :creator_url = "https://oceancolor.gsfc.nasa.gov" ; :institution = "NASA Goddard Space Flight Center, Ocean Biology Processing Group" ; :license = "https://www.earthdata.nasa.gov/engage/open-data-services-and-software/data-and-information-policy" ; :naming_authority = "gov.nasa.gsfc.oceancolor" ; :project = "Ocean Biology Processing Group" ; :publisher_name = "NASA/GSFC/OB.DAAC" ; :publisher_email = "data@oceancolor.gsfc.nasa.gov" ; :publisher_url = "https://oceancolor.gsfc.nasa.gov" ; :Conventions = "CF-1.8, ACDD-1.3" ; :standard_name_vocabulary = "CF Standard Name Table v79" ; :keywords_vocabulary = "NASA Global Change Master Directory (GCMD) Science Keywords" ; :date_created = "YYYY-MM-DDTHH:MM:SS.SSSZ" ; :history = "YYYY-MM-DDTHH:MM:SS: l1agen_oci 2500100_300_20250101000738.l0inlist.txt 5 -t YYYYMMDDTHHMMSS -k hkt_inputs.txt --outlist l1agen_oci_outlist.txt\n[YYYY-MM-DDTHH:MM:SS] ncattredit.py PACE_OCI.YYYYMMDDTHHMMSS.L1A.nc /tmp/PACE_OCI.YYYYMMDDTHHMMSS.L1A.nc.813497" ; :processing_version = "2" ; :identifier_product_doi_authority = "https://dx.doi.org" ; :identifier_product_doi = "10.5067/PACE/OCI/L1A/SCI/version" ; group: scan_line_attributes { variables: double scan_start_time(number_of_scans) ; scan_start_time:_FillValue = -32767. ; scan_start_time:long_name = "Scan start time (seconds of day)" ; scan_start_time:valid_min = 0. ; scan_start_time:valid_max = 172800. ; scan_start_time:units = "seconds since YYYY-MM-DD" ; uint scan_start_CCSDS_sec(number_of_scans) ; scan_start_CCSDS_sec:_FillValue = 0U ; scan_start_CCSDS_sec:long_name = "Scan start CCSDS time (seconds since 1958)" ; scan_start_CCSDS_sec:valid_min = 1900000000U ; scan_start_CCSDS_sec:valid_max = 2400000000U ; scan_start_CCSDS_sec:units = "seconds" ; int scan_start_CCSDS_usec(number_of_scans) ; scan_start_CCSDS_usec:_FillValue = -32767 ; 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" ; int spin_ID(number_of_scans) ; spin_ID:_FillValue = -32767 ; 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 ; byte pseq_flag(number_of_scans) ; pseq_flag:long_name = "Science packet sequence number error flag" ; pseq_flag:flag_values = 0b, 1b ; pseq_flag:flag_meanings = "no_error error" ; byte line_flag(number_of_scans) ; line_flag:long_name = "CCD line number error flag" ; line_flag:flag_values = 0b, 1b ; line_flag:flag_meanings = "no_error error" ; } // group scan_line_attributes group: spatial_spectral_modes { variables: short spatial_zone_data_type(spatial_zones) ; spatial_zone_data_type:_FillValue = -32767s ; spatial_zone_data_type:long_name = "CCD spatial aggregation zone ID" ; spatial_zone_data_type:flag_values = 0s, 1s, 2s, 3s, 4s, 5s, 6s, 7s, 8s, 9s, 10s, 11s, 12s, 13s ; spatial_zone_data_type:flag_meanings = "no_data earth dark_cal solar_daily solar_monthly response_curve lunar diagnostic static earth_spectrum no_processing external_snapshop_trigger internal_snapshop_trigger non-baseline_spectral_aggregation" ; short spatial_aggregation(spatial_zones) ; spatial_aggregation:_FillValue = -32767s ; spatial_aggregation:long_name = "CCD spatial aggregation per zone" ; spatial_aggregation:flag_values = 0s, 1s, 2s, 4s, 8s ; spatial_aggregation:flag_meanings = "no_data 1to1 2to1 4to1 8to1" ; short spatial_zone_lines(spatial_zones) ; spatial_zone_lines:_FillValue = -32767s ; spatial_zone_lines:long_name = "CCD lines per aggregation zone" ; spatial_zone_lines:valid_min = 0s ; spatial_zone_lines:valid_max = 32384s ; short blue_spectral_mode(number_of_taps) ; blue_spectral_mode:_FillValue = -32767s ; blue_spectral_mode:long_name = "Blue CCD spectral aggregation mode" ; blue_spectral_mode:flag_values = 0s, 1s, 2s, 4s, 8s ; blue_spectral_mode:flag_meanings = "disabled 1to1 2to1 4to1 8to1" ; short red_spectral_mode(number_of_taps) ; red_spectral_mode:_FillValue = -32767s ; red_spectral_mode:long_name = "Red CCD spectral aggregation mode" ; red_spectral_mode:flag_values = 0s, 1s, 2s, 4s, 8s ; red_spectral_mode:flag_meanings = "disabled 1to1 2to1 4to1 8to1" ; short aux_param_table(lin_skips) ; aux_param_table:_FillValue = -32767s ; aux_param_table:long_name = "Auxilary parameter table containing linearity mode line skip values" ; aux_param_table:valid_min = 0s ; aux_param_table:valid_max = 99s ; } // group spatial_spectral_modes group: engineering_data { variables: 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 = -32767. ; DAU_tlm_time:long_name = "DAU telemetry packet time (seconds of day)" ; DAU_tlm_time:valid_min = 0. ; DAU_tlm_time:valid_max = 172800. ; DAU_tlm_time:units = "seconds since YYYY-MM-DD" ; int DAU_spin_ID(tlm_packets) ; DAU_spin_ID:_FillValue = -32767 ; DAU_spin_ID:long_name = "Telescope spin ID from DAU telemetry packets" ; DAU_spin_ID:valid_min = 0 ; DAU_spin_ID:valid_max = 2147483647 ; ubyte DDC_telemetry(tlm_packets, DDC_tlm) ; DDC_telemetry:long_name = "OCI DDC raw telemetry" ; double DDC_tlm_time(tlm_packets) ; DDC_tlm_time:_FillValue = -32767. ; DDC_tlm_time:long_name = "DDC telemetry packet time (seconds of day)" ; DDC_tlm_time:valid_min = 0. ; DDC_tlm_time:valid_max = 172800. ; DDC_tlm_time:units = "seconds since YYYY-MM-DD" ; ubyte TC_telemetry(tlm_packets, TC_tlm) ; TC_telemetry:long_name = "OCI temperature controller raw telemetry" ; double TC_tlm_time(tlm_packets) ; TC_tlm_time:_FillValue = -32767. ; TC_tlm_time:long_name = "TTC telemetry packet time (seconds of day)" ; TC_tlm_time:valid_min = 0. ; TC_tlm_time:valid_max = 172800. ; TC_tlm_time:units = "seconds since YYYY-MM-DD" ; double DAUC_temp_time(tlm_packets) ; DAUC_temp_time:_FillValue = -32767. ; DAUC_temp_time:long_name = "FSW DAUC temperature packet time (seconds of day)" ; DAUC_temp_time:valid_min = 0. ; DAUC_temp_time:valid_max = 172800. ; DAUC_temp_time:units = "seconds since YYYY-MM-DD" ; ubyte ICDU_MCE_temp_tlm(tlm_packets, ICDU_MCE_temp_tlm) ; ICDU_MCE_temp_tlm:long_name = "ICDU-MCE raw temperature telemetry" ; double ICDU_MCE_temp_time(tlm_packets) ; ICDU_MCE_temp_time:_FillValue = -32767. ; ICDU_MCE_temp_time:long_name = "FSW ICDU-MCE temperature packet time (seconds of day)" ; ICDU_MCE_temp_time:valid_min = 0. ; ICDU_MCE_temp_time:valid_max = 172800. ; ICDU_MCE_temp_time:units = "seconds since YYYY-MM-DD" ; short ancillary_tlm(number_of_scans, ancil_tlm) ; ancillary_tlm:_FillValue = -32767s ; ancillary_tlm:long_name = "Ancillary telemetry status flags and error counts" ; ubyte MCE_telemetry(number_of_mce_scans, MCE_block) ; MCE_telemetry:long_name = "RTA/HAM mechanism control electronics telemetry" ; int MCE_spin_ID(number_of_mce_scans) ; MCE_spin_ID:_FillValue = -32767 ; MCE_spin_ID:long_name = "Spin ID from RTA/HAM MCE telemetry packets" ; MCE_spin_ID:valid_min = 0 ; MCE_spin_ID:valid_max = 2147483647 ; short MCE_encoder_data(number_of_mce_scans, encoder_samples, encoder_channels) ; MCE_encoder_data:_FillValue = -32767s ; MCE_encoder_data:long_name = "RTA/HAM encoder samples (channel order is 3, 2, 1, 0)" ; int encoder_spin_ID(number_of_mce_scans) ; encoder_spin_ID:_FillValue = -32767 ; encoder_spin_ID:long_name = "Spin ID from RTA/HAM MCE encoder packets" ; encoder_spin_ID:valid_min = 0 ; encoder_spin_ID:valid_max = 2147483647 ; ubyte SCA_telemetry(number_of_sca_scans, MCE_block) ; SCA_telemetry:long_name = "SCA mechanism control electronics telemetry" ; double SCA_tlm_time(number_of_sca_scans) ; SCA_tlm_time:_FillValue = -32767. ; SCA_tlm_time:long_name = "SCA telemetry packet time (seconds of day)" ; SCA_tlm_time:valid_min = 0. ; SCA_tlm_time:valid_max = 172800. ; SCA_tlm_time:units = "seconds since YYYY-MM-DD" ; int SCA_spin_ID(number_of_sca_scans) ; SCA_spin_ID:_FillValue = -32767 ; SCA_spin_ID:long_name = "Spin ID from SCA MCE telemetry packets" ; SCA_spin_ID:valid_min = 0 ; SCA_spin_ID:valid_max = 2147483647 ; float SCA_diffuser_position(number_of_sca_scans) ; SCA_diffuser_position:_FillValue = -32767.f ; SCA_diffuser_position:long_name = "SCA diffuser position angle" ; SCA_diffuser_position:valid_min = 0.f ; SCA_diffuser_position:valid_max = 360.f ; SCA_diffuser_position:units = "degrees" ; short SCA_encoder_data(number_of_sca_scans, encoder_samples, encoder_channels) ; SCA_encoder_data:_FillValue = -32767s ; SCA_encoder_data:long_name = "SCA encoder samples (channel order is 3, 2, 1, 0)" ; int SCA_encoder_spin_ID(number_of_sca_scans) ; SCA_encoder_spin_ID:_FillValue = -32767 ; SCA_encoder_spin_ID:long_name = "Spin ID from SCA encoder packets" ; SCA_encoder_spin_ID:valid_min = 0 ; SCA_encoder_spin_ID:valid_max = 2147483647 ; int agg_control(number_of_scans) ; agg_control:_FillValue = -32767 ; 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" ; int dig_card_error(number_of_scans) ; dig_card_error:_FillValue = -32767 ; dig_card_error:long_name = "Digital card error status" ; dig_card_error:valid_min = 0 ; dig_card_error:valid_max = 1048575 ; ubyte CDS_disable(tlm_packets) ; CDS_disable:_FillValue = 255UB ; CDS_disable:long_name = "Correlated double sampling disable flag" ; CDS_disable:flag_values = 0UB, 1UB ; CDS_disable:flag_meanings = "Enable Disable" ; ubyte ADC_latency(tlm_packets, ADC_lat) ; ADC_latency:_FillValue = 255UB ; ADC_latency:long_name = "ADC latency (red_hi, red_lo, blue_hi, blue_lo)" ; ADC_latency:flag_values = 15UB, 16UB ; ADC_latency:flag_meanings = "Reset Video" ; float ICDU_thermisters(tlm_packets, ICDU_therm) ; ICDU_thermisters:_FillValue = -32767.f ; ICDU_thermisters:long_name = "ICDU thermistor data from FSW TC packet" ; ICDU_thermisters:reference = "OCI-THRM-SPEC-0108 tables 6-1 and 6-2" ; ICDU_thermisters:valid_min = -200.f ; ICDU_thermisters:valid_max = 100.f ; float DAUC_temperatures(tlm_packets, DAUC_temps) ; DAUC_temperatures:_FillValue = -32767.f ; DAUC_temperatures:long_name = "DAUC temperatures from FSW DAUCTEMP packet" ; DAUC_temperatures:reference = "OCI-SYS-DESC-0195" ; DAUC_temperatures:valid_min = -200.f ; DAUC_temperatures:valid_max = 200.f ; float ICDU_MCE_temperatures(tlm_packets, ICDU_MCE_temps) ; ICDU_MCE_temperatures:_FillValue = -32767.f ; ICDU_MCE_temperatures:long_name = "ICDU-MCE temperatures from FSW ICDUMCE packet" ; ICDU_MCE_temperatures:reference = "OCI-SYS-DESC-0195" ; ICDU_MCE_temperatures:valid_min = -200.f ; ICDU_MCE_temperatures:valid_max = 200.f ; uint blue_channel_mask(number_of_taps) ; blue_channel_mask:_FillValue = 4294967295U ; blue_channel_mask:long_name = "Channel mask for blue CCD taps" ; blue_channel_mask:reference = "OCI-ELEC-SPEC-0009" ; uint red_channel_mask(number_of_taps) ; red_channel_mask:_FillValue = 4294967295U ; red_channel_mask:long_name = "Channel mask for red CCD taps" ; red_channel_mask:reference = "OCI-ELEC-SPEC-0009" ; // group attributes: :science_telemetry_zone_conflict = "No" ; } // group engineering_data group: navigation_data { variables: double att_time(att_records) ; att_time:_FillValue = -32767. ; att_time:long_name = "Attitude sample time (seconds of day)" ; att_time:valid_min = 0. ; att_time:valid_max = 172800. ; att_time:units = "seconds since YYYY-MM-DD" ; float att_quat(att_records, quaternion_elements) ; att_quat:_FillValue = -32767.f ; att_quat:long_name = "Attitude quaternions (J2000 to spacecraft)" ; att_quat:valid_min = -1.f ; att_quat:valid_max = 1.f ; float att_rate(att_records, vector_elements) ; att_rate:_FillValue = -32767.f ; att_rate:long_name = "Attitude angular rates in spacecraft frame" ; att_rate:valid_min = -0.004f ; att_rate:valid_max = 0.004f ; att_rate:units = "radians/second" ; double orb_time(orb_records) ; orb_time:_FillValue = -32767. ; orb_time:long_name = "Orbit vector time (seconds of day)" ; orb_time:valid_min = 0. ; orb_time:valid_max = 172800. ; orb_time:units = "seconds since YYYY-MM-DD" ; float orb_pos(orb_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(orb_records, vector_elements) ; orb_vel:_FillValue = -32767.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" ; double tilt_time(tilt_samples) ; tilt_time:_FillValue = -32767. ; tilt_time:long_name = "Tilt time (seconds of day)" ; tilt_time:valid_min = 0. ; tilt_time:valid_max = 172800. ; tilt_time:units = "seconds since YYYY-MM-DD" ; float tilt(tilt_samples) ; tilt:_FillValue = -32767.f ; tilt:long_name = "Tilt angle" ; tilt:valid_min = -20.5f ; tilt:valid_max = 20.5f ; tilt:units = "degrees" ; } // group navigation_data group: onboard_calibration_data { variables: ushort DC_blue(number_of_scans, blue_bands, DC_pixels) ; DC_blue:_FillValue = 65535US ; DC_blue:long_name = "Dark calibration data for blue focal plane (wavelengths in ascending order)" ; DC_blue:valid_min = 0US ; DC_blue:valid_max = 65530US ; DC_blue:units = "counts" ; ushort DC_red(number_of_scans, red_bands, DC_pixels) ; DC_red:_FillValue = 65535US ; DC_red:long_name = "Dark calibration data for red focal plane (wavelengths in ascending order)" ; DC_red:valid_min = 0US ; DC_red:valid_max = 65530US ; DC_red:units = "counts" ; uint DC_SWIR(number_of_scans, SWIR_bands, DC_pixels) ; DC_SWIR:_FillValue = 1048575U ; DC_SWIR:long_name = "Dark calibration data for SWIR bands" ; DC_SWIR:valid_min = 0U ; DC_SWIR:valid_max = 1048570U ; DC_SWIR:units = "counts" ; byte frm_type_DC_SWIR(number_of_scans, DC_pixels) ; frm_type_DC_SWIR:_FillValue = -1b ; frm_type_DC_SWIR:long_name = "SWIR DC frame type for non-science modes" ; frm_type_DC_SWIR:flag_values = 0b, 1b, 2b, 3b, 4b ; frm_type_DC_SWIR:flag_meanings = "chan_0-7 chan_7-15 chan_16-23 chan_24-31 test_pattern_TDI" ; } // group onboard_calibration_data group: science_data { variables: ushort sci_blue(number_of_scans, blue_bands, ccd_pixels) ; sci_blue:_FillValue = 65535US ; sci_blue:long_name = "Science data for blue focal plane (wavelengths in ascending order)" ; sci_blue:valid_min = 0US ; sci_blue:valid_max = 65530US ; sci_blue:units = "counts" ; ushort sci_red(number_of_scans, red_bands, ccd_pixels) ; sci_red:_FillValue = 65535US ; sci_red:long_name = "Science data for red focal plane (wavelengths in ascending order)" ; sci_red:valid_min = 0US ; sci_red:valid_max = 65530US ; sci_red:units = "counts" ; uint sci_SWIR(number_of_scans, SWIR_bands, SWIR_pixels) ; sci_SWIR:_FillValue = 1048575U ; sci_SWIR:long_name = "Science data for SWIR bands" ; sci_SWIR:valid_min = 0U ; sci_SWIR:valid_max = 1048570U ; sci_SWIR:units = "counts" ; byte frm_type_SWIR(number_of_scans, SWIR_pixels) ; frm_type_SWIR:_FillValue = -1b ; frm_type_SWIR:long_name = "SWIR frame type for non-science modes" ; frm_type_SWIR:flag_values = 0b, 1b, 2b, 3b, 4b ; frm_type_SWIR:flag_meanings = "chan_0-7 chan_7-15 chan_16-23 chan_24-31 test_pattern_TDI" ; } // group science_data group: processing_control { // group attributes: :software_name = "l1agen_oci" ; :software_version = "1.18.00_YYYY-MM-DD" ; :hkt_list = "PACE.YYYYMMDDTHHMMSS.HKT.nc, PACE.YYYYMMDDTHHMMSS.HKT.nc" ; :l0_list = "OCI000131076.oci, OCI000131077.oci, OCI000131078.oci, OCI000131079.oci" ; group: input_parameter { // group attributes: :OCI_packet_file = "2500100_300_YYYYMMDDHHMMSS.l0inlist.txt" ; :maxgap = "10" ; :hktlist_iFile = "hkt_inputs.txt" ; :swir_loff_set = "" ; :start_time = "YYYYMMDDTHHMMSS" ; :outlist = "l1agen_oci_outlist.txt" ; :outfile = "PACE_OCI.YYYYMMDDTHHMMSS.L1A.nc" ; :nametag = "PACE_OCI" ; :doi = "" ; :pversion = "Unspecified" ; :isSPW = "1" ; } // group input_parameter } // group processing_control }