The following section describes the UDF IDL data structure through both description and examples.
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.
The IDF UDF data structure name is formed as a concatination of several variables. Its general format is:
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. |
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] ------------------------------------------------------------
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] ------------------------------------------------------------
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] ------------------------------------------------
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] ------------------------------------------------------------
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 |