These are binary files containing the history of coordinate, velocity,
hardware and ocean loading information for GPS tracking sites.
Record
ID |
Description |
---|---|
C | coordinate, velocity, plate information |
A | antenna type and ARP-MON eccentricity |
R | receiver type |
G/T | geocentric or topocentric offset from reference monument |
O | ocean-loading model parameters |
M | met sensor types and PRP-ARP offset |
ARP = Antenna Reference Point
MON = MONument PRP = Pressure sensor Reference Point |
Hereafter, a single grouping of information comprising one of these
types will be referred to as a record. The information contained
in a record are defined by C style data structures. There are definitions,
and routines for reading and writing these records defined for both C/C++
and Fortran. General information on the record
sturcture, the info common to all record types,
defined
standard size parameters, and the C,
A,
R,
G/T,
O
and M record types is available.
The site information file is formatted to be read as an unformatted
sequential file from (HP) FORTRAN. The structure of
binary FORTRAN input/output (I/O) is:
SIZE<--------INFO------->SIZE
where:
The "INFO" is broken into two general categories in the site information records,
RECORD = <-common-><-----info-------->
or
RECORD = SIZE<--------INFO------->SIZE
Note that the leading "SIZE" integer begins the common data structure,
the trailing "SIZE" integer concludes the type specific data structure.
The structures delineating the common and other information data types,
and other relatined definitions are stored in the sidata.h header
file.
#define DATA_FORMAT ((long)1)
#define FORMAT_99MAR15 ((long)2)
#define EPS_MINUTE ((double)30.0/(double)86000.0)
#define EPS_SECOND ((double)0.5/(double)86000.0)
#define MAX_record 256
#define MAX_altname 40
#define MAX_comment 60
#define MAX_domes 9
#define MAX_frame 7
#define MAX_from 16
#define MAX_fw
16
#define MAX_id
6
#define MAX_key
1
#define MAX_name_m1 16
#define MAX_name 20
#define MAX_plate 4
#define MAX_seq
1
#define MAX_sitename 24
#define MAX_sn
16
#define MAX_to
16
#define STR_altname (MAX_altname+1)
#define STR_comment (MAX_comment+1)
#define STR_domes (MAX_domes+1)
#define STR_frame (MAX_frame+1)
#define STR_from (MAX_from+1)
#define STR_fw
(MAX_fw+1)
#define STR_id
(MAX_id+1)
#define STR_key
(MAX_key+1)
#define STR_name (MAX_name+1)
#define STR_plate (MAX_plate+1)
#define STR_seq
(MAX_seq+1)
#define STR_sitename (MAX_sitename+1)
#define STR_sn
(MAX_sn+1)
#define STR_to
(MAX_to+1)
The "common" structure has the following items:
size | total size in bytes minus leading/trailing 4 byte integers | 4 byte long |
modmjd | modification time high part [MJD] | 4 byte long |
modday | modification time low part [day] | 8 byte double |
type | "type" appears in this structure to fulfill the 8 byte
boundary requirement of HP hardware. To minimize wasted space, "type" has meanings dependent upon the record type: A = corresponding numeric antenna type ID C = no use M = no use O = G/T = additive offsets OLT = no use R = corresponding numeric receiver type ID |
4 byte long |
valmjd | first valid epoch high part [MJD] | 4 byte long |
valday | first valid epoch low part [day] | 8 byte double |
key | record type, i.e. A, C, M, ... | 1 byte char |
id | site ID | 6 byte char |
seq | site point code character | 1 byte char |
Total size | 40 bytes |
struct common_data_info {
long size;
long modmjd;
double modday;
long type;
long valmjd;
double valday;
char key;
char id[MAX_id];
char seq;
};
n | north eccentricty component (meters) | 8 byte double |
e | east eccentricty component (meters) | 8 byte double |
u | up eccentricty component (meters) | 8 byte double |
from | name of starting point of eccentricity | 16 byte char |
to | name of ending point of eccentricity | 16 byte char |
name | antenna ID | 20 byte char |
sn | serial number | 16 byte char |
comment | descriptive comment | 60 byte char |
dummy | dummy variable required to meet 8 byte word boundary | 4 byte char |
size | total size in bytes minus leading/trailing 4 byte integers | 4 byte long |
Total size (antenna only) | 160 bytes |
The eccentricity is a local topocentric vector. The "from" and "to" strings are provided to hold short reminders of the beginning and ending points of the eccentricity. In almost every conceivable case, these should be "from" MON, "to" ARP.
struct antenna {
double n;
double e;
double u;
char from[MAX_from];
char to[MAX_to];
char name[MAX_name];
char sn[MAX_sn];
char comment[MAX_comment];
char dummy[4];
long size;
};
x | ECF X coordinate (meters) | 8 byte double |
y | ECF Y coordinate (meters) | 8 byte double |
z | ECF Z coordinate (meters) | 8 byte double |
xsig | X coordinate sigma (meter) | 8 byte double |
ysig | Y coordinate sigma (meter) | 8 byte double |
zsig | Z coordinate sigma (meter) | 8 byte double |
vx | X velocity component (meter/year) | 8 byte double |
vy | Y velocity component (meter/year) | 8 byte double |
vz | Z velocity component (meter/year) | 8 byte double |
vxsig | X velocity sigma (meter/year) | 8 byte double |
vysig | Y velocity sigma (meter/year) | 8 byte double |
vzsig | Z velocity sigma (meter/year) | 8 byte double |
refmjd | coordinate reference epoch (MJD) | 4 byte long |
refday | coordinate reference epoch (day) | 8 byte double |
frame | coordinate frame ID string | 7 byte char |
domes | IERS DOMES number | 9 byte char |
plate | tectonic plate ID string | 4 byte char |
sitename | political (human recognizable) site name, e.g. albh = "Alberts Head, BC" | 24 byte char |
altname | alternate site name | 40 byte char |
comment | descriptive comment | 60 byte char |
size | total size in bytes minus leading/trailing 4 byte integers | 4 byte long |
Total size (coordinates only) | 256 bytes |
The coordinates are in the Earth-centered, fixed (ECF) frame which should be identified using the "frame" string, e.g. "ITRF97" or "IGS97". The current list of tectonic plates recognized by this software is held in the xsites program header file, plate.h.
struct coordinates {
double x;
double y;
double z;
double xsig;
double ysig;
double zsig;
double vx;
double vy;
double vz;
double vxsig;
double vysig;
double vzsig;
double refday;
long refmjd;
char frame[MAX_frame];
char domes[MAX_domes];
char plate[MAX_plate];
char sitename[MAX_sitename];
char altname[MAX_altname];
char comment[MAX_comment];
long size;
};
pru | vertical component of the PRP - ARP vector (meter) | 8 byte double |
pr | pressure sensor manufacturer/model name | 20 byte char |
prsn | pressure sensor serial number | 16 byte char |
rh | relative humidity sensor manufacturer/model name | 20 byte char |
rhsn | relative humidity sensor serial number | 16 byte char |
tm | air temperature sensor manufacturer/model name | 20 byte char |
tmsn | air temperature sensor serial number | 16 byte char |
comment | descriptive comment | 60 byte char |
dummy | dummy variable required to meet 8 byte word boundary | 4 bytechar |
size | total size in bytes minus leading/trailing 4 byte integers | 4byte long |
Total size (met only) | 184 bytes |
struct met {
double pru;
char pr[MAX_name];
char prsn[MAX_sn];
char rh[MAX_name];
char rhsn[MAX_sn];
char tm[MAX_name];
char tmsn[MAX_sn];
char comment[MAX_comment];
char dummy[4];
long size;
};
offset | GPS monument - alternate monument vector (meter) | three 8 byte doubles |
from | name of starting point monument | 16 byte char |
to | name of ending point monument | 16 byte char |
comment | descriptive comment | 60 byte char |
size | total size in bytes minus leading/trailing 4 byte integers | 4 byte long |
Total size (offset only) | 120 bytes |
The offset structure can contain a local topocentric or ECF vector offset. Given the evolution of the global geodetic community, the use of the offset structure should be avoided.
struct offset {
double offset[3];
char from[MAX_from];
char to[MAX_to];
char comment[MAX_comment];
long size;
};
m2amp | 12.42 hr principal lunar semidiurnal tidal amplitude (meter) | 8 byte double |
m2phs | 12.42 hr principal lunar semidiurnal tidal phase (degree) | 8 byte double |
s2amp | 12.00 hr principal solar semidiurnal tidal amplitude (meter) | 8 byte double |
s2phs | 12.00 hr principal solar semidiurnal tidal phase (degree) | 8 byte double |
n2amp | 12.66 hr major lunar elliptic semidiurnal tidal amplitude (meter) | 8 byte double |
n2phs | 12.66 hr major lunar elliptic semidiurnal tidal phase (degree) | 8 byte double |
k2amp | 11.97 hr luni-solar declinational semidiurnal tidal amplitude (meter) | 8 byte double |
k2phs | 11.97 hr luni-solar declinational semidiurnal tidal phase (degree) | 8 byte double |
o1amp | 25.82 hr principal lunar diurnal tidal amplitude (meter) | 8 byte double |
o1phs | 25.82 hr principal lunar diurnal tidal phase (degree) | 8 byte double |
k1amp | 23.93 hr luni-solar declinational diurnal tidal amplitude (meter) | 8 byte double |
k1phs | 23.93 hr luni-solar declinational diurnal tidal phase (degree) | 8 byte double |
p1amp | 24.07 hr principal solar diurnal tidal amplitude (meter) | 8 byte double |
p1phs | 24.07 hr principal solar diurnal tidal phase (degree) | 8 byte double |
q1amp | 26.87 hr major lunar elliptic diurnal tidal amplitude (meter) | 8 byte double |
q1phs | 26.87 hr major lunar elliptic diurnal tidal phase (degree) | 8 byte double |
mfamp | 13.66 day lunar fortnightly tidal amplitude (meter) | 8 byte double |
mfphs | 13.66 day lunar fortnightly tidal phase (degree) | 8 byte double |
mmamp | 27.55 day lunar monthly tidal amplitude (meter) | 8 byte double |
mmphs | 27.55 day lunar monthly tidal phase (degree) | 8 byte double |
ssaamp | 182.62 day solar semi-annual tidal amplitude (meter) | 8 byte double |
ssaphs | 182.62 day solar semi-annual tidal phase (degree) | 8 byte double |
comment | descriptive comment | 60 byte char |
size | total size in bytes minus leading/trailing 4 byte integer | 4 byte long |
Total size (oceanloading only) | 240 bytes |
Each pair of tidal harmonic variables is named with its Darwinian designation, e.g. m2 = M2 = principal lunar semidiurnal tide. The phase is relative to the driving potential, i.e. the Moon or Sun.
struct oceanloading {
double m2amp;
double m2phs;
double s2amp;
double s2phs;
double n2amp;
double n2phs;
double k2amp;
double k2phs;
double o1amp;
double o1phs;
double k1amp;
double k1phs;
double p1amp;
double p1phs;
double q1amp;
double q1phs;
double mfamp;
double mfphs;
double mmamp;
double mmphs;
double ssaamp;
double ssaphs;
char comment[MAX_comment];
long size;
};
name | receiver ID | 20 byte char |
sn | serial number | 16 byte char |
fw | firmware ID | 16 byte char |
comment | descriptive comment | 60 byte char |
size | total size in bytes minus leading/trailing 4 byte integers | 4 byte long |
Total size (receiver only) | 120 bytes |
struct receiver {
char name[MAX_name];
char sn[MAX_sn];
char fw[MAX_fw];
char comment[MAX_comment];
long size;
};