INTERMAGNET IMFV2.83 Data Format
Note : The following content describes the format of a file. If you are using a screen reader, you may have difficulty reading this content. For any assistance, please contact the webmaster.
The INTERMAGNET satellite data transmission format IMFV2.83 defines the structure of 126 bytes of magnetic observatory information. METEOSAT users, who must transmit once per hour, will send five 12-minute IMFV2.83 data blocks. GOES users transmit at 12-minute intervals one IMFV2.83 data block encoded in NESS-BINARY (189 bytes). The order of transmission to the satellite will be in byte sequence low- byte first, then high-byte.
Header (12 Bytes)
Time stamp of the first sample Byte # Day (1-365/366) 12 Bits 1 - 3 * Minute of the day (0 - 1439) 12 Bits 1 - 3 * Offset for C1 8 Bits 4 Offset for C2 8 Bits 5 Offset for C3 8 Bits 6 Offset for C4 8 Bits 7 Flags #1 8 Bits 8 Flags #2 8 Bits 9 Identification: Colatitude in 1/10 degrees (0 - 1800) 12 Bits 10 - 12 * East Longitude in 1/10 degrees (0 - 3600) 12 Bits 10 - 12 *
Free Space (8 bytes)
Base Reference Measurement (BRM) OR Free Space (10 bytes)
Minute Values (96 bytes)
C1 for sample 1 16 Bits 31-32 C2 for sample 1 16 Bits 33-34 C3 for sample 1 16 Bits 35-36 . . . . . . . . . C1 for sample 12 16 Bits 119-120 C2 for sample 12 16 Bits 121-122 C3 for sample 12 16 Bits 123-124 C4 for sample 12 16 Bits 125-126 * See Header Encoding
Flags #1
MSB (8) & (7) Orientation code 0: X,Y,Z 1: H,D,Z 2: D,I,F 3: Other Orientation Code Component Component Component Component 1 2 3 4 0 X Y Z F 1 H D Z F 2 D I F 3 . . (OTHER) . . (6) Scale factor for X or H (5) Scale factor for Y or D (4) Scale factor for Z or I (3) Scale factor for F (2) Filtering 0: INTERMAGNET approved filtering 1: non-approved filtering See INTERMAGNET terminology "filtering" (1) Alert capability -- The IMO has the ability to detect magnetic events if the flag is set to 1. 0: not active 1: active MSB LSB Scale Scale Scale Scale Alert Orientation Code factor factor factor factor Filter Capability 8 7 6 5 4 3 2 1
Flags #2
MSB (8) Sudden storm commencement detected (7) Storm in progress -- A storm is in progress if the level of magnetic activity is equivalent to K>4 for past one-hour period. The flag will be reset to zero when the equivalent level of activity drops to K<4
IMFV2.83 Header Encoding
In IMFV2.83 format, the time stamp and site identification code are encoded in 3-byte strings formed from two 12-bit fields combined as described below:
Time Stamp Input Encoded Output Least sig. 8 bits of day Byte 1 Most sig. 4 bits of day Byte 2,four least sig. bits Least sig. 4 bits of minute Byte 2, four most sig. bits Most sig. 8 bits of minute Byte 3 Site Identification Code Input Encoded Output Least sig. 8 bits of colatitude Byte 10 Most sig. 4 bits of colatitude Byte 11, four least sig. bits Least sig. 4 bits of east longitude Byte 11, four most sig. bits Most sig. 8 bits of east longitude Byte 12 Example: The time stamp for day 30, minute 684 would be encoded as: Input fields msb lsb 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 1 1 1 1 0 Day 30 0 1 E (first item) 0 0 1 0 1 0 1 0 1 1 0 0 Minute 684 2 A C (second item) Output Encoded field Byte 0 Byte 1 Byte 2 0001 1110 1100 0000 0010 1001 HEX 1 E C 0 2 A 8 lsb Day 4 lsb Minute 8 msb Minute 4 msb Day The encoded 3 bytes output from this example would be 1ECO2A.
IMFV2.83 Data Value Encoding
Constraints on the bandwidth of a GOES satellite communications channel dictate a maximum transmission block of 126 bytes of data once every 12 minutes from an INTERMAGNET Magnetic Observatory (IMO). To conserve bytes, each measurement of a magnetic component is represented using only 2 bytes which, upon reception, are interpreted together with header information to produce a resultant 3-byte representation at the Geomagnetic Information Node (GIN). All magnetic field values in this encoding description are expressed in tenths of nanoTeslas (tnT) unless otherwise noted. The resolution of the measurements is 1 tnT and so a 16-bit representation allows a 216 = 65536 tnT (6553.6 nT) dynamic range within a 12-minute IMFV2.82 block. This is inadequate to accomodate magnetic storms at some locations, and so the encoding scheme produces measurements at reduced sensitivity when extremely large excursions are present. The INTERMAGNET data encoding produces an Offset (OFF) value and a Scale Factor (SF) flag bit for each component, as well as the encoded individual minute values. The OFF and SF apply to all measurements of a component within an IMFV2.83 data block.
We define the terms used in encoding as follows:
Data(i) Set of minute values measured in tnT Dpos(i) Minute values shifted by 1048576 to be always positive Dmax Largest Dpos(i) of a given component in IMFV2.83 block Dmin Smallest Dpos(i) of a given component in IMFV2.83 block OFF Offset value BF Bias Factor = 8192 SM Scale Multiplier for sensitivity of encoded data SF Scale Factor flag for sensivity of encoded data E(i) Set of encoded minute values
Numbers used in this encoding algorithm have been chosen to permit simple binary arithmetic operations:
8192 = 213 57344 = 216 - 213 1048576 = 220 2097151 = 221 - 1
Encoding of a 12-minute IMFV2.83 data block begins by adding a constant 1048576 tnT to the minute values Data(i) to produce a new data set Dpos(i) whose values are always positive.
Dpos(i) = Data(i) + 1048576 (1)
The limiting values of these Dpos(i) are 0 and 2097151 tnT. An Offset value (OFF) is next computed from the Dpos(i) for each component by using the minimum value of the component, Dmin.
OFF = INT (Dmin/BF) (2)
where INT means the truncated integer after the division. The OFF value for each component may be anywhere in the range of 0 to 255 and the OFF values for the four components are stored in bytes 4,5,6,7 of the header for use in decoding the data after reception at a GIN. A Scale Multiplier (SM) for each component is now computed:
SM = INT ((Dmax - OFF*BF)/57344) + 1 (3)
The encoding algorithm produces an SM whose value is governed by the range of Dpos(i) within a data block. In this application to format IMFV2.83, however, SM can in practice be limited to values of either 1 or 2. Format IMFV2.83 reserves only one flag bit per component for storing scale information. These flags are bits 6,5,4,3 of byte 8 in the header, labelled Scale Factor (SF). Flag bit SF=0 represents SM=1, where the encoded data are considered at normal sensitivity (1 tnT/bit). At SM=1, the dynamic range available in the data block is at least 49152 tnT (= 57344-BF) and at most 57344 tnT, depending upon where the Dmin value sits relative to the quantity OFF*BF. Flag bit SF=1 represents SM=2, where the encoded data are considered as half sensitivity (2 tnT/bit). At SM=2, the dynamic range in the data block is at least 106496 tnT (= 2*57344-BF) and at most 114688 tnT (= 2*57344) depending again upon where Dmin is relative to the quantity OFF*BF. Encoded data values are now computed as:
E(i) = INT((Dpos(i) - OFF*BF)/SM) (4)
and are stored in bytes 31 to 126. Upon reception at the GIN, encoded data are reconstituted using the expression:
Data(i) = E(i)*SM + OFF*BF - 1048576 (5)
This reconstitution is exact for SM=1 but rounded down by no more than 2 tnT on those infrequent occasions when SM=2.
In summary, the expressions defining each of the encoding and reconstitution steps are:
Dpos(i) = Data(i) + 1048576 (1) OFF = INT (Dmin/BF) (BF=8192) (2) SM = INT ((Dmax - OFF*BF)/57344) + 1 (3) E(i) = INT((Dpos(i) - OFF*BF)/SM) (4) Data(i) = E(i)*SM + OFF*BF - 1048576 (5) Scale Factor flags are set as follows: SF SM 0 1 1 2
NOTE: E(i) set to 65535 (FFFF hex) indicates missing or invalid data.
Minute Shifted Data Offset Values Data (i) Dpos(i) OFF OFF*BF (tnT) 255 2088960 . . . . . . . . +- 2097151 -+ +-16 131072 | | | | | | 15 122880 | | | | | | 14 114688 | | | | | | 13 106496 | | | | | | 12 98304 <---+ | | | <-Dmax | | | | 11 90112 | | | | | Span | | | 10 81920 | for | | | | sm=1 | | | 9 73728 | | | | | =57344 1048576<--+ +-> | 1048576 | +-->| 8 65536 | | | | | | | | | | | | | | 7 57344 | | | | | | | | | | | | | | 6 49152 | | | | | | | <-Dmin | | | | | | | 5 40960 <--+ | | | | | | | | | | | | 4 32768 | | | | | | | | | | | | 3 24576 | | | | | | | | | | | | 2 16384 | | | | -+ | | | | | | +-+ | 1 8192 | | | | | | 0 | --+ +-- 0 -+ -+ +-0 0 | | | | | | | | | | | | | | | 1048576 -+
There are also examples of encoding using IMFV2.83.
- Date modified: