Data Formats
INTERMAGNET Satellite Transmission Format : IMFV2.83
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. Refer to APPENDIX E2 for satellite coding examples.REFERENCE MEASUREMENT (RM) or FREE SPACE
|
Day of first sample (1-365/366) |
12 Bits |
1 - 3 [1] |
Minute of the day of first sample (0 - 1439) |
12 Bits |
1 - 3 [1] |
|
Offset for C1 |
8 Bits |
4 |
|
Offset for C2 |
8 Bits |
5 |
|
Offset for C3 |
8 Bits |
6 |
|
Offset for C4 |
8 Bits |
7 |
|
Flag #1 |
8 Bits |
8 |
|
Flag #2 |
8 Bits |
9 |
|
Colatitude in 1/10 degrees (0 - 1800) |
12 Bits |
10 - 12 [1] |
|
Flag #2 |
12 Bits |
10 - 12 [1] |
|
08 BYTES |
FREE SPACE |
64 Bits |
13 - 20 |
10 BYTES |
REFERENCE MEASUREMENT (RM) or FREE SPACE |
80 Bits |
21 - 30 |
|
C1 for Sample 1 |
16 Bits |
31 - 32 |
C2 for Sample 1 |
16 Bits |
33 - 34 |
|
C3 for Sample 1 |
16 Bits |
34 - 35 |
|
… |
… |
… |
|
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 |
MSB |
Description |
---|---|
8 |
Orientation Code Component 1 Component 2 Component 3 Component 4
0 X Y Z F
1 H D Z F
2 D I F
3 Other
|
7 |
|
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 |
Description |
---|---|
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. |
6 |
0: No Reference Measurement (RM) capability bytes 13-30 are user free space 1: Base Reference Measurement data available inbytes 21-30. Bytes’ 13-20 are user free space. |
5 |
Free (user defined) |
4 |
Free (user defined) |
3 |
Free (user defined) |
2 |
Free (user defined) |
1 |
Free (user defined) |
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 |
Bit (MSB to LSB) |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Hex |
Day 30 (first item) |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
01E |
Minute 684 (second item) |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
2AC |
Byte 0 |
Byte 1 |
Byte 2 |
||||
---|---|---|---|---|---|---|
Byte |
0001 |
1110 |
1100 |
0000 |
0010 |
1001 |
Hex |
1 |
E |
C |
0 |
2 |
A |
Value |
8 LSB Day |
4 LSB Minute |
4 MSB Day |
8 MSB Minute |
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.83 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 (see diagram at end of appendix). 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 \(D_{pos}(i)\) whose values are always positive.
The limiting values of these \(D_{pos}(i)\) are 0 and 2097151tnT. An Offset value (OFF) is next computed from the \(D_{pos}(i)\) for each component by using the minimum value of the component, \(D_{min}\).
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:
The encoding algorithm produces an SM whose value is governed by the range of \(D_{pos}(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 \(D_{min}\) 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 \(D_{min}\) is relative to the quantity OFF*BF. Encoded data values are now computed as:
and are stored in bytes 31 to 126. Upon reception at the GIN, encoded data are reconstituted using the expression:
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:
\(D_{pos}(i) = Data(i) + 1048576\)
\(OFF = INT (D_{min}/BF)\)
\(SM = INT ((D_{max} - OFF*BF)/57344) + 1\)
\(E(i) = INT((D_{pos}(i) - OFF*BF)/SM)\)
\(Data(i) = E(i)*SM + OFF*BF - 1048576\)
Scale Factor flags are set
SF |
SM |
---|---|
0 |
1 |
1 |
2 |
Note
E(i) set to 65535 (FFFF hex) indicates missing or invalid data.
Satellite Coding Examples
Coding Example for Goes Satellite
Each block of 126 bytes in IMFV2.83 must be encoded in 189 NESS-BINARY bytes (NESSbytes). NESSBINARY breaks each pair of source bytes (word) into 3 NESSbytes. If the bits of the source word are B15-B0 with B15 the most significant, then these are placed right-justified in NESSbytes as follows: B15-B12 are in the first NESSbyte, B11-B6 are in the second NESSbyte and B5-B0 are in the third NESSbyte. Within NESSbytes, bit 6 is always set to 1 and bit 7 is set for odd parity. In the first NESSbyte, bits 5 and 4 are filled by sign extension, i.e. they take the same value as bit 3. As an example, consider the 16-bit source word h0C4E, d3150.
Step 1 - break into 3 formative NESSbytes.
byte 1: XXXX0000
byte 2: XX110001
byte 3: XX001110
Step 2 - sign extend in byte 1, bit 6=1, bit 7=odd parity.
NESSbyte 1:01000000
NESSbyte 2:11110001
NESSbyte 3:11001110
After encoding, the 12-minute block is sent to the data collection platform (DCP) to be transmitted.
Consider the following data set:
Date: March 23 1993 (day 082)
Time of first sample 12:00
Observatory identification: 04342275 (co-latitude 43.4E, longitude 227.5E)
Sensor orientation is XYZF
INTERMAGNET approved filtering
No alert capability
No RMs
Flag #1: 00000000
Flag #2: 00000000
Minute values of C1, C2, C3, C4
209062 -56 423216 472036
209062 -52 423218 472038
209058 -46 423220 472038
209053 -49 423219 472035
209052 -51 423214 472030
209054 -55 423214 472031
209061 -56 423215 472035
209066 -55 423217 472039
209062 -52 423214 472034
209055 -54 423212 472030
209055 -52 423213 472030
209056 -50 423213 472031
Hex dump of IMFV2.83 binary of this 12-minute block: (126 characters)
52 00 2D 99 7F B3 B9 00 00 B2 31 8E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A6 10 C8 1F 30 15 E4 13 A6 10 CC 1F 32 15 E6 13 A2 10 D2 1F 34 15 E6 13 9D 10 CF 1F 33 15 E3 13 9C 10 CD 1F 2E 15 DE 13 9E 10 C9 1F 2E 15 DF 13 A5 10 C8 1F 2F 15 E3 13 AA 10 C9 1F 31 15 E7 13 A6 10 CC 1F 2E 15 E2 13 9F 10 CA 1F 2C 15 DE 13 9F 10 CC 1F 2D 15 DE 13 A0 10 CE 1F 2D 15 DF 13
After conversion to NESS-BINARY for GOES satellite: (189 characters)
45 C8 40 C2 76 D9 C7 FE 73 FB 64 40 40 C2 F2 43 46 CE 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 7A 58 D0 7C E0 DF 43 40 D5 FE D0 D3 7A 58 D0 7C 70 DF 43 C8 D5 FE 58 D3 7A C8 D0 FD C8 DF 43 D0 D5 FE 58 D3 79 F4 D0 7C 7C DF 43 4C D5 FE 4C D3 79 70 D0 7C F4 DF C2 F8 D5 FD F8 D3 79 F8 D0 7C 64 DF C2 F8 D5 FD 7C D3 7A 54 D0 7C E0 DF C2 7C D5 FE 4C D3 7A 68 D0 7C 64 DF 43 C4 D5 FE DC D3 7A 58 D0 7C 70 DF C2 F8 D5 FE C8 D3 79 7C D0 7C 68 DF C2 70 D5 FD F8 D3 79 7C D0 7C 70 DF C2 F4 D5 FD F8 D3 7A 40 D0 7C F8 DF C2 F4 D5 FD 7C D3
Coding Example for Meteosat Satellite
As the duration between two time slots on the METEOSAT satellite is one hour, five 12-minute blocks are chained and sent to the DCP for transmission. As a METEOSAT message is 640 bytes long, 10 bytes (hex00) are added to the end of the 630 bytes of the 5 X 12-minute blocks (5 X 126 bytes). Binary from IMFV2.83 format is sent to the DCP without any modification.
Consider the following data set:
Date: March 23 1993 (day 082)
Time of first sample 12:00
Observatory identification: 04342275 (co-latitude 43.4E, longitude 227.5E)
Sensor orientation is XYZF
INTERMAGNET approved filtering
No alert capability
No RMs
Flag #1: 00000000
Flag #2: 00000000
Minute values of C1, C2, C3, C4
Block #1: minute 0-11
209062 -56 423216 472036
209062 -52 423218 472038
209058 -46 423220 472038
209053 -49 423219 472035
209052 -51 423214 472030
209054 -55 423214 472031
209061 -56 423215 472035
209066 -55 423217 472039
209062 -52 423214 472034
209055 -54 423212 472030
209055 -52 423213 472030
209056 -50 423213 472031
Block #2: minute 12-23
209059 -45 423215 472034
209057 -45 423214 472032
209059 -40 423216 472035
209057 -42 423214 472032
209054 -40 423213 472030
209053 -42 423214 472030
209048 -45 423214 472028
209046 -47 423217 472030
209045 -45 423217 472030
209044 -46 423217 472029
209043 -44 423214 472026
209045 -43 423215 472028
Block #3 : minute 24-35
209050 -44 423215 472030
209056 -45 423217 472035
209064 -45 423218 472039
209072 -43 423217 472042
209073 -41 423216 472041
209069 -39 423216 472039
209063 -37 423215 472036
209059 -36 423216 472035
209054 -37 423216 472033
209051 -42 423215 472030
209046 -47 423215 472028
209045 -50 423216 472029
Block #4: minute 36-47
209041 -56 423214 472025
209044 -58 423215 472027
209044 -60 423215 472027
209049 -57 423217 472031
209056 -54 423217 472035
209063 -48 423217 472038
209068 -45 423217 472040
209070 -42 423216 472040
209072 -40 423217 472042
209070 -38 423216 472040
209065 -40 423215 472037
209063 -41 423215 472036
Block #5: minute 48-59
209067 -39 423217 472039
209064 -41 423216 472037
209059 -42 423215 472034
209058 -41 423215 472034
209061 -40 423214 472034
209063 -37 423215 472036
209060 -37 423215 472034
209060 -38 423213 472033
209063 -39 423213 472034
209063 -40 423212 472033
209068 -37 423215 472038
209071 -33 423217 472041
Hex dump of IMFV2.83 binary of these five 12-minute blocks: (5 * 126 + 10 trailing zeros = 640 characters)
52 00 2D 99 7F B3 B9 00 00 B2 31 8E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A6 10 C8 1F 30 15 E4 13 A6 10 CC 1F 32 15 E6 13 A2 10 D2 1F 34 15 E6 13 9D 10 CF 1F 33 15 E3 13 9C 10 CD 1F 2E 15 DE 13 9E 10 C9 1F 2E 15 DF 13 A5 10 C8 1F 2F 15 E3 13 AA 10 C9 1F 31 15 E7 13 A6 10 CC 1F 2E 15 E2 13 9F 10 CA 1F 2C 15 DE 13 9F 10 CC 1F 2D 15 DE 13 A0 10 CE 1F 2D 15 DF 13 52 C0 2D 99 7F B3 B9 00 00 B2 31 8E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A3 10 D3 1F 2F 15 E2 13 A1 10 D3 1F 2E 15 E0 13 A3 10 D8 1F 30 15 E3 13 A1 10 D6 1F 2E 15 E0 13 9E 10 D8 1F 2D 15 DE 13 9D 10 D6 1F 2E 15 DE 13 98 10 D3 1F 2E 15 DC 13 96 10 D1 1F 31 15 DE 13 95 10 D3 1F 31 15 DE 13 94 10 D2 1F 31 15 DD 13 93 10 D4 1F 2E 15 DA 13 95 10 D5 1F 2F 15 DC 13 52 80 2E 99 7F B3 B9 00 00 B2 31 8E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9A 10 D4 1F 2F 15 DE 13 A0 10 D3 1F 31 15 E3 13 A8 10 D3 1F 32 15 E7 13 B0 10 D5 1F 31 15 EA 13 B1 10 D7 1F 30 15 E9 13 AD 10 D9 1F 30 15 E7 13 A7 10 DB 1F 2F 15 E4 13 A3 10 DC 1F 30 15 E3 13 9E 10 DB 1F 30 15 E1 13 9B 10 D6 1F 2F 15 DE 13 96 10 D1 1F 2F 15 DC 13 95 10 CE 1F 30 15 DD 13 52 40 2F 99 7F B3 B9 00 00 B2 31 8E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 91 10 C8 1F 2E 15 D9 13 94 10 C6 1F 2F 15 DB 13 94 10 C4 1F 2F 15 DB 13 99 10 C7 1F 31 15 DF 13 A0 10 CA 1F 31 15 E3 13 A7 10 D0 1F 31 15 E6 13 AC 10 D3 1F 31 15 E8 13 AE 10 D6 1F 30 15 E8 13 B0 10 D8 1F 31 15 EA 13 AE 10 DA 1F 30 15 E8 13 A9 10 D8 1F 2F 15 E5 13 A7 10 D7 1F 2F 15 E4 13 52 00 30 99 7F B3 B9 00 00 B2 31 8E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 AB 10 D9 1F 31 15 E7 13 A8 10 D7 1F 30 15 E5 13 A3 10 D6 1F 2F 15 E2 13 A2 10 D7 1F 2F 15 E2 13 A5 10 D8 1F 2E 15 E2 13 A7 10 DB 1F 2F 15 E4 13 A4 10 DB 1F 2F 15 E2 13 A4 10 DA 1F 2D 15 E1 13 A7 10 D9 1F 2D 15 E2 13 A7 10 D8 1F 2C 15 E1 13 AC 10 DB 1F 2F 15 E6 13 AF 10 DF 1F 31 15 E9 13 00 00 00 00 00 00 00 00 00 00
Coding Example for GMS Satellite
The GMS satellite system requires that DCP data transmission use a long preamble, recommends that the length of time for data block be at least 63 seconds, and that transmitted data conform to a specified character set. A base-44 coding algorithm was developed for converting binary data to the GMS character set. The coded data format follows:
HEADER 21 BYTES |
||||
Field |
Length (bit) |
Length (word) |
Position |
Frame |
Time Day of the year |
12 Bits |
3/4 word |
0 word - 0.75 |
|
Minute of the day |
12 Bits |
3/4 word |
0.75 word - 1.5 |
|
Offset for C1 |
8 Bits |
1/2 word |
1.5 word - 2.0 |
|
Offset for C2 |
8 Bits |
1/2 word |
2.0 word - 2.5 |
|
Offset for C3 |
8 Bits |
1/2 word |
2.5 word - 3.0 |
|
Offset for C4 |
8 Bits |
1/2 word |
3.0 word - 3.5 |
|
Flag #1 & #2 |
16 Bits |
1 word |
3.5 word - 4.5 |
|
Station colatitude |
12 Bits |
3/4 word |
4.5 word - 5.25 |
|
Station longitude |
12 Bits |
3/4 word |
5.25 word - 6.0 |
-18 byte |
(CR-CR-LF)-21 byte |
||||
FREE SPACE 27 BYTES CODED |
||||
Field |
Length (bit) |
Length (word) |
Position |
Frame |
D1 Indices and Basline control |
8 Bits |
1/2 word |
6.0 word - 6.5 |
|
… |
||||
D18 Indices and Basline control |
8 Bits |
1/2 word |
15.5 word - 15.0 |
-48 byte |
(CR-CR-LF)-51 byte |
||||
MINUTE VALUES 157 BYTES CODED |
||||
Field |
Length (bit) |
Length (word) |
Position |
Frame |
C1 for t+0 minute |
16 Bits |
1 word |
15.0 word - 16.0 |
-54 byte |
C2 for t+0 minute |
16 Bits |
1 word |
16.0 word - 17.0 |
-57 byte |
C3 for t+0 minute |
16 Bits |
1 word |
17.0 word - 18.0 |
-60 byte |
C4 for t+0 minute |
16 Bits |
1 word |
18.0 word - 19.0 |
-63 byte |
… |
||||
C4 for t+4 minute |
16 Bits |
1 word |
34.0 word - 35.0 |
-111 byte |
(CR-CR-LF)-114 byte |
||||
C1 for t+5 minute |
16 Bits |
1 word |
35.0 word - 36.0 |
-117 byte |
… |
||||
C4 for t+9 minute |
16 Bits |
1 word |
54.0 word - 55.0 |
-174 byte |
(CR-CR-LF)-177 byte |
||||
C1 for t+10 minute |
16 Bits |
1 word |
55.0 word - 56.0 |
-180 byte |
… |
||||
C1 for t+11 minute |
16 Bits |
1 word |
59.0 word - 60.0 |
-192 byte |
C2 for t+11 minute |
16 Bits |
1 word |
60.0 word - 61.0 |
-195 byte |
C3 for t+11 minute |
16 Bits |
1 word |
61.0 word - 62.0 |
-198 byte |
C4 for t+11 minute |
16 Bits |
1 word |
62.0 word - 63.0 |
-201 byte |
CRC |
16 Bits |
1 word |
63.0 word - 64.0 |
-204 byte |
(CR-CR-LF)-208 byte |
Time Framing for GMS
A multiple data transmission (12-minute data block repeated 3 times) may be used to satisfy the GMS minimum block transmission time of approximately 63 seconds. The time framing for GMS would be:
no-signal carrier 5.0 second : 5.0 sec
bit synchronization 2.5 : 7.5
word synchronization 0.15 : 7.65
address 0.31 : 7.96
first (64*3+16-1)*8/100 16.56 :24.52 (177 bytes)
second (64*3+16-1)*8/100 16.56 :41.08 (177 bytes)
last (64*3+16)*8/100 16.64 :57.72 (178 bytes)
EOT-EOT-EOT 0.24 :57.96
The following table shows time slots assigned to DCPs. Each table line represents 60 seconds, the station ID is placed at the beginning of a data transmission block, ‘….’ is for the no-signal (carrier only) period, ‘- -’ is for synchronization sequence, and ‘==’ is for the data block.
Assigned time slots for the GMS coding would allow 58 seconds per transmission and 7 seconds guard time. This would allow 11 observatories to transmit every 12 minutes.
min sec0....*....1....*....2....*....3....*....4....*....5....*....
12*(n) .....--M01================================================__
+01 _____.....--M02=============================================
+02 ===_______.....--M03========================================
+03 ========_______.....--M04===================================
+04 =============_______.....--M05==============================
+05 ==================_______.....--M06=========================
+06 =======================_______.....--M07====================
+07 ============================_______.....--M08===============
+08 =================================_______.....--M09==========
+09 ======================================_______.....--M10=====
+10 ===========================================_______.....--M11
+11 ================================================____________
12(n+1).....--M01================================================__
Base-44 Coding for GMS
The characters used on the GMS system are: LF CR SP ‘ ( ) + , - . / 0 1 2 3 4 5 6 7 8 9 : = ? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z (TOTAL 50). The base-44 character set is shown in the table below.
Each IMFV2.83 data block is encoded by dividing the data block into 16-bit integers. Signed integers are represented by 2’s complement. Each integer value is converted to 3 base-44 numbers, <n1,-n2,n3>, the most significant being n1 and the least significant n3. Each base-44 number may be represented by a base-44 character from Table 1. Example conversions are shown below:
decimal base-44 base-44
number number char
0 < 0, 0, 0> 000
1 < 0, 0, 1> 001
43 < 0, 0,43> 00?
44 < 0, 1, 0> 010
32767 <16,40,31> G-V
-1 <43,43,43> ???
-44 <43,43, 0> ??0
-1935 <43, 0, 1> ?01
-32768 <27, 3,12> R3C
DIGIT |
BASE-44 |
DIGIT |
BASE-44 |
---|---|---|---|
0 |
0 |
22 |
M |
1 |
1 |
23 |
N |
2 |
2 |
24 |
O |
3 |
3 |
25 |
P |
4 |
4 |
26 |
Q |
5 |
5 |
27 |
R |
6 |
6 |
28 |
S |
7 |
7 |
29 |
T |
8 |
8 |
30 |
U |
9 |
9 |
31 |
V |
10 |
A |
32 |
W |
11 |
B |
33 |
X |
12 |
C |
34 |
Y |
13 |
D |
35 |
Z |
14 |
E |
36 |
( |
15 |
F |
37 |
) |
16 |
G |
38 |
+ |
17 |
H |
39 |
, (comma) |
18 |
I |
40 |
- (hyphen) |
INTERMAGNET Gin Dissemination Format for Minute Values : IMFV
IMFV1.23
Magnetic data, with tenth-nanotesla resolution, are organized on a day file basis. One file contains 24 one-hour blocks, each containing 60 minutes worth of values. Blocks of 60 minutes of data are transmitted. Blocks are padded with 9’s if incomplete. Information is coded in ASCII.
File name: To remain compatible with all operating systems, the file name is limited to 8 characters and will contain the date and the three-letter code as an extension. eg: MAR1591.BOU for Boulder, March 15, 1991; and JUN2391.OTT for June 23, 1991 at Ottawa.
Description of the Header Block (64 characters including CrLf)
IDC_DDDDDDD_DOY_HH_COMP_T_GIN_COLALONG_DECBAS_RRRRRRRRRRRRRRRRCrLf
Field |
Description |
IDC |
Indicates the IAGA three letter observatory identification (ID) code eg: BOU for Boulder, OTT for Ottawa, LER for Lerwick, etc. |
DDDDDDD |
Indicates the date, eg: FEB1591 for February 15, 1991. |
DOY |
Indicates day of the year (1-366) |
HH |
Indicates the Hour (0-23). The first line following the header will contain the values corresponding to minute 0 and 1 of this hour. The first value of the day file is hour 0 minute 0. |
COMP |
Order in which the components are listed, can be HDZF, HDZG, XYZF, XYZG. G represents the difference between a measured ‘Scalar’ F and a computed ‘vector’ F: G = F(vector) - F(scalar). All components excluding D must be in tenths of nT. D must be in hundredths of minutes, east. The F or G component should be included only if it is measured from a scalar instrument independent of the other 3 components otherwise it must be filled with 999999. |
T |
One-letter code for data type. R=Reported, A=Adjusted, Q=Quasi-definitive, D=Definitive data. Reported data are defined as: the raw data obtained from the IMO, either by satellite, computer link, or other means. It will be formatted in either version IMFV2.8N (binary) or IMFV1.2N (ASCII,) without any RM (Reference Measurements), or other modifications applied to it. Adjusted data are defined as: the Reported data with RM, spike removal, timeshifts, and/or other modifications applied to it. It is emphasized that only one (1) adjusted version of the data would be allowed, to be completed within 7 days of receipt of the Reported data to prevent the proliferation of multiple versions of the Adjusted data. Quasi-definitive data are defined as data that have been corrected using provisional baselines. Produced soon after their acquisition, their accuracy is intended to be very close to that of an observatory’s definitive data product. 98% of the differences between quasi-definitive and definitive data (X, Y, Z) monthly mean values should be less than 5nT. Definitive data are defined as the final adopted data values. Definitive data will only be distributed by the institution responsible for the observatory. |
GIN |
Three-letter code for GIN responsible for processing the station (IMO) data eg: EDI(Edinburgh), GOL(Golden), OTT(Ottawa), PAR(Paris). |
COLALONG |
Colatitude and east longitude of the observatory in tenths of degrees, to WGS-84 datum. |
DECBAS |
Baseline declination value in tenths of minutes East (0-216,000). Declination baseline values to be provided annually. If components are X,Y,Z then DECBAS=000000. The DECBAS value is used to allow declination data to exceed 166.66 degrees (which is the limit of the declination elements in each data record without any offset). If the declination is > 166 degrees at an observatory then a DECBAS value should be selected such that the minute samples lie between 0 and 166 degrees. The declination baseline DECBAS should be subtracted from the minute data samples before coding them. |
RRR..RRR |
Reserved 16 bytes of R-characters for future use. |
_ |
Indicates a space character. |
CrLf |
Indicates a Carriage return, Line feed. |
Missing values for a vector component must be coded as a space (for the sign bit) followed by six 9 digits: _999999.
Missing values for the scalar component must be coded as six 9 digits: 999999
Description of Data Space (64 characters per line including CrLf)
Component values are coded as signed integers, right-justified with a field width of 7. Total field (F) values are coded as unsigned integers, right-justified with a field width of 6. The field widths must be maintained, either through zero-filling or space-filling. The ‘+’ sign for positive values is optional.
Two (2) minutes of data are concatenated on the same line
AAAAAAA_BBBBBBB_CCCCCCC_FFFFFF__AAAAAAA_BBBBBBB_CCCCCCC_FFFFFFCrLf
(values for minute 0) (values for minute 1)
. .
. .
. .
AAAAAAA_BBBBBBB_CCCCCCC_FFFFFF__AAAAAAA_BBBBBBB_CCCCCCC_FFFFFFCrLf
(values for minute 58) (values for minute 59)
Field |
Description |
---|---|
AAAAAAA |
Indicates Component 1 data field (H,X, etc.). |
BBBBBBB |
Indicates Component 2 data field (D,Y, etc.). |
CCCCCCC |
Indicates Component 3 data field (Z,I, etc.). |
FFFFFF |
Indicates Total Field data field. |
_ |
Indicates space character. |
CrLf |
Indicates Carriage Return and Line Feed. |
Sample of missing values
_999999__999999__999999_999999___999999__999999__999999_999999CrLf
This example represents all components as missing for the first two minutes of the hour.
“_” indicates a space character.
IMFV1.22
Magnetic data, with tenth-nanotesla resolution, are organized on a day file basis. One file contains 24 one-hour blocks, each containing 60 minutes worth of values. Blocks of 60 minutes of data are transmitted. Blocks are padded with 9’s if incomplete. Information is coded in ASCII.
File name: To remain compatible with all operating systems, the file name is limited to 8 characters and will contain the date and the three-letter code as an extension. eg: MAR1591.BOU for Boulder, March 15, 1991; and JUN2391.OTT for June 23, 1991 at Ottawa.
Description of the Header Block (64 characters including CrLf)
IDC_DDDDDDD_DOY_HH_COMP_T_GIN_COLALONG_DECBAS_RRRRRRRRRRRRRRRRCrLf
Field |
Description |
---|---|
IDC |
Indicates the IAGA three letter observatory identification (ID) code eg: BOU for Boulder, OTT for Ottawa, LER for Lerwick, etc. |
DDDDDDD |
Indicates the date, eg: FEB1591 for February 15, 1991. |
DOY |
Indicates day of the year (1-366) |
HH |
Indicates the Hour (0-23). The first line following the header will contain the values corresponding to minute 0 and 1 of this hour. The first value of the day file is hour 0 minute 0. |
COMP |
Order in which the components are listed, can be HDZF, XYZF. All components excluding D must be in tenths of nT. D must be in hundredths of minutes, east. The F component should be included only if it is measured from a scalar instrument independent of the other 3 components otherwise it must be filled with 999999. |
T |
One-letter code for data type. R=Reported, A=Adjusted, D=Definitive data. Reported data are defined as: the raw data obtained from the IMO, either by satellite, computer link, or other means. It will be formatted in either version IMFV2.8N (binary) or IMFV1.2N (ASCII,) without any RM (Reference Measurements), or other modifications applied to it. Adjusted data are defined as: the Reported data with RM, spike removal, timeshifts, and/or other modifications applied to it. It is emphasized that only one (1) adjusted version of the data would be allowed, to be completed within 7 days of receipt of the Reported data to prevent the proliferation of multiple versions of the Adjusted data. Definitive data are defined as the final adopted data values. Definitive data will only be distributed by the institution responsible for the observatory. |
GIN |
Three-letter code for GIN responsible for processing the station (IMO) data eg: EDI(Edinburgh), GOL(Golden), OTT(Ottawa), PAR(Paris). |
COLALONG |
Colatitude and east longitude of the observatory in tenths of degrees, to WGS-84 datum. |
DECBAS |
Baseline declination value in tenths of minutes East (0-216,000). Declination baseline values to be provided annually. If components are X,Y,Z then DECBAS=000000. |
RRR..RRR |
Reserved 16 bytes of R-characters for future use. |
_ |
Indicates a space character. |
CrLf |
Indicates a Carriage return, Line feed. |
Missing values for a vector component must be coded as a space (for the sign bit) followed by six 9 digits: _999999.
Missing values for the scalar component must be coded as six 9 digits: 999999
Description of Data Space (64 characters per line including CrLf)
Component values are coded as signed integers, right-justified with a field width of 7. Total field (F) values are coded as unsigned integers, right-justified with a field width of 6. The field widths must be maintained, either through zero-filling or space-filling. The ‘+’ sign for positive values is optional.
Two (2) minutes of data are concatenated on the same line
AAAAAAA_BBBBBBB_CCCCCCC_FFFFFF__AAAAAAA_BBBBBBB_CCCCCCC_FFFFFFCrLf
(values for minute 0) (values for minute 1)
. .
. .
. .
AAAAAAA_BBBBBBB_CCCCCCC_FFFFFF__AAAAAAA_BBBBBBB_CCCCCCC_FFFFFFCrLf
(values for minute 58) (values for minute 59)
Field |
Description |
---|---|
AAAAAAA |
Indicates Component 1 data field (H,X, etc.). |
BBBBBBB |
Indicates Component 2 data field (D,Y, etc.). |
CCCCCCC |
Indicates Component 3 data field (Z,I, etc.). |
FFFFFF |
Indicates Total Field data field. |
_ |
Indicates space character. |
CrLf |
Indicates Carriage Return and Line Feed. |
Sample of missing values
_999999__999999__999999_999999___999999__999999__999999_999999CrLf
This example represents all components as missing for the first two minutes of the hour.
“_” indicates a space character.
INTERMAGNET Baseline Format : IBF
IBFV2.00 (2009 and after)
This file format is to be used to provide baselines for use in examining equipment and environmental quality (mainly thermal stability of the variometers). This format makes room for all published components, including a baseline to scalar data. After a one-line header, the first section contains the observed baseline values on the days when they are measured. Consequently the number of entries will depend upon the schedule for absolute measurements at the observatory. The second section contains adopted baseline values, representing each day of the year. The third section for comments is mandatory. This comment section must include a brief description of the baseline adoption method.
COMP_HHHHH_FFFFF_IDC_YEARCrLf
DDD_aaaaaa.aa_bbbbbb.bb_zzzzzz.zz_ssssss.ssCrLf
. . .
. . .
. . .
DDD_aaaaaa.aa_bbbbbb.bb_zzzzzz.zz_ssssss.ssCrLf
*CrLf
001_AAAAAA.AA_BBBBBB.BB_ZZZZZZ.ZZ_SSSSSS.SS_DDDD.DD_mCrLf
002_AAAAAA.AA_BBBBBB.BB_ZZZZZZ.ZZ_SSSSSS.SS_DDDD.DD_mCrLf
003_AAAAAA.AA_BBBBBB.BB_ZZZZZZ.ZZ_SSSSSS.SS_DDDD.DD_mCrLf
. . .
. . .
. . .
366_AAAAAA.AA_BBBBBB.BB_ZZZZZZ.ZZ_SSSSSS.SS_DDDD.DD_mCrLf
*CrLf
Comments:CrLf
.....................................................CrLf
.....................................................CrLf
Component values are coded as signed float numbers, right justified with format (1X,F9.2). DeltaF values (denoted as DDDD.DD) are coded as signed float numbers, right justified with format (1X,F7.2). The field widths must be maintained, either through zero-filling or space-filling in order to have records of fixed length: every line is 43 characters long in section one, and 53 characters long in section two excluding terminator CrLf or Lf. Comment lines should not exceed 53 characters long.
Field |
Description |
---|---|
COMP |
Order of components XYZF, DIF_, HDZF, UVZF (see Note 1). |
HHHHH |
Annual mean value of H component in nT. |
FFFFF |
Annual mean value of F component in nT. |
IDC |
Official IAGA three-letter station code in capital letters. |
YEAR |
4-digit Year: eg, 2009. |
DDD |
Day of the year. |
aaaaaa.aa |
Observed baseline of X, D, H or U in nT or minutes (absolute - variometer) |
bbbbbb.bb |
Observed baseline of Y, I, D or V in nT or minutes (absolute - variometer) |
zzzzzz.zz |
Observed baseline of Z or F in nT (absolute - variometer) |
ssssss.ss |
Observed baseline of Scalar F in nT (absolute - scalar, See Note 5) |
AAAAAA.AA |
Adopted baseline value of X, D, H or U in nT or minutes. |
BBBBBB.BB |
Adopted baseline value of Y, I, D or V in nT or minutes. |
ZZZZZZ.ZZ |
Adopted baseline value of Z, or F in nT. |
SSSSSS.SS |
Adopted baseline value of Scalar F in nT. (absolute - scalar, See Note 5) |
DDDD.DD |
Representative value of Delta F for this day (see Note 2). |
m |
Discontinuity marker (valid values c or d - see Note 3). |
* |
Section separator. |
_ |
Space character. |
CrLf |
Indicates Carriage Return and Line Feed. |
File name convention is IAGYEAR.BLV e.g. BFE2008.BLV where:
IAG = 3-letter observatory IAGA code
YEAR = 4-digit year
Note
The codes XYZF, DIF_, HDZF, UVZF are the only supported codes of the components which must be listed in specified order within sections one and two.
Delta F is defined as:
Delta F = F(v) - F(s).
Where F(v) represents the total field value calculated from the main observatory instrument (‘vector F’) and F(s) represents the total field from an independent instrument (‘scalar F’). Both F(v) and F(s) must be corrected to the location in the observatory where geomagnetic absolute observations are made.
Discontinuity marker: c indicates that the baselines for all components form a continuous series with the previous day, d indicates a discontinuity in the baseline of one or more components (i.e. step) between the current day and the preceding one. This is to allow the baselines to be plotted at an appropriate scale. A discontinuity is defined as a known operational change such as an instrument re-alignment.
Missing values must be replaced by 99999.00 for D, H, X, Y, Z, F and by 999.00 for Delta F. Components that are not observed, which may include Scalar F (SSSSSS.SS) and Delta F (DDDD.DD), must be coded 88888.00 and 888.00 respectively.
The observed and adopted F baselines represent the DIFFERENCE in the F component between the absolute position and the continuously recording scalar instrument. Pier corrections are not applied to the data before computing the baselines.
IBFV1.20 (2008 and before)
This format is to be used to provide baselines for use in examining equipment performance and for inclusion on the INTERMAGNET DVD. The first section contains the observed baseline values on those days on which they were measured. Consequently the number of entries will depend upon the schedule for absolute measurements at that observatory. The second section contains adopted baseline values representing each day of the year. A comment section is also provided.
COMP_HHHHH_IDC_YEARCrLf
DDD_AAAAAAA_BBBBBBB_ZZZZZZZ CrLf.
. . . . .
. . . . .
. . . . .
DDD_AAAAAAA_BBBBBBB_ZZZZZZZ CrLf.
*
001_AAAAAAA_BBBBBBB_ZZZZZZZ_FFFFF CrLf.
002_AAAAAAA_BBBBBBB_ZZZZZZZ_FFFFF CrLf.
003_AAAAAAA_BBBBBBB_ZZZZZZZ_FFFFF CrLf.
...
366_AAAAAAA_BBBBBBB_ZZZZZZZ_FFFFF CrLf.
*
Comments:
Component values are coded as signed integers, right-justified with a field width of 7. Total field (Delta F) values are coded as signed integers, right-justified with a field width of 5. The field widths must be maintained, either through zero-filling or space-filling. The ‘+’ sign for positive values is optional.
Field |
Description |
---|---|
COMP |
Order of components HDZF, XYZF, DIF, UVZF |
HHHHH |
Annual mean value of H component in nT. |
IDC |
IAGA three-letter observatory ID code eg: BOU for Boulder, OTT for Ottawa, LER for Lerwick, etc. |
YEAR |
4-digit Year: for example, 1991. |
DDD |
Day of the year. |
AAAAAAA |
Signed value of H, D, U or X in 0.1 nT |
BBBBBBB |
Signed value of D, I, V or Y in 0.1 nT or 0.1 min of arc for D |
ZZZZZZZ |
Signed value of Z or F in 0.1 nT |
FFFFF |
Signed value of Delta F, the difference between calculated and observed value of F (by a proton magnetometer) in 0.1 nT |
* |
Section separator. |
_ |
Space character. |
CrLf |
Indicates Carriage Return and Line Feed. |
Missing values must be replaced by 999999 for D, H, X, Y, Z and by 9999 for F.
File name convention is IAGYR.BLV where:
IAG = 3-letter observatory IAGA code
YR = 2-digit year
IAGA2002 INTERMAGNET Exchange Format (Spreadsheet compatible)
This ASCII Exchange Format, adopted in August 2001 and revised in December 2001, July 2003 and in August 2011, is intended as a data exchange format for geomagnetic data (samples and means) from observatories and variometer stations at time intervals from millisecond up to and including monthly means. The format comprises:
Twelve (12) mandatory file header records.
Unlimited optional comment records.
One (1) mandatory data header record.
A series of data records.
Every record is 70 characters long plus the machine-dependent carriage return/line feed.
Pad records with spaces if needed. Data records report exactly 4 magnetic field elements (DHIF, DHZF, XYZF, or DHIG, DHZG, XYZG where G = DF).
Use missing data values (8’s or 9’s) if fewer than 4 elements are available.
The 12 Mandatory File Header Records
Mandatory header and optional comment records begin with a space character in column 1 and end with the vertical bar | (ASCII 124) in column 70. Content labels begin in column 2 and descriptions begin in column 25.
This format is designated IAGA-2002.
Source of Data is the name of the institute responsible for collecting the data.
Please spell the entire station name; do not use abbreviations. Capitalize the first letter.
The IAGA Code is the official IAGA 3-letter station code. It should be in capital letters and correspond to the IAGA list of magnetic observatories.
Location of the station is reported to the one thousandth degree in geodetic latitude (positive north) from -90 to 90 degrees and in geodetic longitude (positive east) -180 to 180 or 0 to 360 degrees. Geographic location is reported using WGS-84 datum
Report elevation in meters above mean sea level.
Reported refers to the magnetic field elements contained in the data record, in the order recorded in data record. Valid values are DHIF, DHZF, and XYZF (or DHIG, DHZG,and XYZG where G = DF). Use E/V instead of D/I for declination/inclination given in intensity units (ONLY if data type is variation).
Sensor Orientation is the physical orientation of the observing instruments, i.e. XYZF, HDZ.
Digital Sampling is the rate (in seconds) of the data sampling of the magnetic field sensor (instrument) or the digitizing interval for analogue data.
Data interval type is the mean or instantaneous time interval of the data. Common values include 1-minute (00:30-01:29), 1-minute (00:00-00:59), 1-hour (00-59), 1-day (00-23) and 1-month (01-31); the last day could also be 30, 29, or 28. There are many possible intervals, including a fraction of a second (instant value), averages by 1-second (501-1500), 1- second (0-1000), 10 second, or 2.5 minute. Define the type of mean and how values are centered in the comment section.
Data type is provisional (P), definitive(D), quasi-definitive (Q), or variation (V).
Publication date (optional) is the date when the data is published. This was added in June 2015. The inclusion of this line is (#13) optional but desirable for the modern data. The old data files cannot be modified (e.g. Publication date 2014-10-20).
The Optional Comment Header Records
Use these records to record important information concerning the data that is not contained in the defined fields. Types of information may include the type of means and how the mean values are centered, important gaps in the data record, or explanations of missing values (9 filled element field).
Every record begins with a space character in column 1 and # (hash or number sign) in column 2.
The end of each record is indicated with a vertical bar | (ASCII 124) in column 70.
For transmission of incomplete day files include two additional optional comment headers stating the start time and duration in seconds. These records must have the form:
Start Time hh:mm:ss
Duration-in-seconds sssss
If the data file contains absolute values (Data Type provisional or definitive), include the formula for computing the missing (non-reported) magnetic elements. For example, if an observatory reports XYZF, the comments should contain the formula for computing HDI (see sample data header and data record for 1-minute values).
If the data file contains variometer values without considering base line values (Data Type variation), formula and constants are to be given to convert the recorded magnetic elements into others or to convert angular units into nT or vice versa. The possible conversions are:
E = D * Ha * arc(1’)
V = I * Fa * arc(1’)
X = H * cos(Da) – E* sin(Da)
Y = H * sin(Da) + E* cos(Da)
Z = F * sin(Ia) + V * cos(Ia)
F = Z * sin(Ia) + H * cos(Ia)
H = X * cos(Da) + Y * sin(Da) = F * cos(Ia) – V * sin(Ia)
E = Y * cos(Da) – X * sin(Da)
V = Z * cos(Ia) – H * sin(Ia)
X, Y, Z, H, F, E, V in nT; D, I in minutes of arc
arc(1’) = 2.9089E-04 = 0.00029089
Ha, Fa, Da, Ia : approximate values of H, F, D, I (eg the most recent annual mean value or a value from the IGRF)
The formula and constants are to be given in additional optional comment header lines (see sample data header and data record for 1-second values).
The Mandatory Data Header Record
The mandatory data-header record contains column headers useful for multi-station analysis. Elements, both type and order, are indicated in the file-header field Reported.
The date and time headers are DATE, TIME, and DOY (day of year).
The magnetic element headers comprise 4 letters: 3 letters for the observatory IAGA code and 1 letter for the magnetic element reported. Valid values are H, D (or E), I (or V), X, Y, Z, F (or G). The column headers are space delimited.
The end of each record is indicated with a vertical bar | (ASCII 124) in column 70.
The Data Records
The data records contain the date, time, and magnetic field elements reported. Report data to the least significant digit. Indicate missing data with 99999 to the corresponding accuracy for a given component(e.g., 99999.00). If an element is not observed, please record (to the corresponding accuracy for a given component) 88888 in that field. The format for field elements is 4(1X, F9.2). Each record is exactly 70 characters long plus the machine dependent carriage return / line feed.
DATE is the calendar date in ISO YYYY-MM-DD format (4-digit year, month as 01-12, day as 01-31).
TIME is in ISO hh:mm:ss.sss format (hour as 0-24, minute as 0-59, second as 0-59 Note: if the hour is 24, the minute and second must be 0). Values beyond the time interval of the means being reported must be zero-filled. i.e. 14:01:00.000 for 1 minute data for the 14th hour, first minute. Describe the method of average, i.e., centered to the hour for hourly means, in the comments area.
DOY is the day of the year, from 1 - 365 (or 366 for leap years).
D and I are reported in angular units of minutes of arc to the precision of the instruments. F, H, X, Y, Z, E, G, and V are reported in nanotesla and a fraction of nT.
Recommended File Name Procedure
To improve the ease with which data are exchanged and recognized, IAGA recommends the following guidelines and style for naming files containing magnetic observatory data. The recommendations closely follow the current International Standards Organization (ISO) Level II recommendations, and are fully compliant with both the Joliette extension to Level II and to the proposed modifications for the ISO standard. These recommendations are for data exchange and do not necessarily apply to data archive. Some changes have been made in this section in July 2003 to allow for existence of multiple fragments of data starting at different times (which is a possibility for some data transmission systems) and to ease usage with compression programs.
File names are composed of two parts, the base name and a three-character extension. A full stop (period) separates the base from the extension. The base name may be up to 27 characters long. The extension is exactly three characters (total file name length not to exceed 31 characters). This format is sometimes referred to as the “27.3” format. BASENAME (1 to 27 characters) “.” EXTENSION (3 characters). Ex. my_file_name.dat
File names are composed of lower case a-z, 0-9, underscore “_”, and dash “-” characters. No spaces, unusual characters (i.e. *, /, \, :, ;, ?) or upper case characters allowed.
File names must begin with the IAGA 3-Letter Code, Date, and Type of data. The Extension defines the Data Interval (monthly, daily, hourly, minute, or second data). The Extension is duplicated in the last three characters of the base name, so that if the Extension is stripped on compression the Data Interval is not lost. The file name only indicates the general data interval, specific information is contained in the file header Data Interval field (i.e. 2.5 and 1-minute averages are both “minute” data, 10 second averages and 1 second instantaneous are both “second” data).
The first several characters in the base name are strictly defined. Files may be further defined with the remaining characters by using an underscore “_” to separate the standard name. For example, naq20020101d.min and naq20020101d_2-5.min are both acceptable names for 2.5 minute definitive data from Narsarsuaq.
General format: iagyyyymmddtint.int
Where:
iag = IAGA 3-letter observatory code
yyyy = four digit year (i.e. 2002)
mm = two digit month (i.e. 01 for January, 12 for December)
dd = two digit day of month (01-31)
t = type of data (p - provisional, d - definitive, q - quasi-definitive v - variation)
int = data interval (mon - monthly, day - daily, hor - hourly, min - minute, sec - second)
Comment |
Data Interval |
Files |
File name pattern |
Example name |
---|---|---|---|---|
1 |
Monthly |
Year |
iagyyyytint.int |
naq2002dmon.mon |
2 |
Daily |
Year |
iagyyyytint.int |
naq2002dday.day |
3 |
Hourly |
Month |
iagyyyymmtint.int |
naq200201phor.hor |
4 |
Minute |
Day |
iagyyyymmddtint.int |
naq20020101pmin.min |
5 |
Second |
Day |
iagyyyymmddtint.int |
naq20020211vsec.sec |
File contains 1 year of definitive monthly data for 2002 from Narsarsuaq.
File contains 1 year of definitive daily data for 2002 from Narsarsuaq.
File contains 1 month of provisional hourly data for January 2002 from Narsarsuaq.
File contains 1 day of provisional minute data for 1 January 2002 from Narsarsuaq.
File contains 1 day of variation second data for 11 February 2002 from Narsarsuaq.
Additional format to handle multiple fragments of data starting at different times:
iagyyyymmddhhMMsstint.int
Where:
iag = IAGA 3-letter observatory code
yyyy = four digit year (i.e. 2002)
mm = two digit month (i.e. 01 for January, 12 for December)
dd = two digit day of month (01-31)
hh = hour at which data starts (00-23)
MM = minute at which data starts (00-59)
ss = second at which data starts (00-59)
t = type of data (p - provisional, d - definitive, v - variation)
int = data interval (mon - monthly, day - daily, hor - hourly, min - minute, sec - second)
Comment |
Data Interval |
Files |
File name pattern |
Example name |
1 |
Minute |
Part-day |
iagyyyymmddhhMMtint.int |
clf200306121320vmin.min |
2 |
Second |
Part-day |
iagyyyymmddhhMMsstint.int |
clf20030612132000vsec.sec |
File contains part-day of 1-minute variation data from CLF for 12 June 2003, starting at 13:20
File contains part-day of 1-second variation data from CLF for 12 June 2003, starting at 13:20:00
Sample of IAGA-2002 Format July 2003 Revision
Sample Data Header and Data Record for 1-minute Values
Format IAGA-2002 |
Source of Data Danish Meteorological Institute |
Station Name Narsarsuaq |
IAGA Code NAQ |
Geodetic Latitude 61.160 |
Geodetic Longitude 314.560 |
Elevation 4 |
Reported XYZF |
Sensor Orientation DIF |
Digital Sampling 0.01 seconds |
Data Interval Type Filtered 1-minute (00:30 - 01:29) |
Data Type Definitive |
# This area is where the data source or distributor can include |
# any additional information needed for proper use of data. For |
# example, the observers name and contact, notes on a change of |
# instrumentation, reasons for missing data values, definition of |
# observed values, geomagnetic location of the observatory, etc. |
# This area should also contain the formula for computing the non- |
# reported elements and components of the INTERMAGNET binary |
# format which do not fit elsewhere. These include: |
# D-conversion: |
# = H/3438*10000. |
# which is word 8 in the INTERMAGNET binary format and is used |
# to convert variations of D in minutes of arc <-> nT. Please |
# note that all of the header records and comment records begin |
# with a space in column 1, end with a | (ASCII 124), and are |
# padded with spaces - never with tabs. |
# H = squareroot(X*X + Y*Y), cos D = X/H, sin I = Z/F |
DATE TIME DOY NAQX NAQY NAQZ NAQF |
2001-03-13 00:00:00.000 072 10800.11 -6100.23 53381.51 54801.12
2001-03-13 00:01:00.000 072 10800.31 -6100.20 53381.51 54801.12
2001-03-13 00:02:00.000 072 10801.11 -6101.23 99999.00 54801.12
2001-03-13 00:03:00.000 072 10803.12 -6100.23 99999.00 54801.12
Sample Data Header and Data Record for Hourly Values
DATE TIME DOY NAQX NAQY NAQZ NAQF |
2001-03-13 00:00:00.000 072 10800.11 -6100.23 53381.51 88888.00
2001-03-13 01:00:00.000 072 10800.31 -6100.20 53381.51 88888.00
2001-03-13 02:00:00.000 072 10801.11 -6101.23 53381.50 88888.00
2001-03-13 03:00:00.000 072 10803.12 -6100.23 99999.00 88888.00
Sample Data Header and Data Record for Monthly Values
DATE TIME DOY NAQX NAQY NAQZ NAQF |
2001-01-15 00:00:00.000 015 10800.11 -6100.23 53381.51 88888.00
2001-02-14 00:00:00.000 045 10800.31 -6100.20 53381.51 88888.00
2001-03-15 00:00:00.000 074 10801.11 -6101.23 53381.50 88888.00
2001-04-15 00:00:00.000 105 10803.12 -6100.23 99999.00 88888.00
Sample Data Header and Data Record for 1-second Values
Format IAGA-2002 |
Source of Data Danish Meteorological Institute |
Station Name Narsarsuaq |
IAGA CODE NAQ |
Geodetic Latitude 61.160 |
Geodetic Longitude 314.560 |
Elevation 4 |
Reported HEZF |
Sensor Orientation HEZF |
Digital Sampling 1 seconds |
Data Interval Type 1-second instantaneous |
Data Type Variation |
# This area should contain additional information needed |
# in order to transform the reported elements. For the data in this |
# sample information about the declination at the observatory is |
# needed in order to tranform the variation data from HEZ to the |
# widely used XYZ orientation. Also information about the value of |
# horizontal field H can be useful to convert E-variations in nT to |
# variations in minutes of arcs. |
# E = D * Ha * 0.00029089 |
# Ha = 17123.45 |
# X = H * cos(Da) B E* sin(Da) |
# Y = H * sin(Da) + E* cos(Da) |
# Da = 312.89 minutes of arc |
DATE TIME DOY NAQH NAQE NAQZ NAQF |
2001-03-13 00:00:00.000 072 800.11 -100.23 381.51 54801.12
2001-03-13 00:00:01.000 072 800.31 -100.20 381.51 54802.32
2001-03-13 00:00:02.000 072 801.11 -101.23 99999.00 54803.22
2001-03-13 00:00:03.000 072 803.12 -100.23 99999.00 54803.43
Sample Data Header and Data Record for 5-Millisecond Values
DATE TIME DOY NAQX NAQY NAQZ NAQF |
2001-03-13 00:00:00.000 072 10800.11 -6100.23 53381.51 99999.00
2001-03-13 00:00:00.005 072 10800.31 -6100.20 53381.51 99999.00
2001-03-13 00:00:00.010 072 10801.11 -6101.23 53381.50 54801.12
2001-03-13 00:00:00.015 072 10803.12 -6100.23 99999.00 54801.12
IMAGCDFV1.2 INTERMAGNET Exchange Format
This document describes how NASA’s Common Data Format ( CDF - http://cdf.gsfc.nasa.gov/ ) will be used to store geomagnetic data. This format is called ImagCDF. Version 1.2 of ImagCDF is described here.
Design Details and CDF Concepts
General Design Details
Geomagnetic data is held in CDF variables, one variable per geomagnetic element. Additional variables hold time stamp data, one time stamp variable being used for the timing of the vector magnetometer data, a second variable for the scalar magnetometer data, since data from these two instruments may be recorded at different sample rates. Each variable has one or more records, an individual record holding a single sample value. The index numbers of the records in the vector geomagnetic variable correspond with the index numbers in the vector time stamp variable’s records, likewise for the scalar data. A typical file might contain 6 variables: 3 geomagnetic elements (such as HDZ or XYZ); one scalar element (F); and two timing variables, one for the vector data, the other for the scalar. The format does not mandate that these variables are present – there may be fewer (for example only scalar data) or more (for example additional temperature data).
Metadata is held in CDF attributes in two ways: global attribute entries concern all the data in a file; variable attributes have entries that concern a single variable (e.g. the ‘H’ variable). An entry holds an individual item of metadata. An attribute name (whether global or variable) must be unique, so when an attribute needs to be used more than once (e.g. the element type for a geomagnetic variable must be used once for each geomagnetic element), then multiple entries are created in a single attribute. Global attributes in ImagCDF will have only one entry (with two exceptions). Variable attributes may have an entry for each of the relevant variables in the file. For variable attributes, the multiple entries are indexed using the variable’s numeric identifier, so that the metadata ‘belongs’ to the variable. For example, in an ImagCDF file holding HDZF data, the attribute Units will have four entries (in this order): “nT”; “Degrees of arc”; “nT”; “nT”.
Data Types Used for Variables and Attributes
Real Numbers
ImagCDF uses double precision CDF_DOUBLE (8-byte) floating point numbers (to the IEEE 754 standard) for all numeric values. These numbers provide about 14.5 (decimal) digits of precision - http://flint.cs.yale.edu/cs422/doc/art-of-asm/pdf/CH14.PDF. In order to use floating point numbers successfully, the dynamic range of the quantity being represented (ratio of smallest to largest value) must be smaller than 14.5 digits. For geomagnetic field strengths, assume that the ratio of smallest difference to largest value that we need to represent in geomagnetic field data is 0.1pT in 80,000nT. This equates to 1 part in 80,000 x 1,000 x 10, or 1 part in 800,000,000, or 9 digits of precision, so is within the dynamic range available.
Dates / Times
All date / time values in ImagCDF are held as CDF TT2000 dates, which are based on 8-byte integers. TT2000 uses an epoch (midday on 1st January 2000) to store dates and times, has a precision of 1 nanosecond which gives a range in excess of ±280 years from the epoch date. The TT2000 type can correctly handle leap seconds.
Strings
Text data is held using CDF_CHAR variables in ImagCDF.
Compression
The CDF library allows the user to specify whether all, part or none of a CDF file is compressed at the time it is written. Once this choice has been made, the CDF library handles compression and decompression of the data in the file automatically (reading and any further writing to the file will decompress or compress as required). Choosing whether or not to compress a file is simply a matter of specifying which (if any) compression method to use when the file is created. ImagCDF allows any of the compressions provided by CDF.
Significant compression is achieved using the CDF compression option. A day file of four element minute data can occupy under 15Kb.
Where to Obtain the CDF Software
Before you can use any of NASA or INTERMAGNET’s tools for working with ImagCDF, you will need to download and install the CDF software from NASA: http://cdf.gsfc.nasa.gov/html/sw_and_docs.html . Software that has been written to work with CDF is likely to need the libraries that are installed. For details of other software that may be useful see section Tools to Look at CDF Data.
ImagCDF Data
All variables holding geomagnetic data have the following features:
Units used must be nT for geomagnetic field values, degrees for angles or celsius for temperatures.
Lengths of time series are arbitrary (e.g. a file may be used to store an entire day of data or a small fragment of a day down to a single sample).
Geomagnetic data is held in variables called GeomagneticField <E> where <E> represents the code for the geomagnetic element recorded - see section Valid Codes for Elements Recorded for a list of valid codes. The variable has 0 dimensions, each consecutive record holding individual consecutive data samples in CDF double data type, starting at record 1. Missing data values are represented by a data sample that contains the same number as is present in the FILLVAL metadata attribute. The FILLVAL must exceed any valid geomagnetic field strength or angle. Typically this would be 99999.0. The variable attribute FIELDNAM must be set to “Geomagnetic Field Element <E>”.
An ImagCDF file must include a set of geomagnetic field variables that describe the vector field in a recognised orientation (such as ‘HDZ’, ‘XYZ’ or ‘DIF). All vector variables must have the same number of records. An ImagCDF file may also include an additional field element from an independent scalar instrument, with an element code of ‘G’ or ‘S’.
Temperature data is optional (unless otherwise stated in the data standard that the data conforms to, for example, temperature is mandatory for data that conforms to the INTERMAGNET 1-second data standard). The first temperature variable is called Temperature1, then Temperature2 and so on. The FIELDNAM attribute describes, in free text, for each temperature variable, the location at which the temperature was recorded.
Time stamps for the data are held in separate variables. Time stamps must represent a regular time series with no missing values in the series. Time stamps for all the geomagnetic field vector variables are held in a single variable called GeomagneticVectorTimes, for the scalar data in a variable called GeomagneticScalarTimes. Time stamps for temperature data are held in variables called Temperature1Times, Temperature2Times and so on. These variables have 0 dimensions and must have the same number of records as the data variables that they apply to. Each record in a time stamp variable holds a CDF TT2000 epoch time. Time stamps must always refer to the start of each sample period (e.g. for minute data, the seconds and milliseconds will always be set to zero).
Recommended names for time stamp variables are:
Situation |
Names |
---|---|
The same time stamps can be used for all data in the file (i.e. there is a single time stamp variable in the file) |
DataTimes |
Different time stamps for vector, scalar and temperature |
GeomagneticVectorTimes, GeomagneticScalarTimes, Temperature1Times, Temperature2Times, … |
Additional variables and metadata may be carried in an ImagCDF (e.g. it may be convenient to include meteorological data in the same file). The format of these variables and metadata is left to the user to define. The CDF system means that these variables can be included without causing problems to software reading ImagCDF files. Software writing ImagCDF files should preserve additional variables and attributes read from an ImagCDF file.
ImagCDF Global Attributes
The following attributes apply to all the data in an ImagCDF file. The “Entries” column shows whether the attribute has:
A single mandatory entry (number of entries is exactly 1)
A single optional entry (number of entries may be 0 or 1)
Multiple mandatory entries (number of entries is between 1 and N1)
Optional mandatory entries (number of entries is between 1 and N2)
Superscript numbers following the attribute name show:
That the attribute is a recommended attribute for use with NASA’s CDF tools
That the attribute is part of the ISTP/IACG guidelines - http://spdf.gsfc.nasa.gov/istp_guide/gattributes.html
Attributes that Describe the Data Format
These are ‘constant’ values that will be the same for all ImagCDF files. They allow ‘generic’ CDF programs to understand and process the data correctly.
Attribute Name |
Type |
Entries |
Description |
---|---|---|---|
FormatDescription |
String |
1 |
Always set to “INTERMAGNET CDF Format” |
FormatVersion |
String |
1 |
Set to the current version of the format – “1.2” |
Title |
String |
1 |
Always set to “Geomagnetic time series data” |
Attributes that Uniquely Identify the Data
The attributes in this section are sufficient, along with the start date and duration of the time series, to uniquely identify a piece of geomagnetic data.
Attribute Name |
Type |
Entries |
Description |
---|---|---|---|
IagaCode |
String |
1 |
The IAGA code for the observatory |
ElementsRecorded |
String |
1 |
A string consisting of single character codes, each describing one of the geomagnetic field elements that is recorded in this data file. This might typically be a three or four digit code such as HDZ, XYZG or DIFG. The codes in this attribute determine the names of the data variables (see the section on geomagnetic data). Valid codes are defined in section Valid Codes for Elements Recorded |
PublicationLevel |
String |
1 |
Choose one of the following codes to describe the level that the data has been processed to:
Only these values are allowed. This field provides a quick description of the point the data has reached in the publication process. For detailed information on the standards that the data conforms to see section Attributes that Relate to Data Standards and Quality |
PublicationDate |
Date/time |
1 |
Date and time on which the data was published. This attribute is used to distinguish multiple publications of the same data. |
Attributes that Describe the Observatory
These attributes are available from other metadata systems (given an IAGA code), but are included for convenience of the user.
Attribute Name |
Type |
Entries |
Description |
---|---|---|---|
ObservatoryName |
String |
1 |
The full name for the observatory |
Latitude |
Double |
1 |
The latitude of the observing position in degrees, to WGS-84 datum |
Longitude |
Double |
1 |
The longitude of the observing position in degrees, to WGS-84 datum |
Elevation |
Double |
1 |
The height of the observing position in metres above sea level, to WGS-84 datum. Set to 99999.0 if not known. |
Institution |
String |
1 or more |
The name of the responsible institute. |
VectorSensOrient |
String |
0 - 1 |
The orientation code of the sensor at the original recording of the vector data. A string consisting of single character codes, each describing one of the geomagnetic field elements that was recorded by the vector instrument. Valid codes are the same as for the ElementsRecorded attribute. |
Attributes that Relate to Data Standards and Quality
These attributes describe the standards, if any, that the data meets.
Attribute Name |
Type |
Entries |
Description |
---|---|---|---|
StandardLevel |
String |
1 |
Describe whether the data conforms to a standard. Choose from one of the following codes:
Only these values are allowed. If StandardsLevel is set to Partial, then the PartialStandDesc attribute must also be set. |
StandardName |
String |
0 - 1 |
The name of the relevant standard. See section Relevant Data Standards |
StandardVersion |
String |
0 – 1 |
If the standard has a version, put its version number in this attribute. |
PartialStandDesc |
String |
0 - 1 |
See section Relevant Data Standards |
Attributes that Relate to Publication of the Data
These attributes are needed when that data is published.
Attribute Name |
Type |
Entries |
Description |
---|---|---|---|
Source |
String |
1 |
Set to one of: “institute” (if the named institution provided the data- see section Attributes that Describe the Observatory for the institution); “INTERMAGNET” (if the data file has been created by INTERMAGNET from another data source); “WDC” (if the World Data Centre has created the file from another data source) |
TermsOfUse |
String |
0 – 1 |
The terms of use for the data. This could be text describing the terms of use or a link to a web page. INTERMAGNET has a recommended wording for data provided through INTERMAGNET. |
UniqueIdentifier |
String |
0 – 1 |
A string that can be used to uniquely identify this data. This could be a Digital object identifier or could be an identifier created according to local rules. Note this is optional and will not be present if this data is not covered by an identifier. |
ParentIdentifiers |
String |
0 or more |
The unique identifiers of the parent data sets (if any), one identifier per entry. The parent data set is the data set from which this data set’s values have been derived. E.g. if a one minute data set has been created from a one second data set, the one second data set is the parent. Another example is where definitive data is created from provisional data. |
ReferenceLinks |
String/URL |
0 or more |
URLs pointing to (e.g.) information about the data creator, information about the data repository… One URL per entry. |
Valid Codes for Elements Recorded
‘X’, ‘Y’, or ‘Z’ indicate that the variable holds the strength of the magnetic field vector in the standard geographic coordinates in nT.
‘H’ indicates that the variable holds the strength of the magnetic field vector in the horizontal plane along the magnetic meridian in nT.
‘D’ indicates that the variable holds the angle between the magnetic vector and true north, in degrees of arc, positive east.
‘E’ indicates that the variable holds a field strength in the horizontal plane perpendicular to ‘H’ in nT. ‘E’ is only valid for data that is not baseline corrected.
‘V’ indicates that the variable holds the field strength along the direction of the inclination.
‘I’ indicates that the variable holds the angle between the magnetic vector and the horizontal plane, in degrees of arc, positive below the horizontal.
‘F’ indicates that the variable holds the geomagnetic field strength in nT, calculated from and consistent with XYZ or HDZ field elements.
‘S’ indicates that the variable holds the geomagnetic field strength in nT, measured by an independent scalar instrument
‘G’ indicates that the variable holds delta- F values, defined as F(vector) –S(scalar) in nT. When calculating values for the G element, if F(vector) is missing, G is set to –S (scalar)
Other codes are allowed, but may lead to data not being understood.
Relevant Data Standards
Different geomagnetic data products have different standards associated with them. This table shows what standards are being referred to in the StandardsLevel attribute and describes what to put into the StandardName attribute in the case where StandardsLevel is set to Partial or Full. The table also shows what to put in the PartialStandDesc attribute in the case where the StandardsLevel attribute is set to Partial.
Data product |
Relevant Standard |
Contents of StandardName |
---|---|---|
One second definitive data |
INTERMAGNET Definitive One-second Data Standard [2] |
INTERMAGNET_1-Second |
One minute definitive data |
INTERMAGNET magnetic observatory – specifications [3] |
INTERMAGNET_1-Minute |
One minute quasi-definitive data |
INTERMAGNET magnetic observatory – specifications [3],modified for baseline accuracy [4] |
INTERMAGNET_1-Minute_QD |
Hourly means |
No relevant standard |
|
Daily means |
No relevant standard |
|
Monthly means |
No relevant standard |
|
Annual means |
No relevant standard |
INTERMAGNET Technical Note 6
Quasi-definitive definition on the INTERMAGNET web site: https://intermagnet.org/faq/04.what-is-quasi.html
If a standard is met in full or not met at all, PartialStandDesc can be omitted. Where a standard is partially met (e.g. the time stamp accuracy is within tolerance, but the data is not baseline corrected), the name of the relevant standard should be put in the StandardName attribute, StandardLevel should be set to Partial and the PartialStandDesc attribute should be filled in with a comma separated list of the sub-sections from the standard that the data meets. E.g. if the data meets the time stamp accuracy and thermal stability sections of the 1-minute data standard, enter IMOM-01,IMOM-16 in PartialStandDesc.
Value to put in PartialStandDesc |
Description |
One-minute Definitive Data: General specifications |
|
IMOM-01 |
Time-stamp accuracy (centered on the UTC minute): 5s |
One-minute Definitive Data: Vector Magnetometer specifications |
|
IMOM-11 |
Absolute Accuracy: ±5nT |
IMOM-12 |
Resolution: 0.1nT |
IMOM-13 |
Dynamic Range: ≥±4000nT High Lat., ≥±3000nT Mid/Equatorial Lat. |
IMOM-14 |
Band pass: D.C. to 0.1Hz |
IMOM-15 |
Minimum sampling rate: 1Hz |
IMOM-16 |
Thermal stability: 0.25nT/°C |
IMOM-17 |
Long term stability: 5nT/year |
IMOM-18 |
Filtering to one-minute data: INTERMAGNET Gaussian |
One-minute Definitive Data: Scalar Magnetometer specifications |
|
IMOM-21 |
Resolution: 0.1nT |
IMOM-22 |
Absolute Accuracy: ±1nT |
IMOM-23 |
Minimum sampling rate: 0.033Hz (30 sec) |
One-second Data: General Specifications |
|
IMOS-01 |
Time-stamp accuracy (centered on the UTC second): 0.01s |
IMOS-02 |
Phase response: Maximum group delay: ±0.01s |
IMOS-03 |
Maximum filter width: 25 seconds |
IMOS-04 |
Instrument amplitude range: ≥±4000nT High Lat., ≥±3000nT Mid/Equatorial Lat. |
IMOS-05 |
Data resolution: 1pT |
IMOS-06 |
Pass band: DC to 0.2Hz |
One-second Data: Specifications in the Pass Band [DC to 8mHz (120s)] |
|
IMOS-11 |
Noise level: ≤100pT RMS |
Maximum offset error (cumulative error between absolute observations): ±2.5 nT |
|
IMOS-13 |
Maximum component scaling plus linearity error: 0.25% |
IMOS-14 |
Maximum component orthogonality error: 2mrad |
IMOS-15 |
Maximum Z-component verticality error: 2mrad |
One-second Data: Specifications in the Pass Band [8mHz (120s) to 0.2Hz] |
|
IMOS-21 |
Noise level: ≤10pT/√Hz at 0.1 Hz |
IMOS-22 |
Maximum gain/attenuation: 3dB |
One-second Data: Specifications in the Stop Band [≥0.5 Hz] |
|
IMOS-31 |
Minimum attenuation in the stop band (≥ 0.5Hz): 50dB |
One-second Data: Auxiliary measurements: |
|
IMOS-41 |
Compulsory full-scale scalar magnetometer measurements with a data resolution of 0.01nT at a minimum sample period of 30 seconds. |
IMOS-42 |
Compulsory vector magnetometer temperature measurements with a resolution of 0.1°C at a minimum sample period of one minute. |
ImagCDF Variable Attributes
The following attributes apply to individual variables - there is an attribute entry for each geomagnetic field element or temperature in an ImagCDF file and the value of that entry applies only to that field element or temperature. The “Entries” column shows whether the attribute is:
Mandatory (number of entries per variable is exactly 1)
Optional (number of entries per variable may be 0 or 1)
None of these attributes are required for the time stamp variables GeomagneticVectorTimes and GeomagneticScalarTimes.
Attribute Name |
Type |
Entries |
Description |
FIELDNAM [5] |
String |
1 |
Set to “Geomagnetic Field Element ” + the element code (e.g. H, D, Z,… - see section Valid Codes for Elements Recorded for a list of valid codes); or set to “Temperature ” + the name of the location where the temperature was recorded. |
UNITS [5] |
String |
1 |
Must be one of “nT”, “Degrees of arc” or “Celsius” |
FILLVAL [5] |
Double |
1 |
The value used to show that a data sample is missing. Set to 99999.0 for compatibility with other formats. The values must either less than VALIDMIN or greater than VALIDMAX. |
VALIDMIN [5] |
Double |
1 |
The smallest allowed numeric value for the data in the corresponding variable. |
VALIDMAX [5] |
Double |
1 |
The largest allowed numeric value for the data in the corresponding variable. |
DEPEND_0 [6] |
String |
0 - 1 |
For geomagnetic data, set this to the name of the variable that holds time stamps for this time series. For records containing time stamps, do not set this variable. |
DISPLAY_TYPE [6] |
String |
1 |
Set to “time_series” |
LABLAXIS [6] |
String |
1 |
Set to the element code (as defined in section Valid Codes for Elements Recorded ) |
The attribute is a recommended attribute for use with NASA’s CDF tools
The attribute is part of the ISTP/IACG guidelines - http://spdf.gsfc.nasa.gov/istp_guide/vattributes.html
ImagCDF File Names
ImagCDF files are named using the convention:
``[iaga-code]_[date-time]_[publication-level].cdf``
Iaga-code is the three letter IAGA code for the observatory that the data is from. This should match the IAGA code in section Attributes that Uniquely Identify the Data.
Date-time is the start date/time of the data in the file. The format for the date/time is described below.
Publication-level is the PublicationLevel attribute from section Attributes that Uniquely Identify the Data.
Filenames are in lower case. Files may contain arbitrary amounts of data, however the amount of data is not coded into the filename.
ISO 8601 Duration Strings for Common Geomagnetic Sample Periods
Sample Period |
ISO 8601 duration string |
---|---|
1 second |
PT1S |
1 minute |
PT1M |
Hourly means |
PT1H |
Daily means |
P1D |
Monthly means |
P1M |
Annual means |
P1Y |
The table above is a set of examples. Other sample periods may be used provided that the sample period used represents the vector data and conforms to ISO 8601.
Format of Date/Time Portion of Filename and Examples
The date/time portion of the filename is formatted differently for different data with different data intervals:
Data Interval |
Date/time format |
Example filename |
---|---|---|
Annual means |
YYYY |
esk_2000_4.cdf – final annual mean data from Eskdalemuir starting in the year 2000 |
Monthly means |
YYYYMM |
ott_201401_4.cdf – final monthly mean data from Ottawa starting in January 2014 |
Daily means |
YYYYMMDD |
gua_20100101_4.cdf – final daily mean data from Guam starting at the beginning of 2010 |
Hourly means |
YYYYMMDD_HH |
naq_20020201_00_4.cdf – final hourly mean data from NAQ in January 2002 |
Minute means |
YYYYMMDD_HHMM |
naq_20020120_0000_3.cdf – ‘bulletin’ or quasi-definitive minute mean data from NAQ for 20th January 2002 starting at midnight |
Second |
YYYYMMDD_HHMMSS |
naq_20020120_012300_1.cdf – raw 1-second data from NAQ for 20th January 2002 starting at 01:23:00 |
YYYY = four digit year (i.e. 2002)
MM = two digit month (01 for January - 12 for December)
DD = two digit day of month (01-31)
HH = two digit hour (0-23)
MM = two digit minute (0-59)
SS = two digit second (0-59)
Tools to Look at CDF Data
Once you have some CDF data you will want to look at it. The CDF toolset (that is installed for you when you install CDF) provides programs to do this. The simplest way is (using a command shell or DOS prompt):
cdfdump [filename] | more
Which will display the entire contents of the file. The example file is formatted using cdfdump. Other tools from the CDF toolset that may be useful include cdfexport and cdfedit.
Autoplot is a useful tool that can plot the time series data in ImagCDF data files. You can download it from http://autoplot.org/.
A number of packages provide access to CDF data. These include Matlab and IDL. A list is maintained on the NASA CDF website: http://cdf.gsfc.nasa.gov/html/FAQ.html#cdfsw
Octave may be able to read CDF data:http://lists.gnu.org/archive/html/help-octave/2007-04/txtyRdYjKU85H.txt. The Wolfram Language can use CDF data via its NASACDF data format - http://reference.wolfram.com/language/guide/NumericalDataFormats.html.
Example Data File
The data in this example was converted from an IAGA-2002 day file of Hartland DIF data for 1st January 1983. The contents of the TermsOfUse attribute have been truncated, as have the data records beyond the first two samples.
File Info
=========================================
CDF File: had_19830101_0000_1.cdf
Version: 3.4.1
Copyright:
Common Data Format (CDF)
(C) Copyright 1990-2012 NASA/GSFC
Space Physics Data Facility
NASA/Goddard Space Flight Center
Greenbelt, Maryland 20771 USA
(Internet -- GSFC-CDF-SUPPORT@LISTS.NASA.GOV)
Format: SINGLE
Encoding: IBMPC
Majority: ROW
NumrVars: 0
NumzVars: 4
NumAttrs: 25 (17 global, 8 variable)
Compression: GZIP.6
Checksum: None
Global Attributes (17 attributes)
=========================================
FormatDescription (1 entry):
0 (CDF_CHAR/22): "INTERMAGNET CDF Format"
FormatVersion (1 entry):
0 (CDF_CHAR/3): "1.0"
Title (1 entry):
0 (CDF_CHAR/28): "Geomagnetic time series data"
IagaCode (1 entry):
0 (CDF_CHAR/3): "HAD"
ElementsRecorded (1 entry):
0 (CDF_CHAR/3): "DIF"
PublicationLevel (1 entry):
0 (CDF_CHAR/1): "1"
PublicationDate (1 entry):
0 (CDF_TT2000/1): 2014-10-08T12:19:06.088000000
ObservatoryName (1 entry):
0 (CDF_CHAR/8): "Hartland"
Latitude (1 entry):
0 (CDF_DOUBLE/1): 50.995
Longitude (1 entry):
0 (CDF_DOUBLE/1): 355.516
Elevation (1 entry):
0 (CDF_DOUBLE/1): 95.0
Institution (1 entry):
0 (CDF_CHAR/31): "British Geological Survey (BGS)"
VectorSensOrient (1 entry):
0 (CDF_CHAR/4): "HDZ"
StandardLevel (1 entry):
0 (CDF_CHAR/4): "None"
Source (1 entry):
0 (CDF_CHAR/11): "INTERMAGNET"
TermsOfUse (1 entry):
0 (CDF_CHAR/1545): "CONDITIONS OF USE FOR DATA PROVIDED..."
References (1 entry):
0 (CDF_CHAR/27): "http://www.intermagnet.org/"
Variable Attributes (8 attributes)
=========================================
FIELDNAM
VALIDMIN
VALIDMAX
UNITS
FILLVAL
DEPEND_0
DISPLAY_TYPE
LABLAXIS
Variable Information (0 rVariable, 4 zVariables)
===========================================================
GeomagneticFieldD CDF_DOUBLE/1 0:[] T/
GeomagneticFieldI CDF_DOUBLE/1 0:[] T/
GeomagneticFieldF CDF_DOUBLE/1 0:[] T/
GeomagneticVectorTimes CDF_TT2000/1 0:[] T/
Variable (4 variables)
=========================================
GeomagneticFieldD
-----------------
Data Type: CDF_DOUBLE
Dimensionality: 0:[] (T/)
Written Records: 1440/1440(max)
Allocated Records: 1472/1472(max)
Blocking Factor: 0 (records)
Attribute Entries:
FIELDNAM (CDF_CHAR/27): "Geomagnetic Field Element D"
VALIDMIN (CDF_DOUBLE/1): -360.0
VALIDMAX (CDF_DOUBLE/1): 360.0
UNITS (CDF_CHAR/14): "Degrees of arc"
FILLVAL (CDF_DOUBLE/1): 99999.0
DEPEND_0 (CDF_CHAR/22): "GeomagneticVectorTimes"
DISPLAY_TYPE (CDF_CHAR/11): "time_series"
LABLAXIS (CDF_CHAR/1): "D"
Variable Data:
Record # 1: -7.315
Record # 2: -7.315
...
GeomagneticFieldI
-----------------
Data Type: CDF_DOUBLE
Dimensionality: 0:[] (T/)
Written Records: 1440/1440(max)
Allocated Records: 1472/1472(max)
Blocking Factor: 0 (records)
Attribute Entries:
FIELDNAM (CDF_CHAR/27): "Geomagnetic Field Element I"
VALIDMIN (CDF_DOUBLE/1): -90.0
VALIDMAX (CDF_DOUBLE/1): 90.0
UNITS (CDF_CHAR/14): "Degrees of arc"
FILLVAL (CDF_DOUBLE/1): 99999.0
DEPEND_0 (CDF_CHAR/22): "GeomagneticVectorTimes"
DISPLAY_TYPE (CDF_CHAR/11): "time_series"
LABLAXIS (CDF_CHAR/1): "I"
Variable Data:
Record # 1: 66.1598
Record # 2: 66.1605
...
GeomagneticFieldF
-----------------
Data Type: CDF_DOUBLE
Dimensionality: 0:[] (T/)
Written Records: 1440/1440(max)
Allocated Records: 1472/1472(max)
Blocking Factor: 0 (records)
Attribute Entries:
FIELDNAM (CDF_CHAR/27): "Geomagnetic Field Element F"
VALIDMIN (CDF_DOUBLE/1): 0.0
VALIDMAX (CDF_DOUBLE/1): 79999.0
UNITS (CDF_CHAR/2): "nT"
FILLVAL (CDF_DOUBLE/1): 99999.0
DEPEND_0 (CDF_CHAR/22): "GeomagneticVectorTimes"
DISPLAY_TYPE (CDF_CHAR/11): "time_series"
LABLAXIS (CDF_CHAR/1): "F"
Variable Data:
Record # 1: 47881.4
Record # 2: 47880.1
...
GeomagneticVectorTimes
----------------------
Data Type: CDF_TT2000
Dimensionality: 0:[] (T/)
Written Records: 1440/1440(max)
Allocated Records: 1472/1472(max)
Blocking Factor: 0 (records)
Attribute Entries:
Variable Data:
Record # 1: 1983-01-01T00:00:00.000000000
Record # 2: 1983-01-01T00:01:00.000000000