Hi Ken,
Other than what I'm attaching, I not sure what documentation is
available for the DMSP archive data format. I just took a look at
their web page (http://www.ngdc.noaa.gov/dmsp/) and didn't find much
that went into that much detail. I got the three attached files some
time back; they are a very low-level description of the format. The
first one, "data.description", basically says that a dataset starts
with an ASCII header that contains a bunch of metadata followed by
binary XDR encoded data. The "dmsp_dda.x" file is an XDR description
of the archive data. It includes descriptions for all the different
sensors, the code we have only supports OIS data. The last attached
file, "sample.header", is an example of an OIS data file's ASCII
header. If the netCDF-java source distribution you have has a
test/data/dmsp directory, there should be some sample data files in
there. Not sure if that is included in our distribution.
You might contact the NGDC DMSP folks (ngdc.dmsp@xxxxxxxx) to see
what other documentation they have.
One thing, the DMSPiosp provides access to the data at the CDM "data
access" level not at the CDM "scientific datatype" level. Which means
that the data is really just attributes, dimensions, and variables
(arrays). We haven't really worked on the swath scientific datatype
yet. I kind of see the swath as related in some way to all of these:
a 2-D geo grid, a geolocated image, and a trajectory. We've worked on
the grid and trajectory (see the ucar.nc2.dt package for our current
code for these) but not the image.
Let me know if you have more questions on the DMSP data. Also, I'm
very interested in hearing what you think about swath data in general
and the particulars about a java API to swath data. Also, beyond a
generic swath dataset, there is the specifics of a collection of
swath data for a polar orbiting satellite.
Anyway, lots of interesting stuff that we haven't delved into yet.
Let me know how it goes and what you are thinking.
Ethan
Ken Knapp wrote:
Hi Ethan
I am working with John Bates here at NCDC on swath data and am
interested in helping with swath CDM development (we spoke briefly
at the AMS conference in Atlanta).
Ted H suggested I start by looking at what you've done with the DMSP
and seeing how it might be shoehorned to work with other satellite
data (that is, data I am more familiar with). So I am looking at the
code, and I think it might make more sense if I had a document in
front of me that described the DMSP data format. Do you have a pdf
you can send me?
Thanks ... and I'm sure I'll be in contact again.
-Ken
------------------------------------------------------------------------
Structure of data files
Each data file has an ascii header and binary data. The length of
each record
in the data file is specified in the ascii header as "record bytes".
For example, each record in the OIS data files is 3,040 bytes. Also
contained in
the ascii header is how many records comprise the header record. The
field name is "number of header records". For example, there are 2
header records in the T1 data files.
The data files are all in External Data Representation (XDR) format
which is machine independent. To use XDR to read the data you must
have the file dda.x
(which is also included on this tape) which describes the data fields
in XDR
format. You must also have the Remote Procedure Calls protocol
compiler (rpcgen) on your system which is usually included with the
operating system
software for your system.
First, you must create the XDR code for the system you are reading
the data on. To do this, type:
rpcgen dda.x
This will create the following files: dda.h and dda_xdr.c. The
dda_xdr.c code
will need to be included in the program that reads the data files.
Using some of the xdr functions, a simple program can be written to
print out the actual data values that are contained in the data file.
------------------------------------------------------------------------
/*
* $Id: dda.x,v 1.1 1995/04/19 23:59:25 dzirkle Exp dzirkle $
*
* DMSP Digital Archive Data Formats
*
*
* DRAFT
* version 0.93
* December 28, 1993
* */
/*
* Moment in time
*/
struct DDAEpoch {
short Year; /* 4 digit
year */
short DayOfYear; /* day of year (January 1
= 1) */
double SecondsOfDay; /* seconds of day [0.0 -
86400.0) */
};
/*
* Spacecraft ephemeris
*/
struct DDAEphemeride {
float Latitude; /* Geodetic Latitude in
degrees */
float Longitude; /* Longitude in degrees (0
- 360) */
float Altitude; /* Altitude in
kilometers */
float Heading; /* Heading west of
north */
};
/*
* Spacecraft information
*/
struct DDASpacecraftInfo {
DDAEpoch Epoch;
DDAEphemeride Ephemeride;
};
/* ======================================================= */
/* ========================= OIS ========================= */
/* ======================================================= */
/*
* Scan line related information
*/
struct DDA_OLSScanPrefix {
DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris info */
float ScannerOffset; /* Scanner offset in
radians */
u_char ScanDirection; /* Actual scan
direction */
float SolarElevation; /* Solar elevation in
degrees */
float SolarAzimuth; /* Solar azimuth in
degrees */
float LunarElevation; /* Lunar elevation in
degrees */
float LunarAzimuth; /* Lunar azimuth in
degrees */
float LunarPhase; /* Lunar phase in
degrees */
float GainCode; /* Gain code in
decibels */
u_char GainMode; /* Gain mode: 0 = lin,
1 = log */
u_char GainSubMode; /* Gain
sub-mode */
u_char HotTCalSegmentID; /* Hot T cal seg ID: 0 = right, 1
= left */
u_char ColdTCalSegmentID; /* Cold T cal seg ID: 0 = right, 1
= left */
u_char HotTCal; /* Hot T
calibration */
u_char ColdTCal; /* Cold T
calibration */
u_char PMTCal; /* Photomultiplier tube
calibration */
float TChannelGain; /* T channel gain in
decibels */
};
/*
* Number of video samples per smooth scan line
*/
const DDA_SMOOTH_OLS_SAMPLES = 1465;
/*
* OLS Smooth scan line
*/
struct DDA_OLSSmoothVideo {
u_int QualityFlag; /* scan line
quality flag */
opaque Pixels [ DDA_SMOOTH_OLS_SAMPLES ]; /* scan line
pixels */
};
/*
* OLS Interleaved Smooth scan line
*/
struct DDA_OISScanline {
DDA_OLSScanPrefix ScanPrefix; /* Scan line
prefix */
DDA_OLSSmoothVideo LightVideoData; /* 6 bit
visible data */
DDA_OLSSmoothVideo ThermalVideoData; /* 8 bit
thermal data */
};
/*
* Number of video samples per fine scan line
*/
const DDA_FINE_OLS_SAMPLES = 7322;
/*
* OLS Fine scan line
*/
struct DDA_OLSFineVideo {
u_int QualityFlag; /* scan line
quality flag */
opaque Pixels [ DDA_FINE_OLS_SAMPLES ]; /* scan line
pixels */
};
/*
* OLS NonInterleaved Fine Light scan line
*/
struct DDA_OLFScanline {
DDA_OLSScanPrefix ScanPrefix; /* Scan line
prefix */
DDA_OLSFineVideo VideoData; /* 6 bit fine
data */
};
/*
* OLS NonInterleaved Fine Thermal scan line
*/
struct DDA_OTFScanline {
DDA_OLSScanPrefix ScanPrefix; /* Scan line
prefix */
DDA_OLSFineVideo VideoData; /* 6 bit fine
data */
};
/*
* OLS Interleaved Fine scan line
*/
struct DDA_OIFScanline {
DDA_OLSScanPrefix ScanPrefix; /* Scan line
prefix */
DDA_OLSFineVideo LightVideoData; /* 6 bit
visible data */
DDA_OLSFineVideo ThermalVideoData; /* 6 bit
thermal data */
};
/*
* Number of video samples per browse scan line
*/
const DDA_BROWSE_OLS_SAMPLES = 293;
/*
* OLS Browse scan line
*/
struct DDA_OLSBrowseVideo {
u_int QualityFlag; /* scan line
quality flag */
opaque Pixels [ DDA_BROWSE_OLS_SAMPLES ]; /* scan line
pixels */
};
/*
* OLS Interleaved Smooth Browse scan line
*/
struct DDA_OIBScanline {
DDA_OLSScanPrefix ScanPrefix;
DDA_OLSBrowseVideo LightVideoData; /* 6 bit
visible data */
DDA_OLSBrowseVideo ThermalVideoData; /* 6 bit
thermal data */
};
/* ======================================================= */
/* ========================= SSM/I ======================= */
/* ======================================================= */
/*
*
* SSM/I Archive Format Terminology
* --------------------------------
*
* channel - 1 of the 7 frequency/polarization pairs:
* 19V, 19H, 22V, 37V, 37H, 85V, 85H
*
* low channels - 19V, 19H, 22V, 37V, 37H
* high channels - 85V, 85H
*
* scan - 1 of the 4 measurement sweeps (A, B, A', B')
* cycle - 4 contiguous scans; minimum required to contain all
measurements
* taken by the instrument
*
*/
/*
* Number of hot and cold load readings taken in an SSM/I scan
*/
const DDA_SSMI_LOADS = 5;
/*
* Number of automatic gain control readings per SSM/I scan
*/
const DDA_SSMI_GAINS = 3;
/*
* Number of scene stations per SSM/I scan
*/
const DDA_SSMI_SCENE_STATIONS = 128;
/*
* SSM/I calibration information
*/
struct DDA_SSMICalibration {
float HotLoadTemp1; /* hot load 1 temperature,
Kelvins */
float HotLoadTemp2; /* hot load 2 temperature,
Kelvins */
float HotLoadTemp3; /* hot load 3 temperature,
Kelvins */
float RFMixerTemp; /* RF mixer temperature,
Kelvins */
float ForwardRadiatorTemp; /* fwd. radiator temperature,
Kelvins */
float Scale85V; /* 85V counts-to-Ta scale,
Kelvins/count */
float Scale85H; /* 85H counts-to-Ta scale,
Kelvins/count */
float Scale37V; /* 37V counts-to-Ta scale,
Kelvins/count */
float Scale37H; /* 37H counts-to-Ta scale,
Kelvins/count */
float Scale22V; /* 22V counts-to-Ta scale,
Kelvins/count */
float Scale19V; /* 19V counts-to-Ta scale,
Kelvins/count */
float Scale19H; /* 19H counts-to-Ta scale,
Kelvins/count */
float Bias85V; /* 85V counts-to-Ta bias,
Kelvins */
float Bias85H; /* 85H counts-to-Ta bias,
Kelvins */
float Bias37V; /* 37V counts-to-Ta bias,
Kelvins */ float Bias37H; /* 37H
counts-to-Ta bias, Kelvins */
float Bias22V; /* 22V counts-to-Ta bias,
Kelvins */
float Bias19V; /* 19V counts-to-Ta bias,
Kelvins */
float Bias19H; /* 19H counts-to-Ta bias,
Kelvins */
u_int ReferenceVoltage; /* reference voltage,
counts */
u_int ReferenceReturn; /* return voltage,
counts */
u_int AAGC[ DDA_SSMI_GAINS ]; /* A automatic gain control,
counts */
u_int BAGC[ DDA_SSMI_GAINS ]; /* B automatic gain control,
counts */
u_int APrimeAGC[ DDA_SSMI_GAINS ]; /* A' automatic gain control,
counts */
u_int BPrimeAGC[ DDA_SSMI_GAINS ]; /* B' automatic gain control,
counts */
};
/*
* A (and A') scan parameters
*
* In the A and A' scans of a cycle, both the high and low frequencies
* are sampled. Each of the 128 scene stations has an 85 GHz sample,
* and every other scene station has the low frequency samples, starting
* with the first scene station in the scan. The 85 GHz scene stations
* which are in register with the low frequency are commonly known as
* the "odd" scene stations, even though in this format they are indexed
* with even values.
*
* Example:
* * Latitude[0],Longitude[0] : Ta85V[0] Ta85H[0] ... Ta19V[0]
Ta19H[0]
* Latitude[1],Longitude[1] : Ta85V[1] Ta85H[1]
* Latitude[2],Longitude[2] : Ta85V[2] Ta85H[2] ... Ta19V[1] Ta19H[1]
* Latitude[3],Longitude[3] : Ta85V[3] Ta85H[3]
* Latitude[4],Longitude[4] : Ta85V[4] Ta85H[4] ... Ta19V[2] Ta19H[2]
* .
* .
* .
*/
struct AScan {
DDAEpoch StartOfScan; /* epoch of start of
scan */
float Latitude[128]; /* geodetic latitudes,
degrees */
float Longitude[128]; /* longitudes, 0-360
degrees */
float Ta85V[128]; /* 85V antenna temperatures,
Kelvins */
float Ta85H[128]; /* 85H antenna temperatures,
Kelvins */
float Ta37V[64]; /* 37V antenna temperatures,
Kelvins */
float Ta37H[64]; /* 37H antenna temperatures,
Kelvins */
float Ta22V[64]; /* 22V antenna temperatures,
Kelvins */
float Ta19V[64]; /* 19V antenna temperatures,
Kelvins */
float Ta19H[64]; /* 19H antenna temperatures,
Kelvins */
u_int QualityFlag85V[128]; /* 85V quality
flags */
u_int QualityFlag85H[128]; /* 85H quality
flags */
u_int QualityFlag37V[64]; /* 37V quality
flags */
u_int QualityFlag37H[64]; /* 37H quality
flags */
u_int QualityFlag22V[64]; /* 22V quality
flags */
u_int QualityFlag19V[64]; /* 19V quality
flags */
u_int QualityFlag19H[64]; /* 19H quality
flags */
u_int HotLoad85V[ DDA_SSMI_LOADS ]; /* 85V hot load readings,
counts */
u_int HotLoad85H[ DDA_SSMI_LOADS ]; /* 85H hot load readings,
counts */
u_int HotLoad37V[ DDA_SSMI_LOADS ]; /* 37V hot load readings,
counts */
u_int HotLoad37H[ DDA_SSMI_LOADS ]; /* 37H hot load readings,
counts */
u_int HotLoad22V[ DDA_SSMI_LOADS ]; /* 22V hot load readings,
counts */
u_int HotLoad19V[ DDA_SSMI_LOADS ]; /* 19V hot load readings,
counts */
u_int HotLoad19H[ DDA_SSMI_LOADS ]; /* 19H hot load readings,
counts */
u_int ColdLoad85V[ DDA_SSMI_LOADS ]; /* 85V cold load
readings, counts */
u_int ColdLoad85H[ DDA_SSMI_LOADS ]; /* 85H cold load readings,
counts */
u_int ColdLoad37V[ DDA_SSMI_LOADS ]; /* 37V cold load readings,
counts */
u_int ColdLoad37H[ DDA_SSMI_LOADS ]; /* 37H cold load readings,
counts */
u_int ColdLoad22V[ DDA_SSMI_LOADS ]; /* 22V cold load readings,
counts */
u_int ColdLoad19V[ DDA_SSMI_LOADS ]; /* 19V cold load readings,
counts */
u_int ColdLoad19H[ DDA_SSMI_LOADS ]; /* 19H cold load readings,
counts */
};
/*
* B (and B') scan parameters
*/
struct BScan {
DDAEpoch StartOfScan; /* epoch of start of
scan */
float Latitude[128]; /* geodetic latitudes,
degrees */
float Longitude[128]; /* longitudes, 0-360
degrees */
float Ta85V[128]; /* 85V antenna temperatures,
Kelvins */
float Ta85H[128]; /* 85H antenna temperatures,
Kelvins */
u_int QualityFlag85V[128]; /* 85V quality
flags */
u_int QualityFlag85H[128]; /* 85H quality
flags */
u_int HotLoad85V[ DDA_SSMI_LOADS ]; /* 85V hot load readings,
counts */
u_int HotLoad85H[ DDA_SSMI_LOADS ]; /* 85H hot load readings,
counts */
u_int ColdLoad85V[ DDA_SSMI_LOADS ]; /* 85V cold load
readings, counts */
u_int ColdLoad85H[ DDA_SSMI_LOADS ]; /* 85H cold load readings,
counts */
};
/*
* SSM/I Cycle (antenna temperatures)
*/
struct DDA_SSMICycle {
DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris
info */
DDA_SSMICalibration Calibration; /* Ta calibration
coefficients */
AScan A; /* A scan antenna
temperatures */
BScan B; /* B scan antenna
temperatures */
AScan APrime; /* A' scan antenna
temperatures */
BScan BPrime; /* B' scan antenna
temperatures */
};
/* ======================================================= */
/* ====================== SSM/I Tb ======================= */
/* ======================================================= */
/*
* A (and A') scan parameters (Tb)
*/
struct AScanTb {
DDAEpoch StartOfScan; /* epoch of start of
scan */
float Latitude[128]; /* geodetic latitudes,
degrees */
float Longitude[128]; /* longitudes, 0-360
degrees */
float Tb85V[128]; /* 85V brightness temperatures,
Kelvins */
float Tb85H[128]; /* 85H brightness temperatures,
Kelvins */
float Tb37V[64]; /* 37V brightness temperatures,
Kelvins */
float Tb37H[64]; /* 37H brightness temperatures,
Kelvins */
float Tb22V[64]; /* 22V brightness temperatures,
Kelvins */
float Tb19V[64]; /* 19V brightness temperatures,
Kelvins */
float Tb19H[64]; /* 19H brightness temperatures,
Kelvins */
u_int QualityFlag85V[128]; /* 85V quality
flags */
u_int QualityFlag85H[128]; /* 85H quality
flags */
u_int QualityFlag37V[64]; /* 37V quality
flags */
u_int QualityFlag37H[64]; /* 37H quality
flags */
u_int QualityFlag22V[64]; /* 22V quality
flags */
u_int QualityFlag19V[64]; /* 19V quality
flags */
u_int QualityFlag19H[64]; /* 19H quality
flags */
};
/*
* B (and B') scan parameters (Tb)
*/
struct BScanTb {
DDAEpoch StartOfScan; /* epoch of start
of scan */
float Latitude[128]; /* geodetic latitudes,
degrees */
float Longitude[128]; /* longitudes, 0-360
degrees */
float Tb85V[128]; /* 85V brightness temperatures,
Kelvins */
float Tb85H[128]; /* 85H brightness temperatures,
Kelvins */
u_int QualityFlag85V[128]; /* 85V quality
flags */
u_int QualityFlag85H[128]; /* 85H quality
flags */
};
/*
* SSM/I Cycle (brightness temperatures)
*/
struct DDA_SSMICycle_Tb {
DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris
info */
AScanTb A; /* A scan brightness
temperatures */
BScanTb B; /* B scan brightness
temperatures */
AScanTb APrime; /* A' scan brightness
temperatures */
BScanTb BPrime; /* B' scan brightness
temperatures */
};
/* ======================================================= */
/* ========================= SSM/T-2 ===================== */
/* ======================================================= */
/*
* SSM/T-2 Scan
*/
struct DDA_SSMT2Scan {
DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris
info */
DDAEpoch StartOfScan; /* epoch of start of
scan */
float Latitude[28]; /* geodetic latitudes,
degrees */
float Longitude[28]; /* longitudes, 0-360
degrees */
float Tb183_3[28]; /* 183 (+- 3) GHz brightness temperatures,
Kelvins */
float Tb183_1[28]; /* 183 (+- 1) GHz brightness temperatures,
Kelvins */
float Tb183_7[28]; /* 183 (+- 7) GHz brightness temperatures,
Kelvins */
float Tb91_1[28]; /* 91 (+- 1) GHz brightness temperatures,
Kelvins */
float Tb150_1[28]; /* 150 (+- 1) GHz brightness temperatures,
Kelvins */
u_int QualityFlag183_3[28]; /* 183 (+- 3) GHz
quality flags */
u_int QualityFlag183_1[28]; /* 183 (+- 1) GHz quality
flags */
u_int QualityFlag183_7[28]; /* 183 (+- 7) GHz quality
flags */
u_int QualityFlag91_1[28]; /* 91 (+- 1) GHz quality
flags */
u_int QualityFlag150_1[28]; /* 150 (+- 1) GHz quality
flags */
u_int SAGC183_3; /* 183 (+- 3) GHz gain
control, counts */
u_int SAGC183_1; /* 183 (+- 1) GHz gain control,
counts */
u_int SAGC183_7; /* 183 (+- 7) GHz gain control,
counts */
u_int SAGC91_1; /* 91 (+- 1) GHz gain control,
counts */
u_int SAGC150_1; /* 150 (+- 1) GHz gain control,
counts */
float Gain183_3; /* 183 (+- 3) GHz counts-to-Tb gain,
Kelvins/count */
float Gain183_1; /* 183 (+- 1) GHz counts-to-Tb gain,
Kelvins/count */
float Gain183_7; /* 183 (+- 7) GHz counts-to-Tb gain,
Kelvins/count */
float Gain91_1; /* 91 (+- 1) GHz counts-to-Tb gain,
Kelvins/count */
float Gain150_1; /* 150 (+- 1) GHz counts-to-Tb gain,
Kelvins/count */
float Offset183_3; /* 183 (+- 3) GHz counts-to-Tb offset,
Kelvins */
float Offset183_1; /* 183 (+- 1) GHz counts-to-Tb offset,
Kelvins */
float Offset183_7; /* 183 (+- 7) GHz counts-to-Tb offset,
Kelvins */
float Offset91_1; /* 91 (+- 1) GHz counts-to-Tb offset,
Kelvins */
float Offset150_1; /* 150 (+- 1) GHz counts-to-Tb offset,
Kelvins */
u_int ThermalReference; /* thermal reference, counts */
u_int Temperatures[18]; /* miscellaneous housekeeping, counts */
u_int WarmCounts183_3[4]; /* 183 (+- 3) GHz warm load counts,
counts */
u_int WarmCounts183_1[4]; /* 183 (+- 1) GHz warm load counts,
counts */
u_int WarmCounts183_7[4]; /* 183 (+- 7) GHz warm load counts,
counts */
u_int WarmCounts91_1[4]; /* 91 (+- 1) GHz warm load counts,
counts */
u_int WarmCounts150_1[4]; /* 150 (+- 1) GHz warm load counts,
counts */
u_int ColdCounts183_3[4]; /* 183 (+- 3) GHz cold load counts,
counts */
u_int ColdCounts183_1[4]; /* 183 (+- 1) GHz cold load counts,
counts */
u_int ColdCounts183_7[4]; /* 183 (+- 7) GHz cold load counts,
counts */
u_int ColdCounts91_1[4]; /* 91 (+- 1) GHz cold load counts,
counts */
u_int ColdCounts150_1[4]; /* 150 (+- 1) GHz cold load counts,
counts */
};
/* ======================================================= */
/* ========================= SSM/T-1 ===================== */
/* ======================================================= */
/*
* SSM/T-1 Scan
*
* Notes:
* ------
* Thermistor[ 0] = Warm Load 1 Temp
* Thermistor[ 1] = Warm Load 2 Temp
* Thermistor[ 2] = Warm Load 3 Temp
* Thermistor[ 3] = Cold Load 1 Temp
* Thermistor[ 4] = Cold Load 2 Temp
* Thermistor[ 5] = Cold Load 3 Temp
* Thermistor[ 6] = Diplexer Temp
* Thermistor[ 7] = V Modulator Temp
* Thermistor[ 8] = H Modulator Temp
* Thermistor[ 9] = RF Filter Temp
* Thermistor[10] = GMT Temp
* Thermistor[11] = Mixer 1 Temp
* Thermistor[12] = Mixer 2 Temp
* Thermistor[13] = Mixer 3 Temp
* Thermistor[14] = Local Oscillator Temp
* Thermistor[15] = IF Amplifier 1 Temp
* Thermistor[16] = IF Amplifier 2 Temp
* Thermistor[17] = IF Amplifier 3 Temp
* Thermistor[18] = Antenna Temp
* Thermistor[19] = DC/DC Connector Temp
*
*/
/*
* Number of video samples per smooth scan line
*/
const SSMT1_CHANNELS = 7;
const SSMT1_BEAM_POSITIONS = 7;
struct DDA_SSMT1Scan {
DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris
info */
DDAEpoch StartOfScan; /* epoch of start of
scan */
float Latitude[SSMT1_BEAM_POSITIONS]; /* geodetic latitudes,
degrees */
float Longitude[SSMT1_BEAM_POSITIONS]; /* longitudes, 0-360
degrees */
float Tb50_5[SSMT1_BEAM_POSITIONS]; /* 50.5 GHz brightness
temp, Kelvins */
float Tb53_2[SSMT1_BEAM_POSITIONS]; /* 53.2 GHz brightness temp,
Kelvins */
float Tb54_3[SSMT1_BEAM_POSITIONS]; /* 54.35 GHz brightness temp,
Kelvins */
float Tb54_9[SSMT1_BEAM_POSITIONS]; /* 54.9 GHz brightness temp,
Kelvins */
float Tb58_4[SSMT1_BEAM_POSITIONS]; /* 58.4 GHz brightness temp,
Kelvins */
float Tb58_8[SSMT1_BEAM_POSITIONS]; /* 58.825 GHz brightness temp,
Kelvins */
float Tb59_4[SSMT1_BEAM_POSITIONS]; /* 59.4 GHz brightness temp,
Kelvins */
u_int QualityFlag50_5[SSMT1_BEAM_POSITIONS]; /* 50.5 GHz
quality flags */
u_int QualityFlag53_2[SSMT1_BEAM_POSITIONS]; /* 53.2 GHz
quality flags */
u_int QualityFlag54_3[SSMT1_BEAM_POSITIONS]; /* 54.35 GHz
quality flags */
u_int QualityFlag54_9[SSMT1_BEAM_POSITIONS]; /* 54.9 GHz
quality flags */
u_int QualityFlag58_4[SSMT1_BEAM_POSITIONS]; /* 58.4 GHz
quality flags */
u_int QualityFlag58_8[SSMT1_BEAM_POSITIONS]; /* 58.825 GHz
quality flags */
u_int QualityFlag59_4[SSMT1_BEAM_POSITIONS]; /* 59.4 GHz
quality flags */
float Gain50_5; /* 50.5 GHz counts-to-Ta gain,
Kelvins/count */
float Gain53_2; /* 53.2 GHz counts-to-Ta gain,
Kelvins/count */
float Gain54_3; /* 54.35 GHz counts-to-Ta gain,
Kelvins/count */
float Gain54_9; /* 54.9 GHz counts-to-Ta gain,
Kelvins/count */
float Gain58_4; /* 58.4 GHz counts-to-Ta gain,
Kelvins/count */
float Gain58_8; /* 58.825 GHz counts-to-Ta gain,
Kelvins/count */
float Gain59_4; /* 59.4 GHz counts-to-Ta gain,
Kelvins/count */
float Offset50_5; /* 50.5 GHz counts-to-Ta offset,
Kelvins */
float Offset53_2; /* 53.2 GHz counts-to-Ta offset,
Kelvins */
float Offset54_3; /* 54.35 GHz counts-to-Ta offset,
Kelvins */
float Offset54_9; /* 54.9 GHz counts-to-Ta offset,
Kelvins */
float Offset58_4; /* 58.4 GHz counts-to-Ta offset,
Kelvins */
float Offset58_8; /* 58.825 GHz counts-to-Ta offset,
Kelvins */
float Offset59_4; /* 59.4 GHz counts-to-Ta offset,
Kelvins */
u_int SAGC_Channel1[SSMT1_BEAM_POSITIONS]; /* SAGC for
channel 1 */
u_int SAGC_Channel234[SSMT1_BEAM_POSITIONS]; /* SAGC for
channels 2-4 */
u_int SAGC_Channel567[SSMT1_BEAM_POSITIONS]; /* SAGC for
channels 5-7 */
u_int WarmCal[SSMT1_CHANNELS]; /* beam position 15,
counts */
u_int WarmCalSAGC_Channel1; /* SAGC, beam position 15,
channel 1 */
u_int WarmCalSAGC_Channel234; /* SAGC, beam position 15,
channels 2-4 */
u_int WarmCalSAGC_Channel567; /* SAGC, beam position 15,
channels 5-7 */
u_int ColdCal[SSMT1_CHANNELS]; /* beam position 23,
counts */
u_int ColdCalSAGC_Channel1; /* SAGC, beam position 23,
channel 1 */
u_int ColdCalSAGC_Channel234; /* SAGC, beam position 23,
channels 2-4 */
u_int ColdCalSAGC_Channel567; /* SAGC, beam position 23,
channels 5-7 */
u_int Thermistors[20]; /* MUX data,
counts */
u_int IRSync;
u_int MUXZero;
u_int MUXCal;
u_int MUXFlag;
};
/* ======================================================= */
/* ========================= SSJ/4 ======================= */
/* ======================================================= */
const DDA_SSJ4_CHANNELS = 20;
/*
* SSJ/4 Scan
*
* Notes:
* ------
* Channel Channel
* Index Energy
* ------- ----------
* [ 0] : 30.000 KeV
* [ 1] : 20.440 KeV
* [ 2] : 13.920 KeV
* [ 3] : 9.480 KeV
* [ 4] : 6.460 KeV
* [ 5] : 4.400 KeV
* [ 6] : 3.000 KeV
* [ 7] : 2.040 KeV
* [ 8] : 1.390 KeV
* [ 9] : 0.948 KeV
* [10] : 948.0 eV
* [11] : 646.0 eV
* [12] : 440.0 eV
* [13] : 300.0 eV
* [14] : 204.4 eV
* [15] : 139.2 eV
* [16] : 94.9 eV
* [17] : 64.6 eV
* [18] : 44.0 eV
* [19] : 30.0 eV
*/
struct DDA_SSJ4Scan {
DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris
info */
float CorrGeomLatitude; /* degrees (from PACE
model) */
float CorrGeomLongitude; /* degrees east (from PACE
model) */
float MagneticLocalTime; /* 0.0,,24.0 (from PACE
model) */
float DiffNumberFluxE[DDA_SSJ4_CHANNELS];
float DiffNumberFluxP[DDA_SSJ4_CHANNELS];
u_int CountsE[ DDA_SSJ4_CHANNELS ];
u_int CountsP[ DDA_SSJ4_CHANNELS ];
u_int QualityFlagE[DDA_SSJ4_CHANNELS];
u_int QualityFlagP[DDA_SSJ4_CHANNELS];
};
/* ======================================================= */
/* ========================= SSM ========================= */
/* ======================================================= */
const DDA_SSM_AXES = 3;
const DDA_SSM_X_DIFFS = 9;
const DDA_SSM_YZ_DIFFS = 11;
struct DDA_SSMScan {
DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris
info */
float CorrGeomLatitude; /* degrees (from PACE
model) */
float CorrGeomLongitude; /* degrees east (from PACE
model) */
float MagneticLocalTime; /* 0.0,,24.0 (from PACE
model) */
u_int Mode; /* 1 = normal operating mode, 0 =
test mode */
u_int Delta; /* 1 = delta exceeded, 0 = delta in
range */
u_int Calibrate; /* 1 = calibrate on, 0 = calibrate
off */
/*
* The bias counts range in value from 0 through 31, in units of
* approximately 4096 gammas.
*/
u_int XBias;
u_int YBias;
u_int ZBias;
/*
* The fine counts range in value from 0 through 4095, in units of
* approximately 2 gammas.
*/
u_int XFine; u_int YFine;
u_int ZFine;
/*
* The difference counts range in value from -32 through 31. 9
are sent for
* the X axis and 11 are sent for the Y and Z axes.
*/
u_int XDiffs[ DDA_SSM_X_DIFFS ];
u_int YDiffs[ DDA_SSM_YZ_DIFFS ];
u_int ZDiffs[ DDA_SSM_YZ_DIFFS ];
/* u_int QualityFlagE[ DDA_SSJ4_CHANNELS ]; */
/* u_int QualityFlagP[ DDA_SSJ4_CHANNELS ]; */
};
/* ======================================================= */
/* ========================= SSIES-1 ===================== */
/* ======================================================= */
const DDA_SSIES1_WORDS = 120;
/*
* SSIES-1 Scan
*
* Note: SSIES-1 data currently archived as raw counts.
*/
struct DDA_SSIES1Scan {
DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris
info */
float CorrGeomLatitude; /* degrees (from PACE
model) */
float CorrGeomLongitude; /* degrees east (from PACE
model) */
float MagneticLocalTime; /* 0.0,24.0 (from PACE
model) */
unsigned Counts[DDA_SSIES1_WORDS]; /* raw counts for 1 second */
u_int QualityFlag; /* scan quality flag */
};
/*
* SSIES Drift Meter data
*/
struct DDA_DriftMeter {
DDASpacecraftInfo StartOfCycle;
float CorrGeomLatitude; /* degrees (from PACE
model) */
float CorrGeomLongitude; /* degrees east (from PACE
model) */
float MagneticLocalTime; /* 0.0,24.0 (from PACE
model) */
u_int DriftMeterMode; /* normal(0) or
H+(1) */
float VX[6]; /* vertical velocities
(meters/sec) */
float VZ[6]; /* horizontal velocities
(meters/sec) */
u_int VXQualityFlag; /* sample quality
flags */
u_int VZQualityFlag; /* sample quality
flags */
};
struct DDA_SSIESDriftMeter {
DDA_DriftMeter Cycle1; /* 1st second of drift meter
data */
DDA_DriftMeter Cycle2; /* 2nd second of drift meter
data */
};
/* ======================================================= */
/* ========================= SSIES-2 ===================== */
/* ======================================================= */
const DDA_SSIES2_WORDS = 84;
/*
* SSIES-2 Scan
*/
struct DDA_SSIES2Scan {
DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris
info */
float CorrGeomLatitude; /* degrees (from PACE
model) */
float CorrGeomLongitude; /* degrees east (from PACE
model) */
float MagneticLocalTime; /* 0.0,24.0 (from PACE
model) */
unsigned Counts[DDA_SSIES2_WORDS]; /* raw counts for 1 second */
u_int QualityFlag; /* scan quality flag */
};
------------------------------------------------------------------------
file ID: /dmsp/moby-1-3/subscriptions/IBAMA/1353226646955.tmp
data set ID: DMSP F14 OLS LS & TS
record bytes: 3040
number of header records: 1
number of records: 692
suborbit history: F14200307192230.OIS (1,691)
processing system: v2.1b
processing date: Sat Jul 19 19:33:23 2003
spacecraft ID: F14
NORAD ID: 24753
start date UTC: 2003-07-19
start time UTC: 22:30:31.37112
end date UTC: 2003-07-19
end time UTC: 22:35:21.83694
start date local: 2003-07-19
start time local: 19:52:42.03518
start lat,lon: 0.00 320.54
end lat,lon: 16.99 316.69
start sub-solar coord: 20.87 202.37
end sub-solar coord: 20.87 201.16
start lunar coord: UNKNOWN
end lunar coord: UNKNOWN
ascending node: 320.55
node heading: 8.64
ephemeris source: NORAD
number of data records: 691
number of artificial data records: 0
nominal resolution: 2.7 km
bands per scanline: 2
samples per band: 1465
bytes per sample: 1
byte offset band 1: 96
byte offset band 2: 1568
band 1: OLS Visible .4-1.1um
band 2: OLS Thermal 10.5-12.6um
organization: band interleaved by line
thermal offset: 190.00 K
thermal scale: 0.47
QC flags: 0=not QC'ed 1=artificial 2=bad vis
% daylight: 0.0
% full moon: 57.8
% terminator evident: 0.0
end header