IDL UDF Data Structure

The following section describes the UDF IDL data structure through both description and examples.

Overview

The IDL UDF data structure is a blanket term for a structure which contains the returned UDF data. The structures are almost entirely defined not only by the data which is being returned but also by the UDF IDL keyword settings. While there are a few static field names in the structure most are derived from the PIDF names for the measurements being returned.

In spite of the extreme variability in the structur make up there is an impression of similarity. The IDL UDF Data Structure fields are always generated in the same order. Fields which have no data associated with them, however, are omitted. The first 8 fields in the structure are always guaranteed to be present. Following these fields comes the measurement array index field which is absent if the returned data are not either arrays or matrices. The remaining fields contain the returned measurements. These are blocked so that the first returned measurements are those which the UDF recognizes as sensor measurements, followed by mode and then ancillary measurements.

Structure Name

The IDF UDF data structure name is formed as a concatination of several variables. Its general format is:

[VIRTUAL ACRONYM]_K[UDF Key Value]_V[VERSION NUMBER]_[SFORMAT]
where items in [] are the variables inserted into the structure name when it is defined. The [VIRTUAL ACRONYM] identifies the source of the data, while the K[UDF Key Value]_V[VERSION NUMBER] ensures a unique structure name. The [SFORMAT] indicates how the sensor data was formated.

The Fixed Fields

The first eight fields in the IDL udf data structure are fixed, that is they are always present with the same field name. These are described in the table below in the order they occur in the structure.

Field Format Description
BTIME STRUCT The beginning time of the data returned in the IDL UDF data structure. The time structure has the fields YEAR, DOY, HOUR, MIN, SEC, MSEC, and DP. DP is the number of days since January 1, 2000.
ETIME STRUCT The ending time of the data returned in the IDL UDF data structure. The time structure has the fields YEAR, DOY, HOUR, MIN, SEC, MSEC, and DP. DP is the number of days since January 1, 2000.
DLEN LONG The the number of elements returned by a sensor measurement. The sensor data array size in the IDL UDF data structure are maximized to hold the largest possible array size which might be returned by a given UDF. When the returned array sizes are less then the maximum the extra array elements are filled with zeros.
D_QUAL FLOAT The data quality flags. There is one flag for each returned UDF sensor measurement. Definitions of the values are given in the VIDF for the UDF source being returned. In general a 0 indicates that the returned data is OK.
START_AZ FLOAT The start azimuth (phase) angle associated with each data measurement. This field can be either an array or a matrix of data depending on how the AZIMUTH keyword is set. When the sensor data represents an array of data there is one start azimuth value for each of the measurement array elements.
STOP_AZ FLOAT The stop azimuth (phase) angle associated with each data measurement. This field can be either an array or a matrix of data depending on how the AZIMUTH keyword is set. When the sensor data represents an array of data there is one stop azimuth value for each of the measurement array elements.
START_TH FLOAT The start theta (elevation) angle associated with each data measurement. This field can be an array or matrix of values depending on both how the ELEVATION keyword is set and the dimensionality of the returned sensor measurements.
STOP_TH FLOAT The stop theta (elevation) angle associated with each data measurement. This field can be an array or matrix of values depending on both how the ELEVATION keyword is set and the dimensionality of the returned sensor measurements.

Example 1: SFORMAT 0 - The STANDARD Option

The following shows the IDL UDF data structure generated to hold data from the IMHMCPLH UDF definition when the SFORMAT keyword is set to STANDARD. Under this option all data are returned in individual structure fields whose names are derived from the measurement names found in the PIDF. The D_QUAL field dimension of 20 indicates that there are 20 sensor data definitions being returned. These are the 20 fields following the AINDICES field. All remaining fields represent either Mode or Ancillary measurements. You would have to consult the PIDF to determine how many MODE definitions exist for this UDF definition which in this case is four. These are the first four fields following the sensor data beginning at HV_STATE. The remaining data are ancillary data.

------------------------------------------------------------
** Structure IMHMCPLH_K101195919_V0_0, 41 tags, length=884:
   BTIME                STRUCT    -> UDF_TIME Array[1]
   ETIME                STRUCT    -> UDF_TIME Array[1]
   DLEN                 LONG      Array[1]
   D_QUAL               FLOAT     Array[20]
   START_AZ             FLOAT     Array[6]
   STOP_AZ              FLOAT     Array[6]
   START_TH             FLOAT     Array[20]
   STOP_TH              FLOAT     Array[20]
   AINDICES             FLOAT     Array[6]
   MCP_H_ELEV_0         FLOAT     Array[6]
   MCP_H_ELEV_1         FLOAT     Array[6]
   MCP_H_ELEV_2         FLOAT     Array[6]
   MCP_H_ELEV_3         FLOAT     Array[6]
   MCP_H_ELEV_4         FLOAT     Array[6]
   MCP_H_ELEV_5         FLOAT     Array[6]
   MCP_H_ELEV_6         FLOAT     Array[6]
   MCP_H_ELEV_7         FLOAT     Array[6]
   MCP_H_ELEV_8         FLOAT     Array[6]
   MCP_H_ELEV_9         FLOAT     Array[6]                        
   MCP_H_ELEV_10        FLOAT     Array[6]                        
   MCP_H_ELEV_11        FLOAT     Array[6]                        
   MCP_H_ELEV_12        FLOAT     Array[6]
   MCP_H_ELEV_13        FLOAT     Array[6]
   MCP_H_ELEV_14        FLOAT     Array[6]
   MCP_H_ELEV_15        FLOAT     Array[6]
   MCP_H_ELEV_16        FLOAT     Array[6]
   MCP_H_ELEV_17        FLOAT     Array[6]
   MCP_H_ELEV_18        FLOAT     Array[6]
   MCP_H_ELEV_19        FLOAT     Array[6]
   HV_STATE             FLOAT     Array[1]
   SHUTTER_STATE        FLOAT     Array[1]
   EARTH_IN_FOV_STATE   FLOAT     Array[1]
   SUN_IN_FOV_STATE     FLOAT     Array[1]
   SPIN_NUMBER          FLOAT     Array[1]
   START_SECTOR_NUMBER  FLOAT     Array[1]
   GCI_SATELLITE_X      FLOAT     Array[1]
   GCI_SATELLITE_Y      FLOAT     Array[1]                        
   GCI_SATELLITE_Z      FLOAT     Array[1]
   GCI_S_C_SPIN_AXIS_X  FLOAT     Array[1]
   GCI_S_C_SPIN_AXIS_Y  FLOAT     Array[1]
   GCI_S_C_SPIN_AXIS_Z  FLOAT     Array[1]
------------------------------------------------------------

Example 2: SFORMAT 1 - The COLLAPSED Option

The following shows the IDL UDF data structure generated to hold data from the IMHMCPLH UDF definition when the SFORMAT keyword is set to COLLAPSED. Under this option all the measurements which have a VIDF type of sensor are compressed into the single structure field labeled ALLSDATA. This is a matrix of data 6x20 which represents the 20 sensors each an array of 6 elements.

------------------------------------------------------------
** Structure IMHMCPLH_K101195919_V0_1, 22 tags, length=884:
   BTIME                STRUCT    -> UDF_TIME Array[1]
   ETIME                STRUCT    -> UDF_TIME Array[1]
   DLEN                 LONG      Array[1]
   D_QUAL               FLOAT     Array[20]
   START_AZ             FLOAT     Array[6]
   STOP_AZ              FLOAT     Array[6]
   START_TH             FLOAT     Array[20]
   STOP_TH              FLOAT     Array[20]
   AINDICES             FLOAT     Array[6]
   ALLSDATA             FLOAT     Array[6, 20]
   HV_STATE             FLOAT     Array[1]
   SHUTTER_STATE        FLOAT     Array[1]
   EARTH_IN_FOV_STATE   FLOAT     Array[1]
   SUN_IN_FOV_STATE     FLOAT     Array[1]
   SPIN_NUMBER          FLOAT     Array[1]
   START_SECTOR_NUMBER  FLOAT     Array[1]                      
   GCI_SATELLITE_X      FLOAT     Array[1]                        
   GCI_SATELLITE_Y      FLOAT     Array[1]                        
   GCI_SATELLITE_Z      FLOAT     Array[1]
   GCI_S_C_SPIN_AXIS_X  FLOAT     Array[1]
   GCI_S_C_SPIN_AXIS_Y  FLOAT     Array[1]
   GCI_S_C_SPIN_AXIS_Z  FLOAT     Array[1]
------------------------------------------------------------

Example 3: SFORMAT 3 - The GROUP Option

The following shows the IDL UDF data structure generated to hold data from the IMHMCPLH UDF definition when the SFORMAT keyword is set to GROUP. Under this option all the measurements which have a VIDF type of sensor and which are grouped under a common PIDF group definitions are compressed into a single structure field labeled with the PIDF group name. Because there is only one defined group in the PIDF for this UDF definition this structure is identical to the one generated under the COMPRESSED option above with the exception that the sensor field name is given as the group name, LOW_RES_MCP_H_IMAGE_PIXELS rather than ALLSDATA.

------------------------------------------------------------
** Structure IMHMCPLH_K101195919_V0_2, 22 tags, length=884:
   BTIME                       STRUCT    -> UDF_TIME Array[1]
   ETIME                       STRUCT    -> UDF_TIME Array[1]
   DLEN                        LONG      Array[1]
   D_QUAL                      FLOAT     Array[20]
   START_AZ                    FLOAT     Array[6]
   STOP_AZ                     FLOAT     Array[6]
   START_TH                    FLOAT     Array[20]
   STOP_TH                     FLOAT     Array[20]
   AINDICES                    FLOAT     Array[6]
   LOW_RES_MCP_H_IMAGE_PIXELS  FLOAT     Array[6, 20]
   HV_STATE                    FLOAT     Array[1]
   SHUTTER_STATE               FLOAT     Array[1]
   EARTH_IN_FOV_STATE          FLOAT     Array[1]
   SUN_IN_FOV_STATE            FLOAT     Array[1]
   SPIN_NUMBER                 FLOAT     Array[1]
   START_SECTOR_NUMBER         FLOAT     Array[1]                      
   GCI_SATELLITE_X             FLOAT     Array[1]
   GCI_SATELLITE_Y             FLOAT     Array[1]
   GCI_SATELLITE_Z             FLOAT     Array[1]
   GCI_S_C_SPIN_AXIS_X         FLOAT     Array[1]
   GCI_S_C_SPIN_AXIS_Y         FLOAT     Array[1]
   GCI_S_C_SPIN_AXIS_Z         FLOAT     Array[1]
------------------------------------------------

Example 4: DFORMAT 1 - The DOUBLE Option

The following shows the IDL UDF data structure generated to hold data from the IMHMCPLH UDF definition when the DFORMAT keyword is set to DOUBLE. Under this option all the UDF measurements (those listed below the AINDICES field if present) are returned as double precision floats. This structure is identical in format to the STANDARD structure shown in the first example but with the floats converted to doubles. The structure length has also increased with increasd resolution.

------------------------------------------------------------
** Structure IMHMCPLH_K101195919_V0_0, 41 tags, length=1412:
   BTIME                STRUCT     -> UDF_TIME Array[1]
   ETIME                STRUCT     -> UDF_TIME Array[1]
   DLEN                 LONG       Array[1]
   D_QUAL               FLOAT      Array[20]
   START_AZ             FLOAT      Array[6]
   STOP_AZ              FLOAT      Array[6]
   START_TH             FLOAT      Array[20]
   STOP_TH              FLOAT      Array[20]
   AINDICES             FLOAT      Array[6]
   MCP_H_ELEV_0         DOUBLE     Array[6]
   MCP_H_ELEV_1         DOUBLE     Array[6]
   MCP_H_ELEV_2         DOUBLE     Array[6]
   MCP_H_ELEV_3         DOUBLE     Array[6]
   MCP_H_ELEV_4         DOUBLE     Array[6]
   MCP_H_ELEV_5         DOUBLE     Array[6]
   MCP_H_ELEV_6         DOUBLE     Array[6]
   MCP_H_ELEV_7         DOUBLE     Array[6]
   MCP_H_ELEV_8         DOUBLE     Array[6]
   MCP_H_ELEV_9         DOUBLE     Array[6]                        
   MCP_H_ELEV_10        DOUBLE     Array[6]                        
   MCP_H_ELEV_11        DOUBLE     Array[6]                        
   MCP_H_ELEV_12        DOUBLE     Array[6]
   MCP_H_ELEV_13        DOUBLE     Array[6]
   MCP_H_ELEV_14        DOUBLE     Array[6]
   MCP_H_ELEV_15        DOUBLE     Array[6]
   MCP_H_ELEV_16        DOUBLE     Array[6]
   MCP_H_ELEV_17        DOUBLE     Array[6]
   MCP_H_ELEV_18        DOUBLE     Array[6]
   MCP_H_ELEV_19        DOUBLE     Array[6]
   HV_STATE             DOUBLE     Array[1]
   SHUTTER_STATE        DOUBLE     Array[1]
   EARTH_IN_FOV_STATE   DOUBLE     Array[1]
   SUN_IN_FOV_STATE     DOUBLE     Array[1]
   SPIN_NUMBER          DOUBLE     Array[1]
   START_SECTOR_NUMBER  DOUBLE     Array[1]
   GCI_SATELLITE_X      DOUBLE     Array[1]
   GCI_SATELLITE_Y      DOUBLE     Array[1]                        
   GCI_SATELLITE_Z      DOUBLE     Array[1]
   GCI_S_C_SPIN_AXIS_X  DOUBLE     Array[1]
   GCI_S_C_SPIN_AXIS_Y  DOUBLE     Array[1]
   GCI_S_C_SPIN_AXIS_Z  DOUBLE     Array[1]
------------------------------------------------------------

Example 5: AZIMUTH 1 - The ONCE/DATA Option

The following shows the IDL UDF data structure generated to hold data from the IMHMCPLH UDF definition when the AZIMUTH keyword is set to ONCE/DATA. Under this option all the START_AZ and STOP_AZ are returned at the data resolution. This structure is identical in format to the STANDARD structure shown in the first example with the exception that the START_AZ and STOP_AZ fields have been expanded to 6x20 matrices. This represents data for each element in the 20 returned sensors each an array of 6 elements.

------------------------------------------------------------
** Structure IMHMCPLH_K101195919_V0_0, 41 tags, length=1796:
   BTIME                STRUCT    -> UDF_TIME Array[1]
   ETIME                STRUCT    -> UDF_TIME Array[1]
   DLEN                 LONG      Array[1]
   D_QUAL               FLOAT     Array[20]
   START_AZ             FLOAT     Array[6, 20]
   STOP_AZ              FLOAT     Array[6, 20]
   START_TH             FLOAT     Array[20]
   STOP_TH              FLOAT     Array[20]
   AINDICES             FLOAT     Array[6]
   MCP_H_ELEV_0         FLOAT     Array[6]
   MCP_H_ELEV_1         FLOAT     Array[6]
   MCP_H_ELEV_2         FLOAT     Array[6]
   MCP_H_ELEV_3         FLOAT     Array[6]
   MCP_H_ELEV_4         FLOAT     Array[6]
   MCP_H_ELEV_5         FLOAT     Array[6]
   MCP_H_ELEV_6         FLOAT     Array[6]
   MCP_H_ELEV_7         FLOAT     Array[6]
   MCP_H_ELEV_8         FLOAT     Array[6]
   MCP_H_ELEV_9         FLOAT     Array[6]                        
   MCP_H_ELEV_10        FLOAT     Array[6]                        
   MCP_H_ELEV_11        FLOAT     Array[6]                        
   MCP_H_ELEV_12        FLOAT     Array[6]
   MCP_H_ELEV_13        FLOAT     Array[6]
   MCP_H_ELEV_14        FLOAT     Array[6]
   MCP_H_ELEV_15        FLOAT     Array[6]
   MCP_H_ELEV_16        FLOAT     Array[6]
   MCP_H_ELEV_17        FLOAT     Array[6]
   MCP_H_ELEV_18        FLOAT     Array[6]
   MCP_H_ELEV_19        FLOAT     Array[6]
   HV_STATE             FLOAT     Array[1]
   SHUTTER_STATE        FLOAT     Array[1]
   EARTH_IN_FOV_STATE   FLOAT     Array[1]
   SUN_IN_FOV_STATE     FLOAT     Array[1]
   SPIN_NUMBER          FLOAT     Array[1]
   START_SECTOR_NUMBER  FLOAT     Array[1]
   GCI_SATELLITE_X      FLOAT     Array[1]
   GCI_SATELLITE_Y      FLOAT     Array[1]                        
   GCI_SATELLITE_Z      FLOAT     Array[1]
   GCI_S_C_SPIN_AXIS_X  FLOAT     Array[1]
   GCI_S_C_SPIN_AXIS_Y  FLOAT     Array[1]
   GCI_S_C_SPIN_AXIS_Z  FLOAT     Array[1]
------------------------------------------------------------


&larr Previous TOC HOME Next &rarr
Unit Definitions Usage